遺伝的アルゴリズムでLifeGameの初期配置を求めてみた
※ Scalaで遺伝的アルゴリズム入門 - AccessViolation Exception
※ ScalaでLifeGameをささっと実装 - AccessViolation Exception
かなり改善チューンするところがあるのと評価に時間がかかるので改善実行しながら現状出来たところのまとめ
評価方法
- 20 * 20の世界で15世代目の生存数が多いほど良いとする*1
- 一点交叉、世界の一部分から前後を交換する
- 生存数0の世界は致死遺伝子として取り除かれる
- よって初期個体は致死遺伝子でないものを用意した*2
- 0.01の確率で突然変異する
実装
よって遺伝的アルゴリズムで得られた結果で何世代目まで行けてどういうパターンに収束するのか確認できるようになった。メイン周りが汚い実装でちょっと綺麗にしたいところ。変数が少ないってほんとうに素敵
この段階では0世代の高評価世界が120世代目で絶命したのに対して、遺伝的アルゴリズムで30世代まで進めた個体では207世代まで生存している。ひとまずは結果があったがかなり難しい。
ひとまず成果ということでメモ。