1차시에서는 시간이 2주밖에 안되고 기존 스터디원과 합을 맞추는 과정이라 생각했기에 이전에 해결했던 문제로 진행합니다.
첫번째 문제는 Cartpole입니다. 좌우로 움직일 수 있는 카트가 있고, 고정되어 있는 막대를 떨어뜨리지 않고 균형을 잘 잡을 수 있어야 합니다. Cartpole의 environment는 gymnasium 라이브러리를 이용합니다. 해당 라이브러리의 자세한 설명은 해당 링크의 Description을 읽어보세요.
강화학습 모델이 게임하지 않고, 사용자 입력을 받아 게임을 진행합니다. 1차시이므로 코드를 제공합니다.
"""
CartPole-v1 게임을 플레이하는 코드입니다.
키보드의 k와 l을 눌러서 왼쪽과 오른쪽으로 이동할 수 있습니다.
"""
import gymnasium as gym
import time
action = 0
##############################################
# 키보드 입력을 받아 action을 결정하는 코드
from pynput import keyboard # pip install pynput
def left():
global action
action = 0
def right():
global action
action = 1
listener = keyboard.GlobalHotKeys({
'k': left, # k는 왼쪽으로 이동
'l': right # l은 오른쪽으로 이동
})
listener.start()
##############################################
env = gym.make('CartPole-v1', render_mode="human")
env.reset()
print("READY!")
time.sleep(2)
score = 0
while True:
# env.step 진행
_, _, done, _, _ = env.step(action)
if done:
print("GAME OVER! score: {}".format(score))
time.sleep(1)
break
score += 1
time.sleep(0.1)
cartpole을 학습할 수 있는 코드를 만듭니다.
학습을 마치면 인퍼런스에 사용할 모델을 세이브 합니다.
세이브 한 모델을 불러와서 잘 작동하는지 확인해봅니다.