1 ポイント 投稿者 GN⁺ 2024-04-29 | 1件のコメント | WhatsAppで共有
  • 遺伝的アルゴリズムを活用した自動車進化シミュレーションプログラム

    • 遺伝的アルゴリズムを使って、無作為な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件のコメント

 
GN⁺ 2024-04-29
Hacker Newsのコメント

要約すると次のとおり:

  • このプロジェクトは20年前に作られたもので、Ruffleのおかげで今でもブラウザ上で実行できる
  • 遺伝的アルゴリズムの性質上、ある時点で優れたデザインが現れると、その後の世代でも支配的であり続ける傾向がある。突然変異率と突然変異の大きさの設定を調整してみる必要がある
  • 280m以降は道路がなく、車が終わりのない穴に落ち続ける小さなバグがある
  • "Surprise" ボタンを押すと、すばやく複数の世代を経過させられる。突然変異率と突然変異の大きさを調整しながら、時間とともに進む進化の過程を観察するのは興味深い
  • 車両に「コンプライアンス」に関する遺伝子があってサスペンションを実装できるなら面白そうだ。多くの実行では、トロンバイクのような形に収束する傾向がある
  • 世代が変わっても地形は変化しない
  • 以前のHNの議論でも何度も紹介されていた(boxcar2d に似ているが、Flashなしで実装されている)
  • 子どものころ、Boxcar 2Dで何時間も過ごした思い出がよみがえる
  • 3D物理ベースのシミュレーション環境でもこのようなことが可能なのか気になる。シミュレーションでドローンなどの新しい空力形状を発見するのに、遺伝的アルゴリズムが使えるのか興味深い