2. OpenAI gym 환경 기본 요소

han811·2020년 12월 27일
0

RL_Implementation

목록 보기
2/3
post-thumbnail

OpenAI gym 환경 기본 요소

import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break
env.close()
  1. gym.make(~)를 통해 ~에 입력한 해당 environment 객체가 생성됩니다.

  2. 처음 객체를 생성한 후에는 반드시 env.reset()과 같이 객체를 초기화 해주어야 합니다.
    이는 학습시에도 environment를 초기화 해야 할 시에 해주면 environment의 상태가 초기상태가 됩니다.
    이때 reset은 observation에 해당하는 강화학습의 input값을 반환합니다.

  3. env.render()는 environment의 상황을 이미지로 띄워주는 함수입니다.
    매 step 마다 불러주면 마치 영상처럼 environment가 변화하는 것을 볼 수 있습니다.

  4. env.action_space는 gym의 space클래스 중 Discrete라는 클래스의 객체를 불러옵니다.
    해당 객체를 통해 action의 범위, 개수 및 해당 범위에서 랜덤 샘플을 뽑을 수 있습니다.
    sample() 메서드를 통해 action의 범주내에서 랜덤하게 선택을 할 수 있고,
    n 속성을 통해 action의 개수를 알 수 있고,
    contain(~) 메서드를 통해 ~가 action의 범주내에 속하는지 알 수 있습니다.

  5. env.observation_space는 gym의 space클래스 중 Box라는 클래스의 객체를 불러옵니다.
    해당 객체를 통해 observation의 차원 및 최대와 최솟값을 알 수 있습니다.
    high 속성을 통해 각 observation의 최댓값을 알 수 있고,
    low 속성을 통해 각 observation의 최솟값을 알 수 있으며 해당 배열의 차원으로 observation의 차원 또한 알 수 있습니다. (numpy의 array로 반환됩니다.)

  6. env.close()를 통해 객체내의 모든 상태들을 소멸시킵니다.

reference
openai gym homepage : https://gym.openai.com/

profile
han811

0개의 댓글