遺伝的プログラミングによる評価関数の自動生成とその利用。
ぐろーんモードはA/B法の1.5手読み。シングルモードはもう少し深いはず。
いろいろ実装を試したのがいくつかのブランチに分かれている
- masterブランチ: ヒューリスティックによる小さな評価関数と盤面の情報を遺伝子に利用。
- gp-fullブランチ: 盤面の情報のみを遺伝子に利用する。
- gp-all: Pythonで実装していた奴とかbaka AI(後述)とかまとめて捨ててある。
-h
: ヘルプを表示-s
: シングルモード(デフォルト: ぐろーんモード)-r
: 評価関数をランダム生成した上でのシングルモード-e ev
: 評価関数evを与える-a serv:port
: 2048 as a serviceのサーバーを指定(デフォルトではエミュレーション)-d dir
: ぐろーんモードのみ: 各世代をdirに出力-i file
: ぐろーんモードのみ: 最初の世代を指定
./gp -d log/
サマリーは標準出力に出る
./gp -a server:8080 -e "..." -s
がんばって予想した方向と盤面を表示しながらがんばってくれる。
http://angelworm.hatenablog.com/entry/2014/06/07/024027
遺伝的プログラミングによって評価関数をガンガン生成するモード。
パラメータ
- 各世代の遺伝子: 1000
- 交叉確率: 0.75
- 突然変異確率: 0.05
- 交叉アルゴリズム: デフォルト(ノードに対して均一)
- 突然変異アルゴリズム: 枝のランダム木による置き換え
本来はsupercalifragilisticexpialidociousという名前のAIになるはずだったもの。評価関数プレイヤー。
A/B法やめてもっと深読みすりゃいーじゃんと考えて手で実装したら死んだ。
最初このプロジェクトは遺伝的アルゴリズムで実装するつもりだった。
手段は、200手分の「手」を遺伝子と呼んで、スコアを適応度とするもの。
最終的にランダムより強くはなったので満足している。
所在: gp-all
ブランチのbaka.py
良きに計らえ。俺を立てろ。