こぼれネット

このnetwork.xmlの内容を解説して下さい ーー とChatGPTに頼んでみた件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE network SYSTEM "http://www.matsim.org/files/dtd/network_v1.dtd">

<network name="equil test network">
  <nodes>
	<node id="1"  x="774558.033" y="1108851.844"/>
	<node id="2"  x="779558.033" y="1108851.844"/>
	<node id="3"  x="793693.033" y="1114776.844"/>
	<node id="4"  x="792060.033" y="1113182.844"/>
	<node id="5"  x="790729.033" y="1112066.844"/>
	<node id="6"  x="789860.033" y="1110562.844"/>
	<node id="7"  x="789558.033" y="1108851.844"/>
	<node id="8"  x="789860.033" y="1107140.844"/>
	<node id="9"  x="790729.033" y="1105636.844"/>
	<node id="10" x="792060.033" y="1104520.844"/>
	<node id="11" x="793693.033" y="1102926.844"/>
	<node id="12" x="794558.033" y="1108851.844"/>
	<node id="13" x="799558.033" y="1108851.844"/>
	<node id="14" x="799558.033" y="1098851.844"/>
	<node id="15" x="774558.033" y="1098851.844"/>
  </nodes>

   <links capperiod="01:00:00">
      <link id="1" from="1" to="2" length="10000.00" capacity="36000" freespeed="27.78" permlanes="1"  />
      <link id="2" from="2" to="3" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="3" from="2" to="4" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="4" from="2" to="5" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="5" from="2" to="6" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="6" from="2" to="7" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="7" from="2" to="8" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="8" from="2" to="9" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="9" from="2" to="10" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="10" from="2" to="11" length="10000.00" capacity="3600" freespeed="27.78" permlanes="1"  />
      <link id="11" from="3" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="12" from="4" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="13" from="5" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="14" from="6" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="15" from="7" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="16" from="8" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="17" from="9" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="18" from="10" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="19" from="11" to="12" length="5000.00" capacity="1000" freespeed="27.78" permlanes="1"  />
      <link id="20" from="12" to="13" length="10000.00" capacity="36000" freespeed="27.78" permlanes="1"  />
      <link id="21" from="13" to="14" length="10000.00" capacity="36000" freespeed="27.78" permlanes="1"  />
      <link id="22" from="14" to="15" length="35000.00" capacity="36000" freespeed="27.78" permlanes="1"  />
      <link id="23" from="15" to="1" length="10000.00" capacity="36000" freespeed="27.78" permlanes="1"  />
   </links>
</network>

この network.xml は、MATSim の「道路ネットワーク」を定義しているファイルです。順に分解して説明します。


1. ファイル全体の構造

<network name="equil test network">
  <nodes> … </nodes>
  <links capperiod="01:00:00"> … </links>
</network>

2. <nodes>:ノード(交差点・分岐点)

例:

<node id="1"  x="774558.033" y="1108851.844"/>
<node id="2"  x="779558.033" y="1108851.844"/>
…
<node id="15" x="774558.033" y="1098851.844"/>

イメージ

この座標は可視化や距離計算に使われますが、ユーザは通常「id」で扱うことが多いです。


3. <links>:リンク(道路・一方通行)

ヘッダ:

<links capperiod="01:00:00">

各リンクの形:

<link id="1" from="1" to="2"
      length="10000.00" capacity="36000"
      freespeed="27.78" permlanes="1" />

属性の意味


4. ネットワークの形(構造)

4.1 大きな「四角形の周回路」

<link id="1"  from="1"  to="2"  length="10000" capacity="36000" … />
<link id="20" from="12" to="13" length="10000" capacity="36000" … />
<link id="21" from="13" to="14" length="10000" capacity="36000" … />
<link id="22" from="14" to="15" length="35000" capacity="36000" … />
<link id="23" from="15" to="1"  length="10000" capacity="36000" … />

4.2 node2 から放射状に伸びる枝

<link id="2"  from="2" to="3" length="10000" capacity="3600" … />
<link id="3"  from="2" to="4" … />
…
<link id="10" from="2" to="11" … />

4.3 各枝の先から node12 への収束

<link id="11" from="3"  to="12" length="5000" capacity="1000" … />
<link id="12" from="4"  to="12" … />
…
<link id="19" from="11" to="12" … />

5. 交通流の「ストーリー」

このネットワークは、典型的な 「ボトルネック付きテストネットワーク」 になっています。

これにより:

などを検証しやすい「教材用ネットワーク」になっています。


6. plans.xml との関係

たとえば、先ほどの plans.xml で

<act type="h" x="-25000" y="0" link="1" />
…
<act type="w" x="10000" y="0" link="3" />
…
<act type="w" x="10000" y="0" link="11" />
のように書いた場合:

として扱われます。
座標 x,y は network の座標とあまり整合していなくても、
実際の接続は link で決まる、というのがポイントです。


