import datetime
from typing import NamedTuple

from PPOConfig import PPOConfig


class GAILConfig(NamedTuple):
    discrimNNShape: list = [128, 64]
    discrimLR: float = 1e-3
    discrimTrainEpochs: int = 8
    discrimSaveDir: str = "GAIL-Model/" + datetime.datetime.now().strftime("%m%d-%H%M") + "/"

    ppoConfig: PPOConfig = PPOConfig(
        NNShape=[128, 64],
        actorLR=2e-3,
        criticLR=2e-3,
        gamma=0.99,
        lmbda=0.95,
        clipRange=0.20,
        entropyWeight=1e-2,
        trainEpochs=8,
        saveDir="GAIL-Model/" + datetime.datetime.now().strftime("%m%d-%H%M") + "/",
        loadModelDir=None,
    )