検索
連載

MATSim実践編――ドラッグ&ドロップで1万人超のエージェントを動かしてみるリタイア直前エンジニアの社会人大学漂流記(5-2)(2/4 ページ)

今回のMATSim(マルチエージェントシミュレーション)実践編では、MATSimを使うためのPC環境について説明し、事前準備や起動の手順を紹介します。その上で、私が自作した「ドラッグ&ドロップで簡単にエージェントを動かすツール」を実際に使ってみたいと思います。

Share
Tweet
LINE
Hatena

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.

ページトップに戻る