Help us understand the problem. What is going on with this article?

sumo simulator でのトレースの取り方

https://sumo.dlr.de/docs/Tutorials/Trace_File_Generation.html

を(自分に必要な部分だけ)要点だけまとめたもの。個人的なメモなので細かい話は、省略してあります。

トレースをとるには、

sumo -c myConfig.sumocfg --fcd-output sumoTrace.xml

みたいに、起動時に指定するか、sumocfgファイルに書けば良い。
(追記:よく考えたら、このトレースファイルと、以下で指定したdumpファイルやtripファイルが同じものかどうか未確認)

sumocfgファイルへの追記方法はこのページには書いていないが、以下のように output タグで指定できる(どこかに書いてあった)。dumpはすべての時刻のすべての車のログ。tripは、各車がいつ出発していつゴールしたかのログ。自分で色々計算したかったらdumpの方を使うのが良い。但し、サイズは大きくなる。

<configuration>
    <input>
        <net-file value="sim0.net.xml"/>
        <route-files value="sim0.rou.xml"/>
        <gui-settings-file value="sim0.settings.xml"/>
    </input>
    <time>
        <begin value="0"/>
        <end value="2000"/>
    </time>
    <output>
        <netstate-dump value="sim0-dump.xml" />
        <tripinfo-output value="sim0-trip.xml" />
    </output>
</configuration>

TraceExporterを使うとns2/ns3, OMNET, Shawn, and PHEMのファイルが得られるらしいが、そもそもこれらを知らないので使わない。

https://sumo.dlr.de/docs/Tools/Xml.html

には、xml2csv.py について書いてある。これを使うとトレースのxmlファイルをcsvに変換できる。この後pythonでオープンすれば、自由に解析できるので、楽。lxmlをインストールする必要あり。xsd.pyが必要。python3でないと動かない。

dumpをxml2csvすると、以下のようなCSVファイルになる。

timestep_time,edge_id,lane_id,vehicle_id,vehicle_pos,vehicle_speed
0.00,edge0111,edge0111_0,01to41.0,2.10,17.67
0.00,edge1011,edge1011_0,10to30S.0,2.10,15.64
1.00,edge0111,edge0111_0,01to41.0,19.53,17.43
1.00,edge1011,edge1011_0,10to30.0,2.10,14.31
1.00,edge1011,edge1011_0,10to30S.0,17.71,15.61

このCSVファイルを

data = np.genfromtxt(argvs[1], delimiter=',', skip_header=1, dtype=None, encoding=None)

みたいに、numpy (pandasでも良い)で読み込めば、

  • 各時刻の平均速度、平均台数
  • 各車の平均速度

みたいな計算ができる。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away