https://medium.com/@ashish_fagna/understanding-openai-gym-25c79c06eccb
Understanding OpenAI Gym
OpenAI is a non-profit research company that is focussed on building out AI in a way that is good for everybody. It was founded by Elon…
medium.com
https://www.gymlibrary.dev/api/core/#gym.Env.action_space
Core - Gym Documentation
Previous Basic Usage
www.gymlibrary.dev
본 포스팅은 위 홈페이지를 참조하여 작성하였습니다.
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()
obersvation, reward, done, info = env.step(action)
if done :
print("Episode finished after {} timesteps".format(t+1))
break
여기저기서 많으 굴러다니는 Cartpole 코드입니다.
코드 분석을 좀 해보자면...
import gym
우선 gym 라이브러리를 사용하기 위해서
위 코드가 필요하다.
env = gym.make('CartPole-v0')
위 코드는 환경을 만드는 코드이다.
gym 클래쓰 안에 있는 make라는 함수 안에 문자열을 넣으면 해당하는 환경을 반환한다.
env.reset()
환경을 초기화 해주는 역할을 한다. 초기 측정 값을 반환한다.
for _ in range(1000):
이 반복문은 위에서 선언한 환경에 대해서 1000번 반복한다는 뜻이다.
env.render()
이 함수는 윈도우에 현재 상태를 출력해주는 역할을 한다. 이 함수를 loop 안에 작성하면, 매 스텝마다 갱신되는 윈도우가 렌더링이 된다.
action = env.action_space.sample()
action_space : 유효한 액션의 형식을 제공한다. Space 데이터타입을 갖는다. 예를 들어서 action space의 타입이 Discrete 이고 Discrete(2)를 제공한다면, 이것은 0과 1인 총 두 개의 discrete 한 액션이 존재함을 의미한다.
sample 함수는 space로부터 샘플링된 action을 반환한다.
즉 정리하자면... discrete한 데이터 타입의 샘플링된 action 데이터가 반환된다는 뜻이다.
obersvation, reward, done, info = env.step(action)
Step 함수는 대부분의 환경 로직을 포함한다. action을 입력으로 넣어주면 action이 적용되고 환경의 상태를 계산한다. 그리고 4개의 tuple(observation, reward, done, info)을 반환한다.
일단 환경의 새로운 상태가 계산되면, 우리는 done 변수가 설정되었는지 안되었는지에 따라서 종료되었는지 알 수 있다.
if done :
print("Episode finished after {} timesteps".format(t+1))
break
위 문구는 done이 true가 될 때마다 프린트 해주는 문구이다.
이상 cartpole의 기본 함수에 대해서 알아보았습니다.
다음 시간부터는 강화학습이 적용된 코드를 분석하는 시간을 갖도록 하겠습니다.