构建最简单的网络,让一辆汽车在上面行驶。
<nodes>
<node id="1" x="-250.0" y="0.0" />
<node id="2" x="+250.0" y="0.0" />
<node id="3" x="+251.0" y="0.0" />
nodes>
保存为 hello.nod.xml
<edges>
<edge from="1" id="1to2" to="2" />
<edge from="2" id="out" to="3" />
edges>
保存为 hello.edg.xml
生成道路网络,名称为hello.net.xml
netconvert --node-files=hello.nod.xml --edge-files=hello.edg.xml --output-file=hello.net.xml
<routes>
<vType accel="1.0" decel="5.0" id="Car" length="2.0" maxSpeed="100.0" sigma="0.0" />
<route id="route0" edges="1to2 out"/>
<vehicle depart="1" id="veh0" route="route0" type="Car" />
routes>
保存为 hello.rou.xml
其中参数 sigma 由于汽车跟随模型的使用而引入的一些随机行为
<configuration>
<input>
<net-file value="hello.net.xml"/>
<route-files value="hello.rou.xml"/>
input>
<time>
<begin value="0"/>
<end value="10000"/>
time>
configuration>
保存为 hello.sumocfg
使用命令行开始仿真
sumo -c hello.sumocfg
也可以使用 GUI
sumo-gui -c hello.sumocfg
使用 GUI 进行仿真前,你可以添加一个 gui-settings 文件,这样你在开始程序之后,就可以不必再更改设置。为了实现这些,可以像如下这样更改 hello.sumocfg
<configuration>
<input>
<net-file value="hello.net.xml"/>
<route-files value="hello.rou.xml"/>
<gui-settings-file value="hello.settings.xml"/>
input>
<time>
<begin value="0"/>
<end value="10000"/>
time>
configuration>
然后使用 viewsettings 创建一个新文件
<viewsettings>
<viewport y="0" x="250" zoom="100"/>
<delay value="100"/>
viewsettings>
保存为 hello.settings.xml
这里我们使用 viewport 来设置摄像机位置,使用 delay 来设置模拟的每一步之间的延迟(ms)。
可以将视图设置导出到一个额外的 xml 文件中,并在模拟启动时加载它。在导出时,可以选中在导出中包含延迟的复选框。要保存当前的可视化方案,请单击视图设置对话框中的保存图标,并将其保存为 autobahn.view.xml。
<configuration>
<input>
<gui-settings-file value="autobahn.view.xml"/>
input>
configuration>
每次仿真都需要一个道路网络。netconvert 用来创建可以用于 sumo 仿真的路网,netedit 提供一个图像化的用户交互界面,也可以建立或修改一个仿真路网。
首先你应该了解车辆车辆模型的基础信息。在地图中倒车入车辆有多种方法。基于你拥有的车辆信息类型来选择导入方法。
大多是导入路网的方法都存在网路质量不好的问题。
<nodes>
<node id="id_of_the_node_you_want_to_modify" type="right_before_left"/>
<nodes>
像这样对路网进行补丁
netconvert --sumo-net-file your.net.xml --node-files patch.nod.xml -o yourpatched.net.xml
或者在初始导入时执行补丁:
netconvert --osm-file yourOSMfile.xml --node-files patch.nod.xml ...
netconvert --sumo-net-file your.net.xml --plain-output-prefix yourplain
或在导入时:
netconvert --osm-files yourOSMinput.xml --plain-output-prefix yourplain ...
你会得到这些文件:
yourplain.edg.xml
yourplain.nod.xml
yourplain.con.xml
yourplain.tll.xml
你可以编辑这些文件,然后重新装配网络通过加载其中的部分或全部:
netconvert --edge-files yourplain.edg.xml --node-files yourplain.nod.xml -o new.net.xml
或
netconvert --edge-files yourplain.edg.xml --node-files yourplain.nod.xml --connection-files yourplain.con.xml -o new.net.xml
注意:
当使用基于OSM输入的网络时,.edg.xml 文件将包含边界的 OSM 类型的信息(例如highway.residential)。当使用 netconvert 加载这样的 .edg.xml 文件时,需要提供选项 --ignore-errors.edge-type。边类型或加载类型文件,以防止 Type … not defined。
在几乎所有的情况下,交通灯程序将被 netconvert 估计,并得出不同于真正的交通灯。改善红绿灯程序的一个简单方法是让它们在不同的时间启动程序周期。尝试使用选项 --tls.half-offset 和其他所有 netconvert 选项的 --tls.*
改进交通灯的一种更实用、更有效的方法是使用 tls.xml 文件显式地提供程序。
此时,netconvert 只支持创建静态红绿灯程序。
如果你有 A.net.xml 和 B.net.xml 两个路网文件,,你希望找到它们的不同之处。这可以使用