전 방법으로 학습되지 않아, expirence replay를 끼워 넣었다. 한 state, action 세트를 학습하면 다른 케이스를 잘 학습하지 못했다. 대차가 뒤쪽에 들어간 경우 문제를 풀지 못해, 매 reset 시점 typeA 대차를 뒤쪽에 있을 확률을 키워 학습했지만 잘 안되었다. batch로 한 번에 여러 케이스를 학습해야 잘 되었다.
역시 누군가 뚫은 길을 가는게 쉽다. experience repaly로 한번에 1,000개씩 학습 시키면 q-table을 네트웍으로 잘 근사한다. update를 할 때, 해당 target만 부분적으로 업데이트 해야 한다. “파이썬과 케라스로 배우는 강화학습” 234페이지에 잘 나와있다.
각 케이스를 보면
episode 71을 보면 typeA 대차가 구석에 처박혀 있다. 약간 삽질 후 4턴만에 빼내었다. 만족스럽다.
episode 72는 바로 해결했다. 쉬우니까.
episode 87을 풀지 못했다. 전의 경우와 같이 getX3만 반복하다 끝냈다.
episode 814는 typeA가 구석에 박혀있다. 몇 번 삽질 후 빼내는데 성공했다.
episode 625는 typeA가 X1/Y1 구석에 박혀있다. 역시 몇 번 삽질 후 빼냈다.
episode 18은 앞쪽에 대차를 빼면 뒤에 있는 대차가 앞으로 오기 때문에, 문제를 해결할 수 없다. 얘는 가까운 A를 call하고 공간을 확보한 뒤, put으로 넣어주려 했다. 괜찮은 전략이다. 종료 조건을 추가해 줘야한다.
episode 31은 X3에서 먼저 대차를 call했는데, 앞이 막혀있어 X1에서 대차를 call 했다. X1/Y2가 비어 있음을 확인하고, X3/Y3 대차를 밀어 넣었다. 바보가 아니었네.
experience replay를 적용하기 전에 꼬박 3일 돌렸는데 잘 안되었다. 이번에는 1시간만에(100,000회) 문제를 해결했다. 와우!