MATSimの調査(継続中)

2023年1月27日

https://www.nikkoken.or.jp/pdf/project/2021/A-854.pdf

これまで述べてきたように、MATSimは移動の均衡をモデル化するための統合シミュレーションツールキットとして設計されました。このため、MATSimは交通需要と供給の両方をモデル化できる必要があります。の部分をモデル化する必要があります。この目的のために、MATSimは図2.3に示すように、均衡に収束するための共進化反復ループを採用しています。図2.3に示すとおりである(p.19)。

このループは、各個人の1日の行動とトリップチェーンという形で、最初の旅行需要から始まります。ループが始まる。このアクティビティとトリップチェーンは、Mobsimの段階で道路ネットワークにロードされる。一日のシミュレーションが終わると を計算し,その結果をもとに,各エージェントのアクティビティ・チェーン(計画)のスコアを計算する.最後の このとき,各エージェントは,以前の計画から生成された計画の集合を所有し を持つことになり,そのスコアに基づいて次の反復で実行するものを選択しなければならない.
ネットワーク負荷の部分では、MATSimのデフォルトとしてトラフィックフローモデルQSimが採用されている。この QSimは計算効率の良い待ち行列ベースのアプローチを適用している。基本的に、車両が道路セグメントに進入する際 を計算することができる.次に、その車両は道路の待ち行列の最後尾に挿入される。第二に,車両は道路の待ち行列の最後尾に挿入され,最後に,道路の流出能力に応じて道路を離れます.ここで、流出速度は各道路に固有であり、容量属性で指定される。

スコアリングとリプランニングの部分では、各エージェントにとって「より良い」プランと「より悪い」プランを区別する基準を提供するために、一般化された効用様式でスコアが定式化される。再計画では、このスコアをもとに、過去の計画、すなわち特定のエージェントが行った計画をもとに、完全に新しい計画を「品種改良」する遺伝的アルゴリズム(または進化的アルゴリズムと呼ばれる)を適用する。一般に、突然変異と選択という二つの演算子が使われる。突然変異演算子は、以前に実行された計画中の特定のコンポーネントを変更し、この変更された(すなわち、突然変異)計画を次の反復に使用する。次の反復処理に採用する。
MATSimで使用できるセレクタは、使用する平衡状態によって複数種類あります。
る平衡状態によって異なる。ベストリプライセレクタは、前回の反復からベストプランを選択するものです。
MNLセレクタは、プラン選択のアプローチを離散的選択の方法で適用し、エージェントの行動における以下の確率を考慮する。エージェントの行動には確率がある。

MATSim OSS & フリー Google Scholar(GS) 5750
http://bin.t.u-tokyo.ac.jp/kaken/pdf/2014_wakabayashi1.pdf
インプットデータ
・1日のスケジュール
・道路ネットワーク
・モデルのパラメータ
2. 1日のスケジュール効用を計算
𝑈𝑎𝑐𝑡 : 活動の効用 𝑈𝑡𝑟𝑎𝑣𝑒𝑙 : 移動の効用 𝑖:1回の活動
1. シミュレーションの実行
3. プランの変更
・出発時刻
・交通手段
・経路
・目的地
・駐車場
1~3を効用(Score)が収束するまで繰り返す
https://progsoft.net/ja/software/matsim

MATSimは、Javaで実装されたアクティビティベースの拡張可能なマルチエージェントシミュレーションフレームワークです。
これはオープンソースであり、インターネットからダウンロードできます(MATSim、2016; GitHub、2015)。
フレームワークは大規模なシナリオ向けに設計されています。つまり、対象となる機能を効率的に処理するために、すべてのモデルの機能が取り除かれています。
並列化も非常に重要です(例:Dobler and Axhausen、2011; Charypar、2008)。 たとえば、ネットワーク負荷シミュレーションの場合、キューベースのモデルが実装され、非常に複雑で計算コストの高い自動車追従動作が省略されます(セクション1.3を参照)。
現時点では、MATSimは、アクティビティベースのモデルの分析の一般的な単位である1日をモデル化するように設計されています(たとえば、Bowmanによるレビュー、2009aを参照)。
それにもかかわらず、原則として、複数日モデルを実装することができます(Horni and Axhausen、2012年)。

SUMO OSS & フリー 交差点解析などに使われている様子  GS 35700
https://kudzuyu.github.io/SUMO-wiki-ja/SUMO_at_a_Glance/

  • シミュレーション
    • 連続空間かつ離散時間での車の動き
    • 複数の自動車の種類
    • 車線変更のある複数車線道路
    • 異なった右側通行ルールや信号
    • 高速なopenGL GUI
    • 数万単位の枝(道路)を含むネットワークの制御
    • 高速起動(1GHzマシンにおいて10万台までの車を1秒以内に更新)
    • 起動中の他のアプリケーションとの相互利用性
    • ネットワーク範囲での道路、車、検知器基準の出力\
    • 人基準のマルチモーダル移動のサポート
      -

交通シミュレーションの研究をやっていることから、MATSimの調査を行っています。

もう、昨日から本当にドタバタやっているのですが、MATSimの環境構築について、記載されているドキュメントが、非常に乏しく、日本語のものはゼロと言って良いと思います。

いろいろやって、現時点で上手くいかなかったこと

> git clone https://github.com/maptic/matsim-docker.git

> docker-compose build

> docker-compose upで、"docker-compose build" は成功したのですが、"docker-compose up" は以下ようにになってしまいました。

あきらめてhttps://www.matsim.org/downloads/からアプローチしてみた

>docker run -v /opt/matsim/data/input -v /opt/matsim/data/output maptic/matsim:latest

