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()
gym.make(~)를 통해 ~에 입력한 해당 environment 객체가 생성됩니다.
처음 객체를 생성한 후에는 반드시 env.reset()과 같이 객체를 초기화 해주어야 합니다.
이는 학습시에도 environment를 초기화 해야 할 시에 해주면 environment의 상태가 초기상태가 됩니다.
이때 reset은 observation에 해당하는 강화학습의 input값을 반환합니다.
env.render()는 environment의 상황을 이미지로 띄워주는 함수입니다.
매 step 마다 불러주면 마치 영상처럼 environment가 변화하는 것을 볼 수 있습니다.
env.action_space는 gym의 space클래스 중 Discrete라는 클래스의 객체를 불러옵니다.
해당 객체를 통해 action의 범위, 개수 및 해당 범위에서 랜덤 샘플을 뽑을 수 있습니다.
sample() 메서드를 통해 action의 범주내에서 랜덤하게 선택을 할 수 있고,
n 속성을 통해 action의 개수를 알 수 있고,
contain(~) 메서드를 통해 ~가 action의 범주내에 속하는지 알 수 있습니다.
env.observation_space는 gym의 space클래스 중 Box라는 클래스의 객체를 불러옵니다.
해당 객체를 통해 observation의 차원 및 최대와 최솟값을 알 수 있습니다.
high 속성을 통해 각 observation의 최댓값을 알 수 있고,
low 속성을 통해 각 observation의 최솟값을 알 수 있으며 해당 배열의 차원으로 observation의 차원 또한 알 수 있습니다. (numpy의 array로 반환됩니다.)
env.close()를 통해 객체내의 모든 상태들을 소멸시킵니다.
reference
openai gym homepage : https://gym.openai.com/