제출 기한 : ~ 10월 6일 11시59분 @ecampus
제출 형식 : 자유
Gym Environment 의 Taxi-v3를 이용하여 policy iteration 구현 :
- Description : episode 가 시작 하면 택시는 랜덤한 위치에서 시작하고 랜덤한 location(위치, R,G,B,Y)에서 시작한다. 택시 드라이버는 승객의 위치로 가서 승객을 태우고 승객의 목적지로 간다. 여기서 목적지는 승객이 출발하는 위치를 제외한 나머지 위치 중 하나이다. 승객이 목적지에서 내리면 에피소드는 끝난다.
- Observation : 500개의 이산적인 states들이 있는데 25개의 taxi 위치, 승객의 위치(택시 안에 있는것도 포함) 5개 그리고 4개의 목적지를 포함해 총 500개의 state들이 있다.
- Passenger locations:
- 0: R(ed)
- 1: G(reen)
- 2: Y(ellow)
- 3: B(lue)
- 4: in taxi
- Destinations:
- 0: R(ed)
- 1: G(reen)
- 2: Y(ellow)
- 3: B(lue)
- Actions:
There are 6 discrete deterministic actions:
- 0: move south
- 1: move north
- 2: move east
- 3: move west
- 4: pickup passenger
- 5: drop off passenger
- Rewards:
There is a default per-step reward of -1,
except for delivering the passenger, which is +20,
or executing "pickup" and "drop-off" actions illegally, which is -10.
- Rendering:
- blue: passenger
- magenta: destination
- yellow: empty taxi
- green: full taxi
- other letters (R, G, Y and B): locations for passengers and destinations
- state space is represented by:
(taxi_row, taxi_col, passenger_location, destination)
-
Open AI Gym 의 Taxi-v3 Environment 에서 다음의 조건에 따라 Policy Iteration Class를 구현 하시오.
- Policy Iteration Class 의 생성자 def init(self, env): 에서 다음의 instance parameter 를 초기화한다
- env
- policy
- value
- policy_evalution 함수를 구현하시오
- 다음의 input parameter를 포함한다
- env
- iter_num
- discount_factor
- policy_improvement 함수를 구현하시오
- print_value 함수를 구현하시오
- 현재상태의 value 를 출력
- get_policy(self, state), get_value(self, state) 함수를 구현하시오
- 필요한 함수가 있으면 자유롭게 더 구현 해도됨
- 구현한 코드와 주석을 첨부. 주석으로 부족할 시 설명도 첨부
-
1에서 구현한 Policy Iteration Class 를 이용하여 Policy Iteration을 통해 policy를 적절하게 학습시키고 view_policy_animation 함수를 이용하여 검증하시오
- discount factor = 0.9~0.99 적용
-
1에서 구현한 Policy Iteration Class 를 이용하여 Policy Evalution 10번 Policiy Improvement 1번을 반복하는것과 Policy Evalution 1번 Policy Improvement 1번을 반복하는것이 같은 값으로 수렴하고 같은 정책으로 수렴하는지 비교 하시오.
- 비교하는 함수를 따로 구현 할 필요는 없고 각 출력 결과를 비교