書籍サポート
ゲームAIと深層学習―ニューロ進化と人間性
「ゲームAIと深層学習―ニューロ進化と人間性」, 伊庭斉志著,
(オーム社)
で解説されているソフトウェアのページです。
ソフトウェア等のご利用にあたって
- このソフトウェア等は伊庭研究室が作成し、無償で配布しているものです。出版社が提供するサービスではありません。
- このソフトウェア等の著作権は、伊庭研究室が保持しています。ダウンロードしたソフトウェア等を再配布することはできません。
- このソフトウェア等に起因するいかなる損害に対しても、伊庭研究室は何ら責任を負いません。
- 伊庭研究室は予告なくソフトウェア等の内容を更新したり、提供を中止することがあります。
- Mind Renderに関しては以上の注意書きは該当しません。 Mind Renderの利用規約を参照してください。
配布ソフトウェア
パズル関連
8パズルの探索プログラム (2章) |
8パズル(深さ優先探索) 8パズル(広さ優先探索) 8パズル(A*探索) |
|
倉庫番 (2.4節) |
倉庫番のプログラム gcc *.c -lfreeglut -lglu32 -lopengl32 としてコンパイルする。 キー操作は以下の通り(詳しくはプログラム参照):
|
|
ナンバーリンク (2.3節) |
ナンバーリンクの探索プログラム GNU makeがインストールされている環境でmakeとすると実行ファイル(a.exe)が生成される。 |
|
箱入り娘パズル (2.4節) |
箱入り娘の探索プログラム ruby random.rbのようにして実行する。 algorithmというgenパッケージが必要であり、その インストール方法はこれを参照。 |
|
ペグソリティア (2.5節) |
縦型探索プログラム 横型探索プログラム A*探索プログラム gccでコンパイルできる。 |
|
数独(その1) (2.6節) |
数独の探索プログラム python3 sudoku.py のようにして実行する。 |
|
手掛かりのない数独 (2.6節) |
手掛かりのない数独+アルファ 以下のようにコンパイルする。 g++ -std=c++11 main.cpp NoClueSudoku2.cpp HakoiriMusume.cpp PuzzleSearch.cpp SlidePuzzle.cpp 実行すると、他にも変形スライドパズルや箱入り娘の 解法も得られる。 |
|
数独(その2) (2.6節) |
数独(shidoku)の代数的な探索プログラム 数式処理システム sage notebookから動作する。 実行のイメージは ここにある。 |
制約従属パズル関連
N-queen (3.2節) |
バックトラックのプログラム(N-queen) gcc common.c minmax.c -lm としてコンパイルする。 |
|
線画解釈 (3.3節) |
線画解釈のサンプルプログラム プログラムはJavascript で実装されており、 適当なWebブラウザでai.html を開くと実行できる。 |
|
ATMSによる解法(4色問題) (3.4節) |
4色問題を解くプログラムと地図データ g++ -o solver 4color.cppとしてコンパイルする。 ./solver < data1.txt > ans1.txt として実行する。 |
|
ATMSによる解法(覆面算) (3.4節) |
覆面算のプログラム 以下のようにして実行する。
|
|
チェスパズル(その1) (3.5節) |
チェスパズルを解くプログラム ポーンをできるだけ多く配置する。一直線にならばないようにする。 gccでコンパイルして実行する。 |
|
チェスパズル(その2) (3.5節) |
チェスパズルを解くプログラム 互いに攻撃しない駒の最大配置を求める。gccでコンパイルする。 引数は次の意味である
|
|
クヌースのヒップパズル (3.6節) |
ヒップパズルを解くプログラム 以下でコンパイルして実行する。
|
ゲーム関連
三目並べ(Tit-tac-toe) (4.2節) |
alpha-betaカットのプログラム(Tit-tac-toe) gcc common.c ab.c -lm としてコンパイルする。 |
|
三目並べ(Tit-tac-toe) (4.2節) |
min-maxのプログラム(Tit-tac-toe) gcc common.c ab.c -lm としてコンパイルする。 |
|
チェス (4章) |
チェスのプログラム cygwin用の実行コードがある。Windowsを大きくするとよい。 gcc chessnew.c -lm -lcurses としてコンパイルする。 指し手の表現は国際式表記であり、例えば、E2E4となる。 キャッスリングはE1G1、アンパサンはE5F6である。 キー操作は以下の通り(詳しくはプログラム参照):
|
|
マリオAI(4.4節) |
マリオのA*探索プログラム 以下の手順でインストール、実行する。実行にはjava環境が必要である。
|
|
パックマン(small world) (4.9節) |
パックマンのプログラム makeでコンパイルできる。 main.cの
|
|
パックマン(モンテカルロ木探索) (4.9節) |
パックマンのプログラム htmlファイルを開き、コンソール(F12キー)から makeRouteMap(map); を入力すると実行できる。 ダイクストラ法で各地点同士の最短距離を計算するのにしばらく時間がかかる。 jsonデータをロードしているので ローカルファイルに対してXMLHttpRequestが実行可能なブラウザでのみ 動作する(Firefox, Edgeでの動作確認)。 mapの変更方法はここに書かれている。 画面の右では探索方法や各キャラクタのパラメータを変更できる。 |
|
オセロ (4.7節) |
オセロのプログラム binの下の実行ファイルはそのまま実行可能(Linux, Windows)。 ビルドには、Visual Studio2017の環境下でOpenGLとGLUTが必要。 |
|
オセロとfool's mate (4.7節) |
オセロのプログラム(fool's play) $python play.py -g foolsmate でfool's playを実行する。 詳細は本文の説明を参照。また実行環境については、 これと これ を参照してほしい。オプションの説明は以下の通り。
|
|
3次元Tit-for-tat(4x4x4)(その1) (4.6節) |
3次元Tit-for-tat(4x4x4)のプログラム(その1) UTC法との対戦を行う。 コマンドライン引数によってオプションが指定できる。 ./main [先手:0, 後手:その他(default:0)] [UCTの総playout回数(default:10000)] 例) ./main 0 10000 |
|
3次元Tit-for-tat(4x4x4)(その2) (4.6節) |
3次元Tit-for-tat(4x4x4)のプログラム(その2) UTC法 v.s. min-max(α・βカット)の対戦を行う。 実行には引数にplayout数を入れる。 評価関数は単純に隅や真ん中が強くなるようにするだけである。 |
学習・進化とゲームAI関連
DQNによるアタリ シミュレーション (5.2節) |
[cppソースコード(.zip, 1.2M)] CUDA required for GPU mode |
|
進化するマリオ (5.3節) |
基本部分は「マリオのA*探索プログラム」に従ってインストールする。 GAマリオのプログラムはここから 入手できる。 詳細は本書の記述を参考にしてほしい。 |