Lab/Evolve

シミュレーション・実験公開中2026

遺伝的アルゴリズムで歩き方を学ぶ2D生物を観察。個体数や突然変異率を変えて進化を実験できます。

サイトを開く
進化シミュレーター

Screenshots

進化シミュレーター スクリーンショット 1

Overview

概要

遺伝的アルゴリズム(GA)によって、関節と筋肉を持つ2D生物が『前へ進む』という目標のために世代交代し、数十世代で這い・跳ね・歩きといった移動を自ら発明していく様子を観察する水槽です。評価はWeb Worker上のヘッドレス物理で高速に回すため待たされず、体のプリセットや個体数・突然変異率などGAのパラメータをUIから即座に変えて実験できます。外部通信はゼロで、すべてブラウザ内で完結します。

How to use

遊び方・使い方

体のプリセット(ワーム・四足獣・二足・片腕クロウラー)を選んで開始すると、生物たちが評価と世代交代を繰り返します。右のパネルで個体数・突然変異率・エリート数・評価時間を調整し、倍速(x1/x4/x16/最速)で進化を早送り。中央のビューでは選択個体の動きをリプレイで観察でき、世代パネルの適応度グラフと上位個体のサムネイルで成長を追えます。

Tech stack

技術スタック

TypeScriptNext.js 16React 19Matter.jsWeb WorkerTailwind CSS v4

物理はmatter-js 0.20を固定ステップ(1000/60)で更新し、適応度はfitness=dx-0.5*max(0,-dxMin)-2.0*fallenPenaltyで算出。ベストゲノムと世代統計(最大5000世代のリングバッファ)をlocalStorageに保存し、Worker例外時は自動再起動します。

Highlights

工夫した点

  • 筋肉はモーター関節ではなく距離Constraintのlengthを時間で振動させて駆動(L=L0(1+restBias+amplitude*sin(2πt/period+phase)))し、CPG的なリズムを遺伝子で探索
  • ゲノムはFloat32Arrayで筋肉1本あたり4遺伝子。エリート保存+トーナメント選択+筋肉単位のブロック一様交叉+ガウス突然変異(+低確率のマクロ突然変異)で世代を更新。乱数はmulberry32でシード再現可能
  • 評価はWeb Workerのヘッドレス物理で高速化し、観察は同一seedの固定ステップで決定的に再現。描画はMatter.Renderを使わずCanvas 2Dの自前レンダラ、グラフも自前SVG

To improve

改善したい点

  • 体のプリセット外の自由な身体構造(自作モルフォロジー)には未対応
  • 適応度関数が前進距離中心で、目的(ジャンプ・登坂等)の多様化に伸びしろ
  • 低スペック端末での最速モードの安定性に課題

What's next

今後の展望

  • 障害物・坂・段差など環境を変えた進化の観察
  • ニューラルネット制御(神経系の進化)への拡張
  • 個体の書き出し/読み込みや、進化過程の共有

Category

3D・実験

Genre

シミュレーション・実験

Year

2026

Status

公開中