MATSim実践編――ドラッグ&ドロップで1万人超のエージェントを動かしてみる:リタイア直前エンジニアの社会人大学漂流記(5-2)(2/4 ページ)
今回のMATSim(マルチエージェントシミュレーション)実践編では、MATSimを使うためのPC環境について説明し、事前準備や起動の手順を紹介します。その上で、私が自作した「ドラッグ&ドロップで簡単にエージェントを動かすツール」を実際に使ってみたいと思います。
MATSimを動かすための「3つのファイル」
さて、ここからは前々回「MATSim実践編――「あなた」というエージェントを作って散歩させてみよう」の繰り返しになりますが、重要なことなので、もう一度説明します。
■MATSimを動かすために必要最小限の3つのファイル
MATSimを理解するためには、まず config.xml / network.xml / plans.xml という3つのファイルの内容が分かっていれば何とかなります。これらはそれぞれ、「設定」「道路」「人間」、または、「棋士」「盤面」「駒」という対応関係で捉えると分かりやすくなります。
(1)config.xml は「設定」です。
シミュレーション全体の評価基準、反復回数、挙動パラメータ、出力方法などを定義するファイルで、計算の進め方そのものを規定します。これを将棋に例えるなら、対局全体を統括する「棋士」に相当します。
(2)network.xml は「道路」です。
ノードとリンクからなる道路ネットワークが記述され、人や車の移動はこの構造の上でのみ発生します。将棋の比喩では、駒が配置され動き回る「盤面」にあたります。
(3)plans.xml は「人間」です。
個々のエージェントが持つ行動計画(活動、移動、時刻、交通手段)が記述されており、シミュレーション中に実際に動く主体そのものです。これは将棋で言えば、盤上を動く「駒」に対応します。
つまりMATSimとは、
設定(棋士)が、道路(盤面)の上で、人間(駒)を動かすことで現象を再現する仕組み
と考えれば、全体像をつかみやすくなります。
取りあえず今は、この3つのファイルをMATSimに放り込むことで、MATSimにより、実際に人間(駒)が動き出す、ということだけ覚えておいてください。
では、実際にMATSimを動かす準備の手順を示します。
事前準備(共通)
本節では、MATSimの環境構築および実行方法を示します。
本書では、Windows 11上のWSL2(Ubuntu)環境を前提とします。
その理由は前述の通り、Linux(Ubuntu)が扱いやすいためです.また、多くのPCがWindowsを前提としていることから、WindowsとLinuxを併用できる環境は、多くの利用者にとって導入・運用の負担が小さいと考えられます。
そして何より、本構成は筆者自身にとって最も扱いやすい環境であったからです。
MATSimの実行方法には以下の2通りが存在します。
- GUIルート(標準手順)
- CUIルート(代替手順)
まず、共通に必要となる環境を構築して、最初にGUIルートを説明し、その後にCUIルートを示します。
(1)WSL2(Ubuntu)の作成
WSL2(Ubuntu)の作成については、MATSim固有の内容ではないため、本節では必要最小限の手順のみを示します。
まず、Windowsの「Windowsの機能の有効化または無効化」から、以下の項目を有効化します。
- 「Windows Subsystem for Linux」
- 「仮想マシンプラットフォーム」
設定後、PCを再起動します.
次に、管理者権限でPowerShellを起動し、以下のコマンドを実行します。
$wsl --install -d Ubuntu
このコマンドにより、WSL2およびUbuntuが自動的にインストールされます。インストール完了後、初回起動時にユーザ名およびパスワードの設定が求められます。
設定が完了すると、Ubuntu のターミナルが起動し、Linux環境が利用可能になります。
(2)JavaとMavenのインストール
Ubuntuを立ち上げて、以下を実行します。
$sudo apt update $sudo apt install -y openjdk-21-jdk maven
確認:
$java -version $javac -version $mvn -version
(3)MATSim example-projectの取得
$cd ~ $git clone https://github.com/matsim-org/matsim-example-project.git $cd matsim-example-project
これで、matsim-example-project というディレクトリができて、ここにMATSimを動かす環境の準備が完成します。
MATSimの起動方法
さて、ここからは、MATSimGUIルートとCUIルートの両方の説明をします。どちらを使っても構いませんが、私の経験上、どちらかは思うように動きませんので、うまく動いた方を使ってください。
(1)GUIルート(標準手順)
これは公式が想定している基本的な使い方です。
(a)ビルド
$./mvnw clean package
または
$mvn clean package
(b)生成されるjarの注意点(重要)
ビルド後、jarファイルが2箇所に生成されますので、注意してください。
target/matsim-example-project-0.0.1-SNAPSHOT.jar ← 通常は実行不可(fat jarでないため)
matsim-example-project-0.0.1-SNAPSHOT.jar ← 実行可能(重要)
実行対象は「トップディレクトリ」のjarです。
$cd ~ $~/matsim-example-project/matsim-example-project-0.0.1-SNAPSHOT.jar
(c) GUI起動
$cd ~/matsim-example-project $java -jar matsim-example-project-0.0.1-SNAPSHOT.jar
これにより GUI が起動する。
(d) シミュレーション実行
GUI上で以下を設定:
- config ファイル:
$ scenarios/equil/config.xml
- Start MATSimボタンを押す
計算が終了したら(Outputの表示が止ったら)左上の「×」を押して終了します。
(e) 成功確認
以下が生成されれば成功:
$ cd ~/matsim-example-project/scenarios/equil/output/ $ ls output_events.xml.gz $ ls output_network.xml.gz
(2)CUIルート(代替手順)
GUIが起動しない、または不安定な場合に使用してください。
(1)実行コマンド
$ cd ~/matsim-example-project $ mvn \ -Dexec.mainClass=org.matsim.project.RunMatsim \ -Dexec.args="scenarios/equil/config.xml" exec:java
(2)動作原理
この方法では:
- Maven が依存ライブラリを解決
- クラスパスを自動構築
- RunMatsimを直接起動
つまり、jarを使わずに直接MATSimを起動します。
慣れてくると、こっちの方がラクに感じます(コマンド一発でシミュレーションを実行)
(3)成功確認
GUIルートと同様:
output/
が生成されれば成功です。
(4)GUIルートとCUIルートの違い
| 項目 | GUIルート | CUIルート |
|---|---|---|
| 実行方法 | jar起動 | Maven経由 |
| 操作 | GUI | コマンド |
| 安定性 | 環境依存あり | 高い |
| 推奨 | 初心者 | トラブル時 |
Copyright © ITmedia, Inc. All Rights Reserved.




