问题描述
我通过转机概率在Sumo中使用jtrrouter生成了车辆。我首先定义车辆流量和转弯概率,如下所示:
<routes>
<flow id="0" from="e1" begin="0" end="1200" number="180"/>
<flow id="1" from="e3" begin="0" end="1200" number="180"/>
<flow id="3" from="e5" begin="0" end="1200" number="180"/>
<flow id="4" from="e7" begin="0" end="1200" number="180"/>
</routes>
<turns>
<interval begin="0" end="1200">
<fromEdge id="e3">
<toEdge id="e6" probability="0.2"/>
<toEdge id="e8" probability="0.4"/>
<toEdge id="e2" probability="0.4"/>
</fromEdge>
<fromEdge id="e1">
<toEdge id="e4" probability="0.3"/>
<toEdge id="e6" probability="0.2"/>
<toEdge id="e8" probability="0.5"/>
</fromEdge>
<fromEdge id="e7">
<toEdge id="e2" probability="0.28"/>
<toEdge id="e4" probability="0.55"/>
<toEdge id="e6" probability="0.17"/>
</fromEdge>
<fromEdge id="e5">
<toEdge id="e8" probability="0.06"/>
<toEdge id="e2" probability="0.69"/>
<toEdge id="e4" probability="0.25"/>
</fromEdge>
</interval>
</turns>
然后它将生成如下的车辆序列:
<routes>
<vehicle id="0.0" depart="0.00" departSpeed="10">
<route edges="e1 e8"/>
</vehicle>
<vehicle id="1.0" depart="0.00" departSpeed="10">
<route edges="e3 e8"/>
</vehicle>
<vehicle id="3.0" depart="0.00" departSpeed="10">
<route edges="e5 e2"/>
</vehicle>
.
.
.
<routes>
但是,如果要使用此方法定义此类车辆的最大速度,该怎么办?我们需要在哪里包括速度。谢谢
解决方法
最大速度是车辆类型定义vType
的属性。建议您创建文件my_vType_definition.add.xml
,并在其中使用vType
创建maxSpeed
。看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<additional xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/additional_file.xsd">
<vType id="my_vtype" vClass="passenger" carFollowModel="IDM" maxSpeed="13.9" speedDev="0.1">
<!-- maxSpeed is in m/s so 13.9 ~= 50 km/h -->
</vType>
</additional>
然后,您的flow
定义可以包括以下车辆类型:
<routes>
<flow id="0" type="my_vType" from="e1" begin="0" end="1200" number="180"/>
<!-- ... -->
</routes>
带有新vType
的文件需要作为附加文件添加到您的配置文件(sumocfg)中。可能还需要使用jtrouter
或-d <FILE>
参数将其添加到--additional-files <FILE>
。
然后jtrrouter
应该以最大速度生成车辆。