Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
savanna_sim.py
Search
oggata
November 01, 2025
6
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
savanna_sim.py
https://youtu.be/gIsO6bSz6hk?si=jHuuEW0st5jXJlAg
oggata
November 01, 2025
More Decks by oggata
See All by oggata
セルから世界へ ------Life Gameからパックマン、そしてWorld Modelまでの世界生成シミュレーション入門
oggata
0
390
MESAワールドモデルとマルチエージェントによる人間行動シミュレーション :仮想から現実世界への架け橋
oggata
0
27
ecological_niche_reward_function_v3
oggata
0
13
NextGen Chore
oggata
0
12
MESA_MINI_DINOv2_Pipeline
oggata
0
13
Self-Introduction
oggata
0
32
Gaming & PhisicalAI
oggata
0
68
Beyond LLM:世界モデルが切り拓くフィジカルAIの時代
oggata
0
29
MESAワールドモデルとマルチエージェントによる人間行動シミュレーション :仮想から現実世界への架け橋
oggata
0
400
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
140
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
330
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
How to Talk to Developers About Accessibility
jct
2
230
Tell your own story through comics
letsgokoyo
1
950
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
From π to Pie charts
rasagy
0
200
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The Cost Of JavaScript in 2023
addyosmani
55
10k
My Coaching Mixtape
mlcsv
0
140
Transcript
Genesis Savanna Simulation ライフゲーム × DNA 進化 × 強化学習 による生態系シミュレーター
Genesis Physics Engine × PyTorch REINFORCE × Genetic Algorithm
ライフゲームのコンセプト Conway's Game of Life 誕生 死んだセルの隣に生きたセルが ちょうど3 つあれば生きる 生存
生きたセルの隣が2 〜3 つなら 次世代も生き残る 過疎死 隣が1 つ以下なら孤独死 過密死 隣が4 つ以上なら窒息死 単純なルールから複雑な振る舞いが創発する サバンナ版への置き換え セルの生死ルール → 渇き・空腹・捕食で死亡 隣接セル数 → 繁殖 → 同種が近くにいると子が生まれる 世代更新 → ステップごとに個体数がリアルタイム増減 グライダーの創発 → 群れ・縄張り・個体数振動が創発 ルールは固定 → DNA で個体差あり = ルールに揺らぎ
サバンナの世界構造 平地 🌾 全動物が通行可 草食獣が採食できる デフォルトの地形 山岳 ⛰️ ライオンのみ通行可 草食獣には壁になる
戦略的な地形 森林 🌳 草食獣の隠れ場所 ライオン接近時に 防御ボーナス 水飲み場 💧 全動物の渇きを回復 water_sense が高いほど 回復量が増える 🗺 ワールドサイズ 20 × 20 グリッド ⏱ 1 エピソード 600 ステップ = 約2 日 ☀️ 昼夜サイクル 太陽が東から西へ 🌡 リアルタイム 個体数が動的増減
動物と生死のルール ライオン 🦁 初期 3 頭 | 捕食者 山を越えられる 捕食で空腹-50%
報酬+10 シマウマ 🦓 初期 8 頭 | 草食獣 中速・バランス型 群れ志向が強い 平地・森で採食 ガゼル 🦌 初期 10 頭 | 草食獣 最速・視野最大 森に逃げ込む 最も機敏に逃走 象 🐘 初期 4 頭 | 草食獣 低速・大型 水をよく飲む 上限12 頭まで増殖 💀 死亡条件 渇き ≥ 1.0 → 脱水死 空腹 ≥ 1.0 → 飢餓死 ライオンとの距離 < 0.85 → 捕食死(即死) 🐣 繁殖条件 渇き < 0.45 かつ 空腹 < 0.45 (健康状態良好) 同種が距離 2.0 以内 + クールダウン終了 → 6% 確率で誕⽣
DNA 進化システム 7 つの遺伝子 speed 0.5 〜2.5 速いほど逃げやすい / 追いやすい
thirst_rate 0.002 〜0.012 低いほど水なしで長生き hunger_rate 0.002 〜0.010 低いほど食事なしで長生き size_scale 0.6 〜1.5 ライオンは捕食半径も変化 boldness 0.0 〜1.0 高いほどライオンを恐れない sociality 0.0 〜1.0 高いほど仲間を好む water_sense 0.0 〜1.0 高いほど水場で多く回復 繁殖と進化のフロー ① 条件チェック 健康状態良好 + 近くに同種 + 上限未満 ② 一様交叉 各遺伝子を50% の確率で父 or 母から継承 ③ ガウス突然変異 15% の確率でランダムノイズを加算 ④ 子の誕生 親の近くにスポーン → そのまま生態系へ → 強い個体の遺伝子が集団に広がり、世代を超えて最適化される
強化学習 — REINFORCE 観測ベクトル 16 次元 [0,1] 位置 (x/20, y/20)
[2] 地形タイプ [3,4] 渇き・空腹 [5–7] 水場方向・距離 [8–10] 脅威の方向・距離 [11] 森林近傍フラグ [12,13] 同種仲間の方向 [14] boldness (DNA 直結) [15] water_sense (DNA 直結) 学習フロー 観測 16 次元ベクトルを入力 NN Linear(16→128→128→5) 行動 Categorical 分布からサンプル 報酬 渇き/ 空腹/ 捕食/ 逃走で計算 更新 G = Σγʳ · r を逆算 → loss ポリシーは種ごとに独立 — DNA は「体質」を決め、RL は「動き方」を学ぶ
期待される創発現象 🐃 群れの形成 孤立個体は繁殖できず⽣き残りにくい。密集 すると繁殖確率が上がるため、⾃然と群れが 安定する。ライフゲームの「グライダー」に 相当。 🦁 縄張りの創発 草食獣が多い場所に留まることが最適なた
め、ライオンが空間的に分割して縄張りを持 ち始める。 💧 水場の争奪 水場の近くは繁殖しやすく個体が集中する。 密度が上がると競争が起き、水場リソースの 争奪が⽣まれる。 📈 個体数振動 草食獣が増 → ライオンが増 → 草食獣が減 → ライオンが減。ロトカ=ヴォルテラ方程式的 な振動が出現。 🧬 遺伝子の収束 世代を重ねるほど「渇きにくい・速い」遺伝 子が広がる。同種内でも異なる戦略に分岐す ることがある。 🌅 昼夜の行動変化 太陽サイクルが視覚的な時間軸を与える。将 来的には夜行性/ 昼⾏性の分化を遺伝子で表 現できる。
セットアップ & 実行方法 インストール pip install genesis-world torch onnx onnxruntime
numpy CLI オプション一覧 オプション デフォルト 説明 --lions 3 ライオン数 --zebras 8 シマウマ数 --gazelles 10 ガゼル数 --elephants 4 象数 --episodes 30 エピソード数 --steps 600 1 エピソードのステ ップ数 実行コマンド例 動作確認 ( 最小構成) python savanna_sim.py --lions 2 --zebras 4 --gazelles 5 --elephants 2 --episodes 5 --steps 300 フルスケール python savanna_sim.py --lions 3 --zebras 8 --gazelles 10 --elephants 4 --episodes 30 --steps 600 停止方法 Ctrl+C ( シグナルハンドラで即終了) pkill -9 -f savanna_sim.py 📤 出力: savanna_policy_*.onnx (4 種分のポリシー) + population_log.json ( 個体数推移ログ)
最終ゴール 01 生態系の持続的安定 ライオンと草食獣が全滅せずに 共存し続ける状態を実現する。 個体数振動ログで可視化。 02 DNA の自然収束・多様化 世代を経るごとに遺伝子が収束し、
または複数の生存戦略に分岐する 様子を population_log で確認。 03 創発パターンの観察 群れ・縄張り・ロトカ=ヴォルテラ 振動が設計せずに自然発生する ことをシミュレーターで実証。 次のステップ DONE 地形・動物・RL ・DNA ・繁殖の 実装 DONE NaN 対策・速度最適化・昼夜サ イクル NEXT population_log.json の可視化ダッ シュボード NEXT 種分化 (species の遺伝子化) → NEAT 的アプローチ FUTURE 環境ショック実験 ( 水場を減ら す・ライオンを増やす)