Vscode以外のIDEは入れたくないが、IntelliJ IDEA を入れろと言われたので、入れることにする(Dockerで手早く片づけたかったが)、アプローチがさっぱり分からんので仕方ない。

「The Multi-Agent Transport Simulation MATSim」を読むことにしました。


から、C:\Users\tomoi\matsim-14.0 に展開しておきました

つぎにここから「The Multi-Agent Transport Simulation MATSim」を落してきました。

で、

の、

のこれを出せるかどうかが、勝負だと見ました。

まず、javaをインストールしました。
私は、https://adoptopenjsk.net から、64bit版WindowsJDKのZIP版をダウンロードしました。
1. Choose a Version では、OpenJDK11 を、2. Choose a JVMではHotSpotを選択、Other platformsのボタンをクリックしました。
Windows, x64, .zip でダウンロードして、C:\Program Files\Java\jdk-11.0.17+8\bin にパスを通しておきました。

:\Users\tomoi\matsim-14.0>java -jar matsim-14.0.jar を起動すると、以下の画面が表示されます。


で、先程展開した、C:\Users\tomoi\matsim-14.0のサンプルの中にあるconfig.xmlを使うと、何か計算をしているようです。

2023-01-01T00:33:27,301 INFO IOUtils:215 Resolved C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml to C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml

ただ、今のところ、エラー終了してしまうようです。

上記の問題については、https://github.com/matsim-org/matsim-code-examples/issues/736 の方に記載されていました。
内容はこんな感じでした。

残念ながら、これはまだ修正されていないバグです。GUI クラスを実行する代わりに、RunMatsim クラスを直接実行することもできます。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim
デフォルトの設定ファイルとは別の設定ファイルを使用したい場合は、コマンドが変わります。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim /path/to/your/config.xml となります。

こんにちは、私は同じエラーに遭遇し、それはWindowsにリンクされているように見えた。このバグが修正されるかどうか、またいつ修正されるか知っていますか?

Windows の MATSimGUI で AccessDeniedException が発生する matsim-org/matsim-libs#2052

matsim-org/matsim-libs#2052 にissueを作成しました。ご指摘ありがとうございました。

JDKのバージョンを確認してください。この問題は、jdk 17 以降で発生するようです。JDK11でmatsim-14.0.jarを動かしてみてください。がんばってください。

も、私、jdk11を使っているんだけどなぁ?

続きがありました。

私もJDK11を使用していますが、同じ問題に遭遇しました。なぜなら、私が知る限り、LegHistogramChartクラスはpngを保存するために適切なローカルパスを送っていますが、jfreechartはC:³³に一時ファイルを作成しようとし、パーミッション問題に遭遇しています。簡単な回避策は、<param name="createGraphs" value="false" />を追加して、グラフをオフにすることです。をconfig.xmlのcontrollerモジュールに追加することです。そうすれば問題なく実行できます。もちろん、グラフは表示されませんが、その他の出力や解析はすべて可能です。

ということのようです。

で、C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml の中をちょっくら弄ってみました。

<module name="controler">
<param name="outputDirectory" value="./output/berlin" />
<param name="firstIteration" value="0" />
<param name="lastIteration" value="0" />
<param name="createGraphs" value="false" />
</module>

の赤字の一行を追加したら、エラーで止まることはなくなりました。

さて、多分、ここ(C:\Users\tomoi\matsim-14.0\examples\berlin\output\berlin)にできているファイルを使って、シミュレーションの見える化をするのだろうと思います。


https://www.matsim.org/downloads/の

Visualization の翻訳

シミュレーションが実行されると、その出力ディレクトリに多くのファイルが作成されます。GUIには出力ディレクトリに到達するためのボタンがあることに注意してください。そのうちの1つは、いわゆるイベントファイルで、通常10回目のイテレーションごとに生成されます。0回目の繰り返しのイベントファイルは .../ITERS/it.0/...0.events.xml.gz に格納されています。これには可視化できる情報がたくさん含まれています。

MATSimの出力を視覚化する最も簡単な方法は、VIAを使うことです。エージェントの数に制限のある無料版がダウンロード可能です。VIAを起動すると、大きな黒い領域が表示されるはずです。ここがトラフィックを可視化する場所です。このエリアの左側に、上部に4つのアイコンがある小さなエリアがあります(「コントロール」)。最初のアイコン(Data Sources)をクリックします。このセクションにファイルをドラッグ&ドロップするか(例:network.xml、events.xml.gz)、下部の「+」をクリックして追加するファイルを選択できます。いずれかの方法で、まずnetwork.xmlを利用可能なデータのリストに追加し、次にevents.xml.gzを追加します。これでビジュアライザーがデータを認識し、どのようにビジュアル化するかを指示することができます。

次に、コントロールセクションの 2 番目のアイコン ("レイヤー") をクリックします。初期状態では、背景レイヤーのみが表示されています。をクリックして、表示させたいデータを選択します。読み込んだnetwork.xmlでネットワークを視覚化するよう既に提案されているはずなので、「Add」をクリックします。しばらくすると、ネットワークが可視化エリアに表示されるはずです。をもう一度クリックし、今度はレイヤーの種類として「ビークル」を選択します。event.xml.gzファイルはすでに選択されています。追加]をクリックします。イベントに依存するレイヤと同様に、レイヤタグの下部に「データを読み込む」ボタンが表示されます。これをクリックすると、イベントから車両の位置が抽出されます。


VIAというビューアについて調査中

https://simunto.com/via/download

 

2023年1月27日2022/12,江端さんの技術メモ

Posted by ebata