由于sumo的traci坑实在不少,本人决定将
221026 吐槽一下traci.vehicle.getNextTLS
改为
sumo traci的吐槽汇总
1、traci.vehicle.getNextTLS
https://sumo.dlr.de/pydoc/traci._vehicle.html
这个在官方文档里是这么介绍的:
getNextTLS(self, vehID)
getNextTLS(string) ->
Return list of upcoming traffic lights [(tlsID, tlsIndex, distance, state), ...]
但是!!
请看返回的第二个参数tlsIndex
是不是很容易理解成tls的index,就是每个tls对应的一个id。
实际上,它对应的是upcoming traffic lights
里面,车辆通行方向的那个id。
很坑…
另外,traci.vehicle.getNextStops
也是这个道理
2、traci
的读取速度
traci中读取和设置一般为traci.XXX.getYYY()
和traci.XXX.setYYY()
但是,这两个接口的底层实现,时间复杂度应该不是
O
(
1
)
\\{O}(1)
O(1)的,
因为,调用1次这个接口,居然要花费0.001s左右!!
也就是说,如果要对路网的一些部件属性进行遍历修改的话,这个接口将花费大量的时间
所以,traci.XXX.getYYY()
和traci.XXX.setYYY()
能不用尽量不用。
后续:看到一篇帖子,用libsumo
或许能提速
libsumo 知乎
3、公交车的until
和arrival
属性
公交时刻表文件的示例如下
<routes>
<vehicle depart="07:06:00" id="302_W0" line="302_W" route="302_W" type="bus_302">
<stop busStop="bs_17" duration="0" arrival="07:09:14" until="07:10:14"/>
<stop busStop="bs_16" duration="0" arrival="07:14:26" until="07:16:51"/>
...
</vehicle>
arrival
属性是到站时间
until
属性是出站时间
但sumo
文档中只说明了设置until
属性能让公交车在站台停靠,
而arrival
属性的说明却放在Further Schedule Attributes#
中,搞得我以为是待开发的属性,如图:
还是吃了英文不好的亏