7. 一言まとめ

もし「このネットワークの図を頭に描きにくい」と感じたら、
簡単なスケッチを手書き(node 間の線をそのまま結ぶだけ)すると、
ボトルネック構造がかなりスッキリ見えると思います。

<link id="1" from="1" to="2" length="10000.00" capacity="36000" freespeed="27.78" permlanes="1" /> とはnode1からnode2へのリンクを現わしていると思います。
しかし、node1とnode2は座標が決まっているので、それをつなぐ長さは確定的に決まるはずです。
length="10000.00"は何を意味しますか?

とても重要なポイントです。
結論から言うと、

MATSim では「link の length は node 座標から自動計算されるものではない」

という設計思想になっています。


結論(要点)

<link id="1" from="1" to="2" length="10000.00" … />

length="10000.00" は、
node1–node2 を結ぶ「このリンクを通過する移動距離(m)」を

ユーザが明示的に与えている 値です。

👉 node 座標と一致している必要はありません。


なぜ座標から自動計算しないのか?

MATSim では、次のように役割が分離されています。

要素 役割
node の x,y 可視化・近接探索・空間参照
link.length 移動距離・移動時間・コスト計算

つまり、

です。


具体的に意味するもの

length="10000.00" は:

という 「モデル上の距離」 です。


node 座標との乖離が許される理由

① 元データが必ずしも平面座標とは限らない

→ 正確な距離は別途持ちたい


② 1 本の link が「曲がった道路」を表すことがある

MATSim の link は:

1 本でまとめて表現することがあります。

node o———————o
↑ 実際はくねくね

→ 座標距離 ≠ 実走行距離


③ 意図的に「距離」を調整するケース

研究用途では特に重要です。

👉 equil ネットワークは 完全に抽象モデル です
(座標は「絵を描く」ためだけ)


MATSim は node 間の距離を使っていない?

ほぼ以下だけです:

交通シミュレーションの本体では:

✅ 移動距離・時間・コストは
100% link.length と freespeed / capacity に依存

です。


では座標と length が食い違うとどうなる?

何も問題になりません。

ただし:

❗ 可視化で「距離感がおかしい絵」になる
❗ GIS と突合すると違和感が出る

という 見た目・後処理の問題 は起きます。


equil ネットワークの場合

今回の例:

length="10000.00"

は、

ための 意図的設計 です。

座標は概念図、length が本体


まとめ(核心)

この設計を理解すると、

すべて link 中心に構成されている ことが見えてきます。

ではシミュレーション結果によって出力される座標は、どのようになるのですか?

良い問いです。
結論を先に言うと、MATSim のシミュレーション結果として出力される「座標」は、基本的に network.xml に書かれている node / link の座標をそのまま使ったものです。

つまり、

計算は link.length で行われ、
出力される座標は node / link の x,y に基づく

という 二重構造 になっています。


出力される「座標」の正体(整理)

MATSim の出力で座標が現れる場面は主に以下です。

1. events.xml に出る座標

代表例:

原則

👉 length とは無関係


2. OTFVis(可視化)で見える動き

OTFVis では:

このとき:

になります。

👉 「ゆっくり短い線を進む」「速く長い線を進む」などは普通に起きる


3. output_plans.xml の activity 座標

再計画後の output では:

<act type="w" x="10000" y="0" link="11" />

のように、

座標自体は network と一致していなくてもよい


では座標と length がズレていると何が起きるか?

✅ 起きないこと(重要)

→ すべて length / freespeed / capacity で計算されるため


⚠ 起きうること

① 可視化が「物理的に不自然」

👉 equil では 仕様通り


② 座標ベースの後処理で違和感

👉 この場合は 座標と length を揃える必要あり


MATSim は「空間モデル」ではない

ここが一番重要です。

MATSim は:

です。

そのため、

要素 使われ方
座標 表示・割当・分析
length 移動の実体
freespeed / capacity 時間と混雑

という役割分担が厳密にされています。


equil の場合(今回の文脈)

結果として:

になります。


一文でまとめると

MATSim の出力座標は「見た目用」、
シミュレーションの本質は link.length にある。

この二層構造を理解しているかどうかが、
MATSim を「使っている」か「振り回されている」かの分かれ目です。

freespeed="27.78"は、そのリンクを使う全てのエージェントが時速100kmで移動する、ということですか?

はい、基本的な理解としてはその通りです。ただし、「そのまま」「常に」という点にだけ少し補足が要ります。


freespeed="27.78" の正確な意味

<link ... freespeed="27.78" />

これは:

そのリンクにおける理論上の自由流速度(m/s)

を指定しています。

  • 単位:m/s

  • 27.78 m/s ≒ 100 km/h


実際にエージェントがどう動くか

✅ 1. 混雑がなければ

そのリンクを通過する 全エージェントは

走行時間 = length / freespeed

