This software is released under the MIT License, see LICENSE.
強化学習による迷路探索.デフォルトでは10×15マスの迷路を探索する.
- 赤い四角がエージェントであり,白いマスが通れる経路,青いマスが通れるが報酬がマイナスとなる経路(ペナルティ),黄色いマスがゴール.
- エージェントは左上マスからスタートし,右下黄色マスのゴールを目指し経路を探索する.
- ゴールに到達すると報酬が与えられる.エージェントはなるべく報酬がマイナスとなる経路を避けつつ,全体として報酬が最大となるような経路を探索する.
- Q-Learningによる学習.学習率は0.2,割引率は0.9とした.
- 行動選択はε-greedy法.
- main.py
- メインコード.
- map_display.py
- pygameによる可視化.
- QLearning.py
- QLearningによる行動学習
- data/map.csv
- 各セルの報酬情報.
- numpy
- matplotlib
- pygame
- 300回ゴールしたら学習を終了,最適方策を可視化したものをpolicy.jpgという画像名で保存.各マスの矢印は最適な行動を示し,各セルのQ値の大きさによってマスの色が変わる(Q値が大きいほど赤色になる.Q値がゼロの場合は変化なし).
- --testの引数をつけることによりGUI無しで動作確認可能(主にTravis-CI向け).
最終的に得られた方策.
Q値の変化1試行毎のQ値の最大値をプロットした.一回のマスの移動を1試行とする.下図でQ値が跳ね上がっている部分はゴールに到達した場合であり,試行回数が増えるにつれてQ値の値が大きくなり,ゴールに到達する頻度が増えていくことがわかる.
動いている様子
data/map.csvをいじれば何×何でも探索可能.ただマスが増えると収束させるために試行回数をより増やす必要がある.