首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有Python脚本的PTV VISSIM COM

带有Python脚本的PTV VISSIM COM
EN

Stack Overflow用户
提问于 2019-04-25 11:22:36
回答 1查看 1.2K关注 0票数 0

我使用以下脚本在PTV Vissim的一个交叉口从链接1和链接3获取所有车辆对象。

代码语言:javascript
运行
复制
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循环。任何人,请在这方面给我一些建议。

我们将非常感谢您在这方面的帮助和指导。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 03:08:07

这一行看起来在逻辑上是错误的,尽管它不会生成错误:

对于Vehicles1中的Vehicles1:

现在,重写脚本,如下所示:

旧脚本:

遍历链接1中的每个车辆。

代码语言:javascript
运行
复制
#OLD SCRIPT
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")

#NEW SCRIPT:
for Vehicles1b in Vehicles1:
    #Get attribute vehicle. (Atime1 = Arrival Time of Vehicle at Intersection)
    ArrTime=Vehicles1b.AttValue("ATime1")
    DesSpeed = Vehicles1b.AttValue("DesSpeed")
    Current_Speed1=Vehicles1b.AttValue("Speed")```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55841353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档