Esempio n. 1
0
    IS_LOAD, IS_SAVE, SAVE_INTERVAL = False, False, 2
    SAVE_FULL_PATH = __file__

    # 3. 실험 환경 관련 설정
    GYM_ENV = 'Swimmer-v2'
    RENDER = False
    LOG_INTERVAL = 1
    EPISODES = 30000

    # 4. 알고리즘 설정
    USE_INTRINSIC = False

    #####################
    # 객체 구성
    #####################
    viz = Drawer(reset=VISDOM_RESET, env=VIZ_ENV_NAME)
    checkpoint = Checkpoint(VERSION, IS_SAVE, SAVE_INTERVAL)

    # Agent 생성
    env = gym.make(GYM_ENV)
    state_size = env.observation_space.shape[0]
    action_size = env.action_space.shape[0]
    action_range = (min(env.action_space.low), max(env.action_space.high))
    # 정규화했더니 성능이 안 좋다
    # TODO: DDPG는 deterministic 이라서 state가 달라지면 안되나?
    # env = NormalizedMujocoEnv(env, state_size, clip=5)

    # NM = 예측한 다음 상태와 실제 다음 상태의 오차가 클수록 보상 높음
    # LPM = 각 '지역'별로 나뉜 상태들이 일정 시간에 따라 오차가 줄어들면 보상 높음
    # SM = NM에서 쓰인 예측을 또 다시 예측하는 메타망을 사용해서,
    #      메타망은 오차 작은데 그냥 예측망이 오차 높으면 보상 높음
Esempio n. 2
0
    if t == 400:
        seokyong_reward += 100
    reward += seokyong_reward
    return next_state, reward, seokyong_reward, done, _


if __name__ == "__main__":
    VERSION = 1
    RENDER = True
    LOG_INTERVAL = 1
    IS_LOAD, IS_SAVE, SAVE_INTERVAL = False, True, 100
    EPISODES = 30000

    device = u.set_device(force_cpu=True)
    viz_env_name = os.path.basename(os.path.realpath(__file__))
    viz = Drawer(reset=True, env=viz_env_name)

    metadata = TrainerMetadata()
    checkpoint_inst = Checkpoint(VERSION, IS_SAVE, SAVE_INTERVAL)
    """
    상태 공간 4개, 범위 -∞ < s < ∞
    행동 공간 1개, 이산값 0 or 1
    """
    env = gym.make('CartPole-v1')
    state_size = env.observation_space.shape[0]
    action_size = env.action_space.n

    agent = DQNAgent(state_size, action_size)

    # 최대 에피소드 수만큼 돌린다
    for episode in range(metadata.current_epoch, EPISODES):