無料で使える交通流シミュレータSUMOを使ってみました。
オープンソースの交通流シミュレータSUMOを使ってみました。
openstreetmapのデータからシミュレーションネットワークを自動生成したりする機能もあるのですが、今回は手動で道路ネットワークを作成する基本的な使い方で試してみました。
1.インストール
下記のサイトからSUMOをダウンロードして、インストールします。
特に難しいことはありません。
2.道路ネットワークの作成
道路構造を定義する道路ネットワークを作成するには、”netedit”を起動します。
左側通行の道路構造を作成するにはProcessing→Options→ProcessingタブのLefthandにチェックを入れます。
File→NewNetworkを選択して道路ネットワークを新規に作成します。
show gridのアイコンをクリックして、グリッドを表示します。
デフォルトでは100mピッチのグリッドが表示されます。
グリッドのピッチを変えるのはview settingsのbackgroundタブのToggle gridのx-spacing、y-spaceingを調整します。単位はメートルです。
Network、CreateEdgeのアイコンを選択して、マウスでグリッド上に道路構造を入力します。
下記のように右折レーンのある道路を設定することもできます。
入力が完了したら、ファイルを保存してください。
拡張子"net.xml"のファイルが作成されます。
3.交通需要の設定
Demandのアイコンを押し、Vehiclesのアイコンを押し、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のタグでシミュレーションの開始時間、終了時間を秒単位で指定します。また、step-lengthを追加しています。これはシミュレーションを演算する時間を秒単位で指定します。デフォルトでは1秒になっています。1秒はシミュレーションとしては、かなり荒い計算になります。ここでは0.1秒にしてみました。これを小さくすると滑らかな動きになりますが、代わりに演算に時間がかかります。
<?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"/>
<step-length value="0.01"/>
</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.終わりに
無料で使用できる交通流シミュレーションソフトとして、以前から注目していましたが、左側通行の道路を作成しずらいものだったので、手を出していませんでした。(右側通行の道路を作ってから、別のプログラムで左側通行に変換しなければならないものでした。)
しかし、最近のバージョンアップで、かなり左側通行の道路も作りやすくなったので、試してみました。
公式のマニュアルやチュートリアルもあるのですが、交通需要の設定方法、設定ファイルの作成方法などが分かりにくく、苦労しました。
使ってみた感想ですが、基本的な機能しか試しておらず、なんともいえませんが、簡単な交通解析には使用できるのではないでしょうか?