Write the rules. Run the world. See what emerges.
ルールを植えて、世界を走らせ、何が生まれるかを見る。
WorldSimSeed is an experimental open-source simulation engine for describing small worlds with simple rules and observing the patterns that emerge from them.
WorldSimSeed は、確率・エージェント・時間・イベント・観測という少数の要素から「小さな世界」を定義し、その世界を何度も走らせて、予想外の分布・格差・伝播・協力・崩壊・創発などを観察するための汎用シミュレーション基盤を目指す実験プロジェクトです。
数学やシミュレーションの専門家だけでなく、人間やAIが読み書きできる小さな世界定義から、ブラウザ上ですぐ実験できることを重視します。
Concept / research phase. No implementation yet.
まず類似OSS・製品・研究用ツールを調査し、WorldSimSeedを作る意味と最小仕様を固めてから実装します。
たとえば、次のような世界を考えます。
- 1,000人が同じ資産から始まる
- 各人には正規分布した「才能」がある
- 一定確率で幸運・不運が起こる
- 幸運を活かせる確率は才能に影響される
- 40年後の資産分布、Gini係数、才能と富の相関を見る
重要なのは、特定の「才能と運」モデルを再現することではありません。
世界のルールを差し替えられる小さなエンジンにすることが目的です。
例:
- 才能ゼロ・運だけの社会
- 運ゼロ・才能だけの社会
- 人脈が多いほど機会が増える社会
- 不運を努力で一定確率回避できる社会
- 毎年もっとも貧しい人へ給付する社会
- 噂や流行がネットワークを伝播する世界
- 協力者と裏切者が共存する世界
- 人口・資源・出生・死亡が変化する世界
- 欲望を持つ人工住民が資源を奪い合う世界
最初から「あらゆる数学」を扱おうとはしません。
v0.1では、次の5要素に絞る想定です。
- Agents — 個体とその属性
- Time — tick / step / year などの時間進行
- Events — 確率的または条件付きで起こる出来事
- Rules — 状態を変化させる規則
- Observers — 分布・平均・相関・Giniなどの観測
世界定義は JSON / YAML 等の、人間とAIの双方が扱いやすい形式を候補とします。
population: 1000steps: 80agents:
talent: normal(mean=0.6, sd=0.1)wealth: 10events:
- name: luckprobability: 0.10condition: random() < talenteffect: wealth *= 2
- name: misfortuneprobability: 0.10effect: wealth *= 0.5observe:
- wealth_distribution
- gini
- correlation(talent, wealth)※これは仕様ではなく、構想を共有するための擬似記法です。
WorldSimSeed は「アプリ」だけではなく、埋め込み可能な部品として使える構成を目指します。
想定レイヤー:
sim-core— UIを持たないシミュレーションエンジンworld-spec— 世界定義フォーマットとvalidatorsim-view— グラフ・エージェント・ネットワーク等の可視化web-component— 他サイトへ埋め込めるWeb Componentheadless— UIなしで大量試行し統計を返す実行モード
将来的には、たとえば次のような埋め込みを想定します。
<world-simsrc="/worlds/example.yaml"></world-sim>外部アプリからは、概念的には次のように操作できる形を検討します。
sim.step();sim.run(1000);sim.getState();sim.setParameter("scarcity",0.8);WorldSimSeedは単独の教育・実験ツールとして成立させつつ、人工世界プロジェクト NOZOMI Beings の下層エンジンとして埋め込める可能性も検討します。
ゲームエンジンが重力・衝突・移動を扱うように、WorldSimSeedが
- 確率
- 人口
- 資源
- 格差
- 伝播
- 選択
- 協力/競争
などの「社会・人工世界の物理」を担当し、その上にNOZOMI側の人格・欲望・記憶などを載せるイメージです。
ただしWorldSimSeed自体はNOZOMI専用にはせず、独立したOSSとして再利用可能にします。
- Small rules, emergent outcomes. 少数のルールから結果が生えることを楽しむ
- Readable by humans and AI. 世界定義を人間にもAIにも読み書きしやすくする
- Embeddable. 他のWebアプリや人工世界へ組み込める
- Deterministic when seeded. 乱数seedを固定すれば再現可能にする
- Headless first. UIと計算エンジンを分離する
- Inspectable. ブラックボックス化せず、なぜその結果になったか追跡可能にする
- Browser-friendly. 可能ならサーバー不要でGitHub Pages等でも動かせる
- Not a universal solver. 数学全般を解く巨大ツールにはしない
最初の動作確認用モデル候補は、2018年の研究 Talent versus luck: the role of randomness in success and failure に着想を得た「才能・運・富」の簡易モデル。
これはWorldSimSeedの目的そのものではなく、次の機能を一度に検証できるためのreference modelとして使う想定です。
- 正規分布
- 確率イベント
- 条件付きイベント
- 乗算的状態変化
- 多数エージェント
- 複数回試行
- 分布・相関・Gini等の集計
- seed固定による再現
実装開始前に、GitHub Issuesで以下を整理します。
- 類似OSS・商用製品・研究ツールの調査
- WorldSimSeedの差別化と「作る意味」の確認
- v0.1 world spec / DSLの設計
- core / embed / visualization APIの境界
- reference modelと検証方法
- OSSライセンス、README、CONTRIBUTING、SECURITY等の公開準備
- パフォーマンス上限と安全な式評価方式
次回は Issue #2: Design: v0.1 world spec / DSL を定義する から開始する。
調査の暫定判断は、既存の汎用ABMを再実装・直接wrapするのではなく、AI可読なworld spec、seed固定の再現実行、observerとtrace、Web標準での埋め込みに限定して独自実装することである。Issue #2では、この判断を検証する最小world specとrun manifestを定義する。
Concept by 山田佳江 / 月野テンプレクス