マインスイーパーをゴニョゴニョするプロジェクト。
自作したマインスイーパーに対して機械学習を行い、解かせるプロジェクト。
マインスイーパーに関するクラスライブラリプロジェクト。
ボードのランダム生成、セルの開閉などを管理する。
Minesweeper.Commonで作成したDLLを用いて、コンソールで遊ぶプロジェクト。
使えるコマンドは下記の3つ。
open {y} {x} // (x,y)のセルを開く
openEight {y} {x} // (x,y)のセルの周辺8セルを開く
flag {y} {x} // (x,y)のセルの旗の上げ下げを切り替える
左上が(0,0)で、右に向かってx増加、下に向かってy増加。
マインスイーパーを強化学習を用いて解くプロジェクト。
Unityでマインスイーパーを遊ぶプロジェクト。 Minesweeper.Commonで作成したDLLを利用するため、先にそちらをビルドする必要がある。
- クリック:セルを開く、
- スペースを押しながらクリック:旗
- 現在の盤面を見て、これまでに同じ盤面を操作したことがある場合、これまでの学習結果に沿い、もっともスコアが高いセルを開かせる
- 未評価の盤面ならスコア0扱い
- 局所最適化を防ぐため、適当な確率でランダムに開く
- セルが1つのみ開いたら小加さく点、2つ以上開いたら大きく加点、爆弾に当たったら大きく減点
- 繰り返す
いじょ。
- 盤面全体のみを見て判断しており、内部で区分けなどを行っていない。3x3とか5x5に内部で区分けして学習していくほうが良さそう。
- 盤面のハッシュ化を行いたいが、いい方法が思いつかない。現在は,ulongの2ペアをキーとしている。拡張性がない。
- 計算のボトルネックがどこにあるか計測していない。高速化したいなら突き止めるべき。
- 学習に使用しているパラメータについて、適切な値がわからない。ノウハウや知識を持たないため、直感も働かない。強化学習アルゴリズムそのものについて理解を深めるか、GAを用いて適切なパラメータそのものを探させるなどの対応が必要。
- 学習の並列化を行いたい。