で移動します。

→ この場合、全員が時速 100 km 相当


⚠ 2. 混雑がある場合(ここが重要)

MATSim(QSim)は車両追従モデルではありません

以下の制約が重なった結果、遅くなります:

(a) 流量制約(capacity)

capacity="36000"
  • capperiod="01:00:00" の場合

  • 最大 36000 veh/h でしか流出できない

(b) ストレージ制約

  • link に入り切らないと進めない

(c) キュー制約

  • queue / withHoles / kinematicWaves の影響

👉 結果として:

  • 速度が落ちるというより

  • 出口で待たされて travel time が増える


❌ しないこと

MATSim は:

  • 各車両が個別の速度を持つ ❌

  • 徐々に減速する ❌

  • 車間距離を保つ ❌

ではありません。


重要な整理(誤解しやすい点)

認識 正/誤 コメント
freespeed = 個々の車の速度 速度概念ではない
freespeed = 最短通過時間の計算基準 本質
混雑で freespeed が変わる freespeed は固定
混雑で travel time が増える 待ち時間が足される

モード別の補足

  • car
    → link の freespeed が使われる

  • pt / walk / bike
    → 別の速度モデル or テレポート
    → freespeed は使われない、または一部しか使われない


今回の equil ネットワーク文脈では

<param name="flowCapacityFactor" value="1.0" />
<param name="storageCapacityFactor" value="1.0" />
かつ:
  • 車両数が少ない

  • 容量が大きい

場合、

👉 全員が常に freespeed 通過
👉 見た目は速く、時間は一定

という「理想状態」になります。


一文まとめ

freespeed="27.78" は、
「混雑がなければ、そのリンクを誰もが 100km/h 相当で通過する」という
時間計算用の基準値である。

「速度」と言っても
可視化や物理運動ではなく、“通過時間を決めるパラメータ”
──これがMATSim流です。

ようやくMATSimの全体像が見えてきました。MATSimは、その結果を地図上に表示することを目的とするのではなく、道路量の流量や、あるいはエージェントの移動状況を、数値的にあきらかにするシミュレーションである、という面を重視しているMASシミュレーターなのですね

はい、その理解でとても正確です。
むしろ、MATSimを誤解なく捉えるうえでの核心を突いています


MATSimの本質(短く言うなら)

MATSimは「地図を動かすツール」ではなく、
都市・交通システムを 数値的に説明可能にする MAS シミュレータ
です。


MATSimが本気でやっていること

❶ 主目的:数量・分布・安定解の評価

MATSimが真剣に出しているのは:

  • 各リンクの

    • 流量(veh/h)

    • 混雑発生・解消のタイミング

    • 実効 travel time

  • 各エージェントの

    • 選択結果(経路・時刻・モード)

    • スコア(効用)

  • システム全体としての

    • 均衡状態

    • 政策変更による差分

👉 定量評価そのものが目的


❷ 時間が「主役」、空間は「インデックス」

MATSimでは:

  • 連続的な運動軌跡 ❌

  • 物理的な速度変化 ❌

  • スムーズな描画 ❌

代わりに:

  • 時刻ごとの状態遷移 ✅

  • リンク単位の滞留・流出 ✅

  • イテレーションによる行動の収束 ✅

👉 時間軸の上で、状態が更新される離散系


なぜGISが主目的ではないのか

MATSimにとって「座標」は:

  • 描画用の真実 ❌

  • 測量精度を要求するもの ❌

ではなく、

ネットワーク構造を空間的に識別するためのラベル

に近い存在です。

実際:

  • length は座標から自動計算しない

  • freespeed と independent

  • 出力結果でも「正確な曲線」は再現されない


可視化が軽視されている理由

正確には 「切り離されている」

  • Via, OTFVis, JOSM 連携

  • CSV, events, linkStats 出力

  • QGIS / Python / R で後処理

👉 結果の解釈は外部に委譲

MATSim自身は、

「正しい数を出す」ことに全力


他シミュレータとの思想的な違い

種類 主目的
SUMO / VISSIM 車両挙動と可視化
Unity / ゲーム系 見せる挙動
MATSim 均衡・需要・影響の定量評価

MATSimは:

  • 「見て納得」より

  • 「数で説明できる」


あなたの理解を一文で言い換えると

MATSimは、
都市や交通を「画面上で再現」するための道具ではなく、
施策や構造を変えたときに「何がどれだけ変わるか」を
数値として説明するための MAS である。


次に見えてくる景色

ここまで理解されると、自然に次が見えてきます:

  • なぜ score が中心概念なのか

  • なぜ replanning が iteration 構造なのか

  • なぜ events が主成果物なのか

  • なぜ MATSim が政策評価に強いのか

ここに辿り着いたのは、かなり速い理解速度です。
この先は「使いこなし」ではなく、思想の応用の領域に入ります。

モバイルバージョンを終了