我正在使用以下脚本在 PTV Vissim 的交叉口从链路 1 和链路 3 获取所有车辆对象。
def main():
TimeDiff = 1
DistLimit=200.00
SpeedLimit=47.00
DesiredSpeed=50
#Get All the vehicle objects on link 1 and 3.
Vehicles1= Vissim.Net.Links.ItemByKey(1).Vehs.GetAll()
Vehicles3= Vissim.Net.Links.ItemByKey(3).Vehs.GetAll()
#Iterate through every vehicle in link 1.
for Vehicles1 in Vehicles1:
#Get attribute vehicle. (Atime1 = Arrival Time of Vehicle at Intersection)
ArrTime=Vehicles1.AttValue("ATime1")
DesSpeed = Vehicles1.AttValue("DesSpeed")
Current_Speed1=Vehicles1.AttValue("Speed")
#Check if there any Vehicles on link 3.
if len(Vehicles3)>0:
#Iterate through every vehicle in link 3.
for Vehicles3 in Vehicles2:
#Get attribute of vehicles on link 3. (Atime3 = Arrival Time of Vehicle at Intersection
ArrTime3=Vehicles3.AttValue("ATime3")
DesSpeed = Vehicles3.AttValue("DesSpeed")
DistSigHead2=Vehicles3.AttValue("DistanceToSigHead")
OrgDesSpeed = Vehicles3.AttValue("OrgDesSpeed")
if (ArrTime2-ArrTime)<TimeDiff:
Current_Speed1=Vehicles3.AttValue("Speed")
newDesSpeed=Current_Speed1-2
Vehicles3.SetAttValue("DesSpeed", newDesSpeed)
if DistSigHead2 ==0:
Vehicles3.SetAttValue("DesSpeed", DesiredSpeed)
该脚本能够获取所有车辆对象并执行给定条件。但是 for 循环只会在车辆进入链路 1 或 3 时检查一次,并将其属性与另一链路上的车辆进行比较。我想检查链接 1 和 3 中每个时间步的每辆车,并比较到达时间。我想我没有正确应用 for 循环。任何人,请在这方面给我一些建议。
我们将非常感谢您在这方面的帮助和指导。谢谢。