遺伝的アルゴリズムを活用した自動車の進化過程を観察
(rednuht.org)-
遺伝的アルゴリズムを活用した自動車進化シミュレーションプログラム
- 遺伝的アルゴリズムを使って、無作為な2輪の形状を世代を重ねて自動車へと進化させることが目的
- BoxCar2Dをベースにしているが、最初から書き直されており、同じ物理エンジン (
box2d) のみを使用 - David Bauの
seedrandom.jsライブラリを使用
-
操作と設定
- 現在の個体群をローカルに保存・復元できる
Save/Restore Population機能あり Surpriseトグルで描画のオン・オフを切り替え、シミュレーション速度を上げられるNew Populationはトラックを維持したまま、自動車の個体群だけを再開始する- 同じシードなら常に同じトラックが生成され、友人たちと競争できる
Mutation rateは、新しい世代が生まれるときに各個体の各遺伝子が無作為な値へ変異する確率Mutation sizeは各遺伝子が変異しうる範囲で、数値が小さいほど元の値に近いElite clonesは次の世代へコピーされる上位 n 台の自動車を意味するView top replayは現在のシミュレーションを一時停止し、最高性能の自動車を表示する
- 現在の個体群をローカルに保存・復元できる
-
グラフ
- 赤: 各世代の最高スコア
- 緑: 各世代の上位10台の自動車の平均
- 青: 全世代平均
-
ゲノム構成
- 形状(頂点ごとに1個、合計8遺伝子)
- ホイールサイズ(車輪ごとに1個、合計2遺伝子)
- ホイール位置(車輪ごとに1個、合計2遺伝子)
- ホイール密度(車輪ごとに1個、合計2遺伝子) - 暗いほど密度が高い
- シャーシ密度(1遺伝子) - 暗いほど密度が高い
-
追加事項
- シミュレーションは決定論的ではないため、最高の自動車でも一貫した性能を示さないことがある
- 距離に応じて地形の複雑さが増す
- 現在はコードがGitHubで公開されており、コミュニティの貢献も受け付けている
1件のコメント
Hacker Newsのコメント
要約すると次のとおり:
boxcar2dに似ているが、Flashなしで実装されている)