Sumo 中的一个车辆由三部分组成:
私有路径的一辆车:
<routes>
<vType id="type1" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
<vehicle id="0" type="type1" depart="0" color="1,0,0">
<route edges="beg middle end rend"/>
vehicle>
routes>
两辆车共用一条路径:
<routes>
<vType id="type1" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
<route id="route0" color="1,1,0" edges="beg middle end rend"/>
<vehicle id="0" type="type1" route="route0" depart="0" color="1,0,0"/>
<vehicle id="1" type="type1" route="route0" depart="0" color="0,1,0"/>
routes>
<route edges="beg middle end rend"/>
<stop busStop="station1" duration="30"/>
flow>
flow 的加载车流有3个可用属性: vehsPerHour,period,probability。三个不能同时使用,一个 flow 加载车流只能使用三者之一。
编辑 routes 时,需要注意:
在这种情况下,模拟基于出发/流量开始时网络中发现的流量条件执行最快的 routes。
<routes>
<trip id="t" depart="0" from="beg" to="end"/>
<flow id="f" begin="0" end="100" number="23" from="beg" to="end"/>
<flow id="f2" begin="0" end="100" number="23" from="beg" to="end" via="e1 e23 e7"/>
routes>
也可以让车辆离开和到达交通分配区域(TAZ)(交通小区)
<routes>
<trip id="t" depart="0" fromTaz="taz1" toTaz="taz2"/>
routes>
<additional>
<taz id="" edges=" ..." />
...
additional>
插入的车辆速度的确定,maxSpeed = MIN(speedLimit * speedFactor, vTypeMaxSpeed)
≥0
: 车辆试图用给定的速度插入,如果速度不安全,车辆的到达将会延误。random
”: 采用 0 到 maxSpeed
之间的随机速度,速度将会被调整以保证与前车的安全距离。max
”: 使用的最大速度,为了确保与前车保持安全距离,速度将会被调整。desired
”: 使用 maxSpeed。如果这个速度不安全,到达将会延迟。speedLimit
”: 使用车道的限制速度。如果这个速度不安全,到达将会延迟。使用 vType
元素定义一个车辆:
<routes>
<vType id="type1" accel="2.6" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
routes>
有了这个定义,你就可以定义车辆类型 “type1” 。上面使用的值大多数实例使用的值。
<routes>
<vType id="type1" accel="2.6" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
<vehicle id="veh1" type="type1" depart="0">
<route edges="edge1 edge2 edge3"/>
vehicle>
routes>
<routes>
<vType id="type1" length="5" maxSpeed="70" carFollowModel="Krauss" accel="2.6" decel="4.5" sigma="0.5"/>
routes>
车队中不同车辆的行驶速度是不同的。在 Sumo 中,通过使用 speedFactor 或 speedDev 属性的速度分布来建模的。
将使用以下默认速度偏差。
sumo-option --default.speeddev 可以用来设置全局的默认值。
每辆车都有一个独立的 speed factor,它与 speed limit (edge speed) 相乘确定期望的驾驶速度,speed factor 的默认值为 1.0。speed factor 为1.2的车辆比 speed limit 高20%,而 speed factor 为 0.8 的车辆则总是比 speed limit 低20%。通过如下所示设置属性 speedFactor 和 speedDev,一种类型 (type) 的所有车辆的 speed factor 可以设置为一个固定值。
<vType id="example" speedFactor="1.2" speedDev="0">
车队中不同车辆的期望行驶速度是不同的。
参数可以被指定为 “norm(mean, dev)” or “normc(mean, dev, min, max)”.
使用 speedFactor=“normc(1,0.1,0.2,2)” 将会得到一个车速分布,这个车速分布为 95% 的车辆的行驶速度在限制速度的 80% 到 120% 之间。
指定速度分布的另一种方法是为 speedFactor 和 speedDev 使用数值。
在这种情况下,speedFactor 定义了期望值,而 speedDev 定义了偏差。
当使用这种格式时,不能控制封顶,车速将总是默认为20%和200%。
在一些道路上,cars 和 trucks 可能会有不同的速度限制。
注意,给定的 type id 指的是 edge type 而不是 vehicle type 。
<type id="a" priority="3" numLanes="3" speed="38.89"/>
<restriction vClass="truck" speed="27.89"/>
type>
当用于行人时,speedFactor属性将直接应用于vType的最大速度,因为速度限制不适用于行人
如果车辆指定的 departSpeed 超过了速度限制,而它的 vType 有 speedFactor deviation > 0,则个别选择的 speed multiplier 至少足够高,以适应规定的离车速度。
length-
attribute 描述车辆本身的长度.
minGap
-attribute 描述在遇到堵塞时与前车的偏移量。
在模拟中,每辆车都需要——当忽略安全间隙时——length
+minGap
。但是只有道路的长度应该被标记为被占用
Sumo 中一辆车可以被指定为一个 “abstract vehicle class”,使用属性vClass定义。
这些 class 用于车道定义,允许/不允许某些车辆使用车道。
人们可能会想到有一条三车道的道路,其中最右边的车道可能只供“taxis”或“buses”使用。
默认的车辆类是passenger(表示普通的乘用车)。
注意
由于车辆 vClass 和道路许可之间的不匹配,路由或插入可能失败。这可以在 sumo-gui 中根据高亮 edge 诊断其权限。
emission 类代表一个特定的 emission 类。它是使用 emissionClass
attribute 定义的。
为了更好地显示交通,可以通过使用 guiShape
attribute 为车辆指定一个特定的形状来改变车辆类型的外观。已知的形状如下:
<vType id="rail">
<param key="carriageLength" value="20"/>
<param key="carriageGap" value="1"/>
<param key="locomotiveLength" value="25"/>
vType>
要选择一个汽车跟随模型,应该使用以下语法:
<vType id="idmAlternative" length="5" minGap="2" carFollowModel="IDM" tau="1.0" .../>
实现的模型遵循与 Krauß 相同的思路,即:在保持完美安全的同时,让车辆尽可能快地行驶。
在 中设置如下参数:
<vType id="myType" lcStrategic="0.5" lcCooperative="0.0"/>
在 中设置如下参数:
<vType id="ambulance" jmDriveAfterRedTime="300" jmDriveAfterRedSpeed="5.56"/>
如果车辆 type
attribute 没有被设置为它的默认值 "DEFAULT_VEHTYPE"
. 通过用这个 id 定义车辆类型 (
可以更改没有显式定义类型的车辆的默认参数。
默认车辆类型的更改需要在对该类型进行任何引用之前发生,所以基本上是在定义任何车辆或车辆类型之前。所以它应该总是在第一个路由文件的顶部。
sumo 可以在运行时从给定的 distribution 中选择它们,而不是为车辆显式地定义 routes 和vtype。为了使用这个特性,只需要将 distributions 定义如下:
<routes>
<vTypeDistribution id="typedist1">
<vType id="type1" accel="0.8" length="5" maxSpeed="70" probability="0.9"/>
<vType id="type2" accel="1.8" length="15" maxSpeed="50" probability="0.1"/>
vTypeDistribution>
routes>
<routes>
<vType id="type1" accel="0.8" length="5" maxSpeed="70" probability="0.9"/>
<vType id="type2" accel="1.8" length="15" maxSpeed="50" probability="0.1"/>
<vTypeDistribution id="typedist1" vTypes="type1 type2"/>
routes>
<routes>
<routeDistribution id="routedist1">
<route id="route0" color="1,1,0" edges="beg middle end rend" probability="0.9"/>
<route id="route1" color="1,2,0" edges="beg middle end" probability="0.1"/>
routeDistribution>
routes>
A distribution can be used just as using individual types and routes:
<routes>
<vehicle id="0" type="typedist1" route="routedist1" depart="0" color="1,0,0"/>
routes>
车辆可在规定的时间内被强制停车或等待行人,方法是将停车元素作为路线的一部分或车辆定义如下:
<routes>
<route id="route0" edges="beg middle end rend">
<stop lane="middle_0" endPos="50" duration="20"/>
route>
<vehicle id="v0" route="route0" depart="0">
<stop lane="end_0" endPos="10" until="50"/>
vehicle>
routes>
在 vehicle、route 或 vType 中,颜色被定义为红色、绿色、蓝色。
<route id="r0" color="0,255,255"/>
<type id="t0" color="0,0,255"/>
<vehicle id="v0" color="255,0,0,0"/>
默认情况下,颜色组件应该是 (0,255) 范围内的整数,但也支持其他定义:
color="0.5, 0.5, 1.0"
color="#FF0000"
color="red"
车辆设备用于建模和配置不同的方面,如 output (device.fcd)或 behavior (device. rerrouting)。
一些设备被自动的指派。加载到模拟中的每一个
都自动配备了一个重新路由设备来执行初始路由计算。
其他的设备,例如 fcd 将在 option –fcd-output 被设置时,自动分配。
为车辆类型和单个车辆分配设备的另一个 option 是使用泛型(generic)参数。这可以通过以下方式为车辆或车辆类型定义它们来实现:
<routes>
<vehicle id="v0" route="route0" depart="0">
<param key="has..device" value="true"/>
vehicle>
<vType id="t1">
<param key="has..device" value="true"/>
vType>
<vehicle id="v1" route="route0" depart="0" type="t1"/>
routes>