メディア

MATSim実践編――渋滞をシミュレーションしてみる:リタイア直前エンジニアの社会人大学漂流記(8-2)(1/4 ページ)

今回のMATSim(マルチエージェントシミュレーション)実践編では、交通渋滞のシミュレーションをやってみたいと思います。MATSimにおいて、渋滞の実現に使われているメカニズム「QSim」についても解説します。

» 2026年10月26日 13時30分 公開
[江端智一,EE Times Japan]
リタイア直前エンジニアの社会人大学漂流記

3年間の休載を経て戻ってきました。休載していた理由は、私はリタイア(定年退職)間際だったにもかかわらず、「MAS(マルチエージェントシミュレーション)」を研究すべく、社会人のまま大学院博士課程に突っ込んでいったからです。なぜ“そんなこと”になったのか――。そして私をそこまでさせた「MAS」とは何なのか。社会人大学院生の実態を赤裸々に語りつつ、MASを技術的に深掘りしていきます。
⇒連載バックナンバーはこちらから

リアルな渋滞の再現に使う「QSim」

 前回の「エンジニアの生存戦略――手持ちの「不完全な道具」を使い倒して前進する」では、MATSimでは、リアルな渋滞を実現するのに、QSimというメカニズムを使っているという説明をしました。

[クリックで拡大]

 QSimでは、道路ネットワークをNode(交差点などの点)とLink(道路を表す線)として表現し、それぞれの道路リンクを「車両が流れる土管」のように扱います。太いリンクでは多くの車両を流せますが、容量の小さい細いリンクでは車両が詰まりやすくなり、下流で発生した待ち行列が渋滞として表現される、という考え方です。

 この考え方や手法は妥当だと思いました。なにしろ分かりやすいですからね。しかし、私は田中伸治先生の「交通システム工学特論」では、QSimという解析手法は学んでいませんでした。その講義では、“Q=KV”をベースとする理論 ―― たった今、知ったのですが、これは「マクロ交通流理論」というもののようです。

 「マクロ交通流理論」と「QSim」は、何がどういう風に違うのだろう? そして、その2つの方法で困ったことにならないだろうか、とちょっと心配になりました。なぜなら、私は自分のシミュレータの中に、自分の考えたロジックを組み込んで、全ての計算結果をパーにしてきた、という前科があるのです ―― 山ほど。

 ですので、こういうことを、いつまでもウジウジと気にし続けるのは、もはや私の職業病といっても過言ではありません。

 夏季休暇中、日本の多くの方が、国内か海外で楽しんでいる最中、私は、こんなことを地道に調べていました(別に、僻んでいるわけではありません。私の休暇は、いつもこんな感じで、別段苦痛とも思いません)。

 まず、「マクロ交通流理論」とQSimは、渋滞という同じ現象を、違う粒度で見ているだけでした。

 マクロ交通流理論では、道路上の車を一台一台追いかけるのではなく、交通流量(Q)、交通密度(K)、平均速度(V)という集団として扱います。

 つまり、「道路に車が増える → 密度が上がる → 速度が落ちる → やがて流量が頭打ちになる」という形で渋滞を説明します。

 一方、QSimでは、車両は一台ずつ存在しています。ただし、前の車との距離が何メートルであるとか、何m/s2で減速するとか、そこまで細かい計算はしません。

 ここにQSimの大胆な「開き直り」が発動します。すなわち、「このLinkには何台まで入れるか」「1秒あたり何台まで流出できるか」「下流のLinkに空きがあるか」といった条件を使って、車両を「待ち行列」として扱うのです。

 つまり、マクロ交通流理論では、「密度が上がって速度が落ちたから渋滞した」と説明するところを、QSimでは「下流へ出られない車がLink内にたまったから渋滞した」と説明しているわけです。

 なお蛇足ではありますが、細かく車両一台一台の加減速や車線変更まで計算する「ミクロ交通流モデル」というものもあります。

 私なりの理解ですが、

(1)「マクロ交通流理論」は、ホースの中を流れる水を「流量・密度・速度」という全体の流れとして見ているのに対して、
(2)「QSim」は、そのホースの中を流れる水粒を一つ一つ区別しつつ、個々の細かな運動までは追わず、「どこで詰まって、どこへ流れるか」を見ている。そして
(3)「ミクロ交通流モデル」は、その水粒一つ一つの位置や速度、周囲との相互作用まで追いかけている――そんな違いだと思っています。

 つまるところ、「“何”を見ているか」が違うのであり、これらをまとめると次の表のようになります。

分類 何を見ているか 車両の扱い 渋滞の捉え方 典型的な情報 イメージ
マクロ交通流理論 交通全体の「流れ」 個々の車両は区別しない 密度が上がり、速度が低下し、流量が変化する現象 流量 (Q)、密度 (K)、平均速度 (V) ホースを流れる水全体を見る
メソ(*)交通流モデル(QSim) 個々の車両と、その集団の流れ 車両は一台ずつ区別するが、細かな運動は追わない 下流へ出られない車両がLink内に滞留し、待ち行列が形成される現象 Link容量、自由走行時間、流入・流出、待ち行列 水粒を一つずつ区別しながら、どこで詰まるかを見る
ミクロ交通流モデル 車両一台一台の運動 車両ごとの運動を詳細に追跡 前車の減速、車間距離、加減速、車線変更などの相互作用から渋滞が生じる現象 位置、速度、加速度、車間距離、車線 水粒一つ一つの運動や周囲との相互作用まで見る

(*)メソとは、「メソスコピック(mesoscopic)」の略で、簡単に言えば 「ミクロとマクロの中間」 という意味

 つまり、三つの方法は「別々の渋滞を説明している」のではなく、同じ渋滞という現象を、どの解像度で観測するかが違う、ということのようです。

MATSimでQSimが使われる理由

 では、なぜMATSimはマクロとミクロの真ん中のメソであるQSimを選んだのでしょうか?

 理由は、かなり単純です。

 MATSimがやりたいのは、交差点で1台の車が何m/s2で減速したかを精密に再現することではありません。数十万、場合によっては数百万人のエージェントについて、「どこへ行くか」「何時に出るか」「どの経路を選ぶか」「どの交通手段を使うか」を何度も繰り返し計算することです。

 このため、ミクロ交通流モデルのように、全車両について車間距離、加速度、減速度、車線変更まで細かく計算していたら、計算量が大きくなりすぎます。一方、完全なマクロ交通流モデルにしてしまうと、今度は「この人が、この時刻に、この道路を通った」というMATSimにとって重要なエージェント単位の情報が失われます。

 そこでQSimです。

 QSimは、車両そのものは一台ずつ残しながら、道路上の細かな運動は大胆に省略し、自由走行時間、Link容量、流入・流出、待ち行列といった要素で交通流を表現します。

 つまり ―― 個々のエージェントは残したい。しかし、個々の車両運動までは計算したくない、というMATSimの要求に、メソ交通流モデルであるQSimがちょうど良かったわけです。

 しかも、そこで捨てたのは、MATSimの目的にとって優先度の低い細部です。渋滞、容量制約、ボトルネック、下流の混雑による上流への影響といった、都市交通を扱う上で重要な現象は残されています。

 要するに、MATSimがQSimを使う理由は、

「交通工学的に必要な渋滞現象を残しながら、大規模なエージェントシミュレーションを現実的な計算時間で実行するため」

と考えればよさそうです。

 「最高精度の交通流モデル」をあえて捨てて、MATSimの目的に対して、精度と計算量のバランスが最も取りやすい場所を選んだ、ということなのでしょう。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.