** 코드
** 실행영상
# 기본적인 몇가지 함수는 gym 코드 참고하였다.
# gym을 이용하지 않고 게임진행(episode_generate) 코드를 짜기 위해서 새롭게 코드를 작성하였다.
이에 필요한 딜러턴에서 딜러카드 score계산 함수,
학습에 필요한 pair(s,a) 중복 확인 함수,
policy_improvement함수를 만들었다.
# 중요하고 어려웠던 점은 dictionaries를 초기화하고 다루는 것이였다.
이전 글에서 공부하였던 것을 연습을 통해서 나에게 필요한 방법으로 발전시켰다.
# gym의 코드를 보면서 매우 간결한 코드스타일도 보며 공부하고 return과 break의 쓸모를 확실히 알 수 있었다.
return 간결한 코드
return 1 in hand and sum(hand) + 10 <= 21 # True or False 반환
return 0 if is_bust(hand) else sum_hand(hand) # if를 만족하면 0을 반환 그렇지 않으면 else 아래 반환
return과 break
break는 가장 가까운 반복문 하나를 탈출
return은 함수자체를 탈출
while ~ : ~가 True인 동안 반복
while not ~ : ~가 False일 때 반복, True가 되면 멈춤
if not ~ : ~가 False라면 수행
# 이전에 잠깐 들었던 자료구조 수업이 큰 도움이 되었다.
[코드 구조 구상 메모]
추가피드백)
학습 횟수를 에피소드를 기준으로 하여 많이 학습시키기보다 모든 state에 대한 방문횟수를 100이상 혹은 200이상처럼 학습시키는 것이 더 정확한 값을 얻을 수 있다.
'기계공학부 시절의 기록 > 강화학습일기' 카테고리의 다른 글
RL 개념 흐름 정리 (0) | 2021.11.11 |
---|---|
[MC BlackJack 결과 시각화] 학습결과 그래프로 나타내기 (0) | 2021.11.10 |
[MC-blackjack]MC에서 Q-table 어떻게 만들어? (2) Dictionary 자료형 (0) | 2021.11.03 |
[MC-블랙잭] Monte Carlo에서 Q-table 어떻게 만들어? (1) 튜플 (5) | 2021.11.02 |
BlackJack Example. Monte Carlo (0) | 2021.10.23 |
댓글