[RL] 간단한 OpenAI Gym 튜토리얼 (CartPole)

2023. 8. 28. 21:48·🤖 ai logbook
728x90
반응형

OpenAI Gym

OpenAI에 의해 개발된, 강화학습 문제를 실험하고 테스트할 수 있게 해주는 환경을 제공하는 툴킷

 

 

필요 라이브러리 설치

  • gym: OpenAI에서 제공하는 강화 학습 환경 툴킷
  • python-opengl: OpenAI Gym의 일부 환경에서 필요한 3D 렌더링 라이브러리
  • xvfb: X Virtual Framebuffer. GUI를 가상 디스플레이에 렌더링하는 데 사용
!pip install gym
!apt-get install python-opengl -y
!apt install xvfb -y

 

 

 

환경 실행

CartPole-v1 환경을 실행하고, 매 스텝마다 랜덤한 행동을 선택하여 환경에 적용하기

Cart Pole

https://www.gymlibrary.dev/environments/classic_control/cart_pole/

import gym

env = gym.make("CartPole-v1") 
obs = env.reset()
for _ in range(1000):
    env.render()
    action = env.action_space.sample()  # 랜덤한 액션을 선택
    obs, reward, done, info = env.step(action)
    if done:
        obs = env.reset()
env.close()

 

obs = env.reset()

Num Observation Min Max
0 Cart Position -4.8 4.8
1 Cart Velocity -Inf Inf
2 Pole Angle ~ -0.418 rad (-24°) ~ 0.418 rad (24°)
3 Pole Angular Velocity -Inf Inf

 

action = env.action_space.sample()

Num Action
0 Push cart to the left
1 Push cart to the right

 

obs, reward, done, info = env.step(action)

obs : 다음 관측값

reward : 보상

done : episode가 종료되었는지 나타내는 boolean 값. (종료되었다면 True)

  1. Pole Angle이 ±12°를 초과하는 경우 (막대기가 너무 많이 기울어짐)
  2. Cart Position이 ±2.4를 초과하는 경우 (카트가 디스플레이 밖으로 나가게 되는 경우)
  3. Episode의 길이가 500을 초과하는 경우 (너무 오랜 시간 동안 수행하지 않도록 하는 안전장치)

info : 추가 정보

 

 

환경 시각화

Google Colab에서는 GUI를 직접 렌더링할 수 없기 때문에, pyvirtualdisplay와 piglet를 설치하여 가상 디스플레이를 설정해야 한다.

!pip install pyvirtualdisplay
!pip install piglet

from pyvirtualdisplay import Display
display = Display(visible=0, size=(1400, 900))
display.start()
import gym
from gym.wrappers.record_video import RecordVideo
import glob
import io
import base64
from IPython.display import HTML
from IPython import display as ipythondisplay

def show_video():
    mp4list = glob.glob('video/*.mp4')
    if len(mp4list) > 0:
        mp4 = mp4list[0]
        video = io.open(mp4, 'r+b').read()
        encoded = base64.b64encode(video)
        ipythondisplay.display(HTML(data='''<video alt="test" autoplay 
                    loop controls style="height: 400px;">
                    <source src="data:video/mp4;base64,{0}" type="video/mp4" />
                 </video>'''.format(encoded.decode('ascii'))))
    else: 
        print("Could not find video")

def wrap_env(env):
    env=RecordVideo(env, './video/',  episode_trigger = lambda episode_number: True)
    return env

env = wrap_env(gym.make("CartPole-v1"))

obs = env.reset()
for _ in range(1000):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)
    if done:
        break
env.close()
show_video()

728x90
반응형

'🤖 ai logbook' 카테고리의 다른 글

[paper] DeepSeek-R1 정리 및 Ollama를 이용해서 DeepSeek-R1 모델 간단하게 사용해보기  (0) 2025.02.10
[RL] MDP - Bellman equation  (0) 2024.06.25
[RL] 마르코프 결정 과정 (Markov decision processes, MDP)  (0) 2024.06.23
[RL] 강화 학습(Reinforcement Learning)  (0) 2024.06.23
[RL] Deep Deterministic Policy Gradient (DDPG)  (0) 2023.08.21
[paper] ChatDev - 소프트웨어 개발을 위한 통신 에이전트(Communicative Agents for Software Development)  (0) 2023.08.16
[RL] Actor-Critic  (0) 2023.08.10
[RL] DQN(Deep Q-Network) - 작성중  (0) 2023.08.08
'🤖 ai logbook' 카테고리의 다른 글
  • [RL] 마르코프 결정 과정 (Markov decision processes, MDP)
  • [RL] 강화 학습(Reinforcement Learning)
  • [RL] Deep Deterministic Policy Gradient (DDPG)
  • [paper] ChatDev - 소프트웨어 개발을 위한 통신 에이전트(Communicative Agents for Software Development)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (207) N
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (57) N
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    datascience
    법학과
    Coursera
    certificate
    deeplearning
    Python
    방통대
    ADsP
    빅데이터분석기사
    인공지능 입문
    자격증
    머신러닝
    데이터분석준전문가
    IBM
    민법
    기본권의기초이론
    데이터사이언스 입문
    근로기준법
    형법
    온라인 강의 추천
  • hELLO· Designed By정상우.v4.10.3
이소야
[RL] 간단한 OpenAI Gym 튜토리얼 (CartPole)
상단으로

티스토리툴바