見出し画像

無料で使える交通流シミュレータSUMOを使ってみました。

オープンソースの交通流シミュレータSUMOを使ってみました。
openstreetmapのデータからシミュレーションネットワークを自動生成したりする機能もあるのですが、今回は手動で道路ネットワークを作成する基本的な使い方で試してみました。

1.インストール

下記のサイトからSUMOをダウンロードして、インストールします。
特に難しいことはありません。

2.道路ネットワークの作成

道路構造を定義する道路ネットワークを作成するには、”netedit”を起動します。

NETDIT起動画面

左側通行の道路構造を作成するにはProcessing→Options→ProcessingタブのLefthandにチェックを入れます。

左側通行の道路ネットワーク作成のオプション

File→NewNetworkを選択して道路ネットワークを新規に作成します。

道路ネットワークの新規作成画面

show gridのアイコンをクリックして、グリッドを表示します。
デフォルトでは100mピッチのグリッドが表示されます。

show gridアイコン

グリッドのピッチを変えるのはview settingsのbackgroundタブのToggle gridのx-spacing、y-spaceingを調整します。単位はメートルです。

view settingsアイコン
Toggle gridの設定

Network、CreateEdgeのアイコンを選択して、マウスでグリッド上に道路構造を入力します。

Network CreateEdgeのアイコン

下記のように右折レーンのある道路を設定することもできます。

入力が完了したら、ファイルを保存してください。
拡張子"net.xml"のファイルが作成されます。

3.交通需要の設定

Demandのアイコンを押し、Vehiclesのアイコンを押し、Vehiclesモードにします。

Demandアイコン Vehiclesアイコン

車種はParent vTypeで選択します。DEFAULT以外の車種を指定する場合はTypeモードで車種を作成してください。


Vehiclesのプルダウンで"Flow(from-to edges)"を選択します。
交通の発生元の道路端と流出先の道路端をマウスで指定し、VehsPerhourに時間交通量を入力します。

入力が終了したらFinish route creationボタンを押します。
これをすべての方向に対して入力を繰り返します。
Save demand element fileボタンを押し、Routeデータを名前をつけて保存します。拡張子"rou.xml"のファイルが作成されます。

4.信号現示の設定

Networkアイコンを押し、Traffic Lightのアイコンを押し、Edit Traffic Light`モードに切り替えます。

信号現示を設定したい交差点をマウスでクリックし、Traffice Light Programのcreateボタンを押します。

Phasesでフェイズごとの時間、信号の設定を入力します。入力が終わったらSaveボタンを押し、設定をxmlファイルに保存します。
信号現示の設定は拡張子"net.xml"のファイルに書き込まれます。

5.設定ファイルを作成

シミュレーションを実行するため、テキストエディタなどを使用して拡張子"sumocfg"のファイルを作成します。
下記にサンプルを示します。
inputタグの"net-file"に道路ネットワークのファイル名(拡張子"net.xml")、"route-files"に交通需要のファイル名(拡張子"rou.xml")を指定します。
timeのタグでシミュレーションの開始時間、終了時間を秒単位で指定します。

<?xml version="1.0" encoding="UTF-8"?>
<!-- generated on 2022-05-06 00:41:54 by Eclipse SUMO netedit Version 1.13.0-->
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/netconvertConfiguration.xsd">
    <input>
        <net-file value="samplenetwork.net.xml"/>
        <route-files value="route01.xml.rou.xml"/>
    </input>
    <output>
	<tripinfo-output value="tripinfo-out.xml"/>
	<queue-output value="queue-out.xml"/>
	<netstate-dump value="netstate-out.xml"/>
    </output>
    <time>
        <begin value="0"/>
        <end value="3600"/>
    </time>
    <processing>
        <ignore-route-errors value="true"/>
    </processing>
    <report>
        <verbose value="true"/>
        <duration-log.statistics value="true"/>
        <no-step-log value="true"/>
    </report>
</configuration>

6.シミュレーションの実行


sumo-guiを起動し、File-> Open Simulationを選択し、前項で作成した拡張子"sumocfg"のファイルを読み込みます。
三角の実行ボタン(?)を押すとシミュレーションが開始されます。しかし、そのままでは、PCの環境にもよると思いますが、ものすごい速さで実行されてしまいよく見えません。Delayを大きくするとでゆっくりした動きになり、車の動きを確認することができます。

Defaultでは車両が三角形に表示されてしまいます。

view setting(円グラフのようなアイコンを押す)のVehclesのShow Asで"raster images"を選択すると自動車の形で表示されるようになります。
ブレーキランプやウインカーも点灯します。

7.アウトプットファイル

シミュレーションの演算が終了するとxml形式のファイルで、シミュレーション結果が出力されます。5.で記述した拡張子"sumocfg"のファイルの”output”タグで出力するファイルを指定します。
Excelにxmlファイルをドロップすると表形式に表示することができます。

(1)tripinfo-output

車両の旅行時間の情報を出力する。
id:トリップのid
depart:出発のシミュレーション時刻
departLane:出発のレーン番号
departPos:レーンの起点からの出発位置
departSpeed:出発速度(m/s)
departDelay:出発の遅れ
arrival:到着のシミュレーション時刻
arrivalLane:到着のレーン番号
arrivalPos:レーンの起点からの到着位置
arrivalSpeed:到着速度(m/s)
duration:旅行時間(秒)
routeLength:走行距離(m)
waitingTime:待ち時間(秒)
waitingCount:待ち回数
stopTime:停止時間
timeLoss:ロス時間
rerouteNo:ルート番号
vType:車種

(2)queue-output

待ち行列の情報を出力する。
timestep:シミュレーション時刻
id           :エッジのレーン番号
queueing_time:待ち行列の合計待ち時間(秒)
queueing_length:ジャンクションから待ち行列の最後の車両までの長さ(m)
queueing_expermental:待ち行列(5km/h未満)の最後の車両までの長さ(m)

(3)netstate-dump

詳細なネットワーク情報を出力します。
time : シミュレーション時刻
id     :エッジ番号
id2   :エッジのレーン番号
id3   :車両番号
pos  :車両の位置
speed:走行速度(m/s)

8.サンプルファイル

上記で使用したサンプルファイルを下記に示します。

9.終わりに

無料で使用できる交通流シミュレーションソフトとして、以前から注目していましたが、左側通行の道路を作成しずらいものだったので、手を出していませんでした。(右側通行の道路を作ってから、別のプログラムで左側通行に変換しなければならないものでした。)
しかし、最近のバージョンアップで、かなり左側通行の道路も作りやすくなったので、試してみました。
公式のマニュアルやチュートリアルもあるのですが、交通需要の設定方法、設定ファイルの作成方法などが分かりにくく、苦労しました。
使ってみた感想ですが、基本的な機能しか試しておらず、なんともいえませんが、簡単な交通解析には使用できるのではないでしょうか?

この記事が気に入ったらサポートをしてみませんか?