如何在Anylogic上通过路线(而不是距离)获得时间



我正在Anylogic中开发一个模拟模型,其中有一个车队为旅行者提供拼车服务。为了确定车辆是否可以搭载某个旅行者,我有一个功能来确定他离车辆有多远,这是基于这个:;按路线获取距离​"然后我把它除以平均速度得到一个值";等待时间";(如果计算出的等待时间低于某个定义值,则车辆有权取车(。事实上,真正重要的是等待时间,而不是距离。但现在,我找不到一个计算时间而不是距离的函数。车辆的速度将取决于车辆使用的道路类型,并且完全由Anylogic在GIS地图中计算。但我不知道这个道路速度,直到车辆已经在路上行驶,理想情况下,我应该在计算中预先知道它,以确定真实的"速度";等待时间";(而不是基于计算出的距离和定义的平均速度的估计(。有人能帮忙吗?感谢您抽出时间!

您有一个方法timeToArrival()

但如果你使用moveTo块移动到目的地,那么你需要在移动开始后至少1毫秒计算这个。。。

任何时候你都可以执行agent.timeToArrival((,如果代理正在移动,那么它将返回一个非零值

车辆的速度将取决于车辆使用的道路类型,并且完全由Anylogic 在GIS地图中计算

GIS地图上的移动不会以任何方式改变相对于道路的速度;这是AnyLogic中GIS功能"缺失"的主要内容之一(即,没有速度限制的元知识或连接交通/道路工程等事物的能力(。[这将是一个重要的新功能,如果添加的话,肯定不会"只是发生",因为这意味着许多历史模型都会出错。]

我刚刚对moveTomoveToInTime进行了测试,以确保后者始终确保在指定的预期时间内到达(从一开始就设置一个固定的速度,即在给定时间内到达所需的速度(。

因此,如果使用moveTo,您总是知道潜在的到达时间:距离/速度;如果使用moveToInTime,则知道指定时间。

如果你看到了其他任何东西,我怀疑要么是一个错误,要么是你没有打印出你认为的速度(或者你自己的模型逻辑中有一些东西在动态地改变车辆的速度(。

如果您在移动发生时明确更改速度,AnyLogic将在调用timeToArrival()重新计算它。moveToInTime将不再在指定的时间内到达(因为所做的一切都是最初预设的速度;它不会"监控"移动发生时的速度(。

最新更新