한 에피소드가 끝나는 조건입니다. 특정 시간이 지나거나 비콘에 다다랐을 경우 에피소드를 종료합니다. 에피소드가 특정 시간이 지나서 종료된 것(global_step == 200)과 비콘에 다다랐을 경우(distance < 0.3)을 정의하고 그에 맞는 Reward를 배정합니다. 스텝이 진행되면서 나온 현재 상태, 다음 상태, Reward, 행동 값을 저장합니다. choose_action에 의해 나온 행동 값은 0~3을 가지지만 학습에 필요한 형태인 one-hot vector형태로 바꾸어 action_list에 쌓습니다.
if done: A2C.learn(states, next_states, rewards, actions_list) saver.save(sess, "4wayBeacon_a2c/tmp/model.ckpt")print(sum(rewards), episodes)open_file_and_save('4wayBeacon_a2c/reward.csv', [sum(rewards)])
에피소드가 종료되을 경우 정책 네트워크와 가치 네트워크를 학습하고 그 모델을 경로에 저장합니다. 그리고 에피소드 별로 Reward를 print합니다. 그리고 csv파일 얻은 Reward를 저장합니다.
이 학습을 통해 에피소드별 reward를 그래프화 하여 보면 다음과 같습니다.
결과는 4WayBeacon PPO와 같이 가장 낮은 점수는 -20점입니다. 비콘과 마린의 위치는 무작위로 배치되기 때문에 0점은 나올 수가 없습니다. 평균적으로 -1.5점 정도가 나오며 충분히 의미 있는 결과라고 볼 수 있습니다.