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에서 쓰인 예측을 또 다시 예측하는 메타망을 사용해서, # 메타망은 오차 작은데 그냥 예측망이 오차 높으면 보상 높음
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):