やること
「遺伝的アルゴリズムでマインスイーパを解く」という勉強会を開きます(開きました)。結果を残しておきます。
AIワークショップ|遺伝的アルゴリズムでマインスイーパを解く (2023/02/22 21:00〜)
## Zoom参加でお願いします Zoom参加リンク ミーティングID: 927 2903 0026 パスコード: 635044 ## 参加方法 ご自由にお越しください。人数把握のため事前申し込みをお願いします ## オンラインコミュニティ 情報交換・質問はSlack(AI FASHION)(Slack)で...
実行環境
画面キャプチャを行うため、「Google Colab」「Jupyter Notebook」のようなクラウド的な環境は使えません。実行する場合はPCにPython3系の実行環境を用意する必要があります。
WinPython3.6をおすすめしています。
WinPython - Browse /WinPython_3.6/3.6.7.0 at SourceForge.net
Portable Scientific Python 2/3 32/64bit Distribution for Windows
ソースコード
ソースコードは勉強会のページで配布されています。
以下を学びました。
- Pythonで画面キャプチャとクリック
- 二次元配列のマスク処理
- 遺伝的アルゴリズム(GA)とは
- vcopt(GAパッケージ)の使い方
- マインスイーパにGAが適している理由
GAでどうやるか(ざっくり)
各種マスクを用意します。
注目マス(5つ)を遺伝子座として、それぞれ0(セーフ)か1(爆弾)の遺伝子が入ることとします。評価関数は個体から算出した数字マスと実際の数字マスの誤差二乗合計を返すようにし、GAとしてはこれが0になるような個体を探索します。
ただ、最適化した通りにクリックしても爆弾を踏むことがあります。複数解があってハズレの方を引いてしまった場合です。
そこで複数解があることを前提に、GAの個体群を統計的に調べて「絶対安全なマスだけ踏む」ようにします。
結果
初級、中級、上級、おまけに上級の失敗を動画にまとめました。
応用編もあるよ
応用編として、量子アニーリングで解いたバージョンも公開しました↓