ML&DL/Sung Kim's RL Lecture

LEC 02. Playing OpenAI GYM Games

rrojin 2021. 1. 6. 20:04

LEC 02

'Frozen Lake' 

OpenAI GYM 프레임워크를 사용하면 환경(게임)을 사용할 수 있다.

Frozen Lake : {F : Frozen Lake H : 구멍 G : Goal} 로 이루어진 맵 위를 움직이는 게임

Agent 의 action(상하좌우 이동)에 따라서 state(좌표), reward(Goal 도착시, 보상)를 반환해준다.


LAB 02

- Windows 10 'Frozen Lake' Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import tensorflow as tf
import gym
from gym.envs.registration import register
import msvcrt
import readchar
import colorama as cr
 
cr.init(autoreset=True)
 
#MACROS
LEFT = 0
DOWN = 1
RIGHT = 2
UP = 3
 
arrow_keys = {
    '\x1b[A' : UP,
    '\x1b[B' : DOWN,
    '\x1b[C' : RIGHT,
    '\x1b[D' : LEFT
}
 
env_dict = gym.envs.registry.env_specs.copy()
 
for env in env_dict:
    if'FrozenLake-v3' in env:
        del gym.envs.registry.env_specs[env]
        
register(
    id='FrozenLake-v3',
    entry_point="gym.envs.toy_text:FrozenLakeEnv",
    kwargs={'map_name':'4x4','is_slippery':False}
)
 
env = gym.make("FrozenLake-v3")
env.render() # 환경을 화면으로 출력
 
while True:
    key = readchar.readkey()  # 키보드 입력 받기
 
    if key not in arrow_keys.keys():
        print("Game aborted!")
        break
 
    action = arrow_keys[key] # 에이전트의 움직임
    state, reward, done, info = env.step(action) # 움직임에 따른 return값
    env.render() # 화면 출력
    print("State:", state, "Action", action, "Reward:", reward, "Info:", info)
 
    if done: #도착 시 게임 종료
        print("Finished with reward", reward)
        break
cs

- WindowS 10 기준 문제 해결

 

1) [41m,[0m과 같은 색상값이 같이 표기되어 map 첫 줄이 이상하게 나옴.

해결 : 아래 코드 추가

 

import colorama as cr

cr.init(autoreset=True)

 

(관련 문제)

stackoverflow.com/questions/48605843/getting-a-strange-output-when-using-openai-gym-render

 

Getting a strange output when using openAI gym render

I've written a simple python code to simulate 'FrozenLake-v0': import gym env = gym.make('FrozenLake-v0') env.reset() for _ in range(1000): env.render() env.step(env.action_space.sample(...

stackoverflow.com


2) 기존 코드 사용하면 키보드 입력 안받아짐

해결 : readchar 설치

 

pip install readchar #설치

key = readchar.readkey()


3) Error 'Cannot re-register id: FrozenLake-v3 '

해결 : 아래 코드 추가

 

env_dict = gym.envs.registry.env_specs.copy()

 

for env in env_dict:

    if 'FrozenLake-v3' in env:

        del gym.envs.registry.env_specs[env]

 

(관련 문제)

stackoverflow.com/questions/61281918/custom-environments-for-gym-error-cannot-re-register-id

 

Custom environments for Gym Error: Cannot re-register id

I want to create my own Gym environment. I have followed the steps explained in here: https://github.com/openai/gym/blob/master/docs/creating-environments.md. Based on their suggestion, I created the

stackoverflow.com

Reference:

[1] http://hunkim.github.io/ml/

[2] Lecture 2

[3] Lab2

'ML&DL > Sung Kim's RL Lecture' 카테고리의 다른 글

LEC 06. Q-Network  (0) 2021.01.08
LEC 05. Q-learning on Nondeterministic Worlds!  (0) 2021.01.08
LEC 04. Q-learning (table)  (0) 2021.01.07
LEC 03. Dummy Q-learning (table)  (0) 2021.01.07
Lec 01. RL Introduction  (0) 2021.01.06