测量交叉口延迟时间



使用道路交通库,我创建了一个停车控制的4向交叉口,我需要测量每个引道的平均延误。目前,我使用timeMeasureStart和timeMeasureEnd块,显示汽车进入道路/模型直到离开十字路口所花费的时间。

相反,我想测量从汽车减速到40公里/小时的时间,直到它离开十字路口。有什么建议吗?

所有进入模型的汽车的初始速度为60公里/小时。

当然,没有预定义的方法,但这种自定义方法应该有效:

  • 请确保您的汽车是自定义代理类型,而不是默认汽车。让我们将其命名为My Car
  • 将变量myTimeBelow40添加到类型为double的MyCar
  • MyCar.checkSpeed中的一个事件中定期(每0.1秒?!(检查车速。使用getSpeed()函数。如果低于40 KPH,则将当前时间记录到myTimeBelow40
  • 记录你的车的出发时间:你从40公里/小时开始的时间就是差值

最后,添加您的汽车数量统计数据,或将您的个人汽车持续时间记录到main

@Benjamin感谢你为我指明了正确的方向。以下是我在建议指导下的解决方案。我相信它可以改进,但最终它对我和我对AnyLogic的有限知识起到了作用。

对于一个4向交叉口,我希望每次引道都能延迟,所以我创建了4个定制的汽车代理,每个人群都是空的。在每个代理中,我有两个变量块-var_Start和var_Slow,一个事件块设置为Timeout,Cyclic,first read at time((,并以0.1s的间隔进行。在事件操作中,我指定了以下内容:

if(getSpeed(KPH) <= 40) {
var_Slow=time();
var_Slow.suspend();
}

我主要使用直方图数据(标记为dataDelay(和显示平均值的图表来查看结果。每个路口我都有一个。

回到汽车代理,在启动时的行动:

var_Start=time();

和销毁时:

if(var_Slow = 0)
main.dataDelay.add(time()-var_Start);
else
main.dataDelay.add(time()-var_Slow);

在主要的汽车源区块,我将初始和首选速度保持在60,然而,如果有汽车倒车,新车通常会以较慢的速度启动,有时已经低于40公里/小时,因此if,else代码是销毁的。

我把所有的东西都按照相应的方法方向进行了标记,这与我这里的简化版本不同。

最新更新