Reinforcement Learning with gymnasium
gymnasium
import gymnasium as gym
1. 다양한 실습 환경
* cartpole 환경
- continuous state / discret env / reward (넘어지지않으면 1점, cart의 위치가 벗어났을때, 막대의 각도가 넘어갈때 끝)
* frozen lake
- 구멍에 빠지지않고, goal에 도달하기
- discrete state (16개의 공간) / discrete action (상하좌우이동) / slipperiness (환경을 stocastic하게 만들수있음)
* pendulum
- 막대기를 돌려서 수직으로 세우는 것이 목표
- continuous state (세워진각도, 가속도 값 코사인값) / continuous action (회전력의 힘) / reward (세워지면 +1, 기운 각도가 세운것에멀어질수록 -)
* nujoco : ant
- 8개의 관절에 힘을줘서 앞으로 잘 가도록 하게 만드는 것이 목표
- continuous state / continuous action
2. 기본적인 코드
- 환경을 준비하라 : 환경을 준비하고 초기 상태로 리셋 (make, reset)
- policy에서 action을 선택해서(action_space.sample) environment로 보냄(step(action) : step 함수가 action을 받아서 결과를 output) => loop
- 결과 출력 env.render 이후 env.close() : 환경 종료
3. 개인적인 환경을 만들고 싶을때 사용할 class
- print(env.action_space)
- print(env.observation_space) (state)
- step() : action을 받아서 5개의 요소를 출력으로 뱉는다.
- fundamental space : box(=continuous) / discrete / multidiscrete / ..
- wrapper : gym을 만들고 wrapper로 감싸면 super class를 상속받아서 환경의 일부를 수정가능 (예를들어, 원래는 step 마다 0이었는데, step마다 -1이 되도록 변경 가능)