测量路口延迟时间

问题描述

使用道路交通图书馆,我创建了一个4路交叉路口,该路口受停车控制,我需要测量每种进场的平均延迟时间。当前,我正在使用timeMeasureStart和timeMeasureEnd块,显示汽车进入道路/模型直到离开交叉路口所花费的时间。

相反,我要测量从汽车减速到40 km / h的时间,直到它离开交叉路口为止的时间。有什么建议吗?

所有进入模型的汽车的初始速度均为60 km / hr。

解决方法

当然,没有预定义的方法,但是这种自定义方法应该可以工作:

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

最后,在您的汽车总数中添加一个统计信息,或将您的个人汽车行驶时间记录到main

,

@Benjamin感谢您为我指出正确的方向。 这是我的建议,以建议为指导。我敢肯定它可以改进,但最终它对我有用,而且我对AnyLogic的了解有限。

对于4路交叉路口,我希望每种进路都需要延迟,所以我创建了4个自定义汽车代理商,每个种群开始都是空的。 在每个代理中,我有2个变量块-var_Start和var_Slow,一个事件块设置为Timeout,Cyclic,首先在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,但是如果有后备汽车,那么新车通常会以较低的速度启动,有时已经低于40kph,因此{{1} }销毁代码。

我已经按照对应的进场方向标记了所有内容,这与我在此处使用的简化版本不同。