Anylogic道路交通图书馆车道变更错误

时间:2018-11-29 20:38:47

标签: anylogic

我正在尝试对公路的公路系统进行建模,但出现此错误:

  

root。<人口> [3]:汽车无法更改车道(这对于   继续移动)或到指定目的地的路线不能是   找到

完整的错误代码是:

  

java.lang.RuntimeException:根。<人口> [3]:汽车无法   更改车道(继续行驶所必需)或路线   在以下位置找不到指定的目的地   com.anylogic.engine.Engine.error(未知来源),网址为   com.anylogic.engine.Agent.error(未知来源),网址为   com.anylogic.engine.Utilities.error(未知来源),网址为   com.anylogic.libraries.road.C​​ar_xjal.error(来源未知)   com.anylogic.libraries.road.C​​ar_xjal.a(来源未知)   com.anylogic.libraries.road.C​​ar_xjal.a(来源未知)   com.anylogic.libraries.road.C​​ar_xjal.executeActionOf(未知来源)
    在com.anylogic.engine.TransitionMessage.execute(未知来源)上
    在com.anylogic.engine.Engine.c(未知来源)处   com.anylogic.engine.Engine.gc(来源未知)   com.anylogic.engine.Engine.a(来源未知)   com.anylogic.engine.Engine $ i.run(未知来源)

这是我的设置(带错误的空间标记屏幕截图):

Space markup with error

设置方式为(逻辑屏幕截图):

Road Traffic Library logic

也就是说,有一个Select Output用于选择汽车将驶向的道路。我相信outWayNotFound会在汽车代理无法找到其要移动的路径时使用,而我设置的方式是汽车想走任何路径而找不到它,只需沿当前路径继续。

我不确定错误在这里表示什么,因为我认为我已经涵盖了这里的基础。我想念什么?任何帮助将不胜感激。

  

更新1

发生错误时,RTL流程图的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:2)

这是一个有趣的问题,因为它是与道路交通图书馆不相关的常见概念问题之一。

将模型分为多个“ carMoveTo”以定义道路网络中汽车的轨迹几乎总是错误。

如果可能,应始终避免这样做。出现此问题的原因有两个:

  1. 因为您创建的交叉路口被视为道路的一部分,因此将首先走。 carMoveTo3开始认为起点是小路的起点,但是由于它位于不允许运动的车道上,所以它甚至无法开始运动。
  2. 因为启动新的carMoveTo时,如果交通过多,这些汽车将无法正确计算其他汽车在十字路口时的位置。如果交通阻塞,这会导致汽车发生碰撞和行为异常。

如果愿意,可以将两个点都视为AnyLogic错误,但是创建此路库的目的是认为应该以完全不同的方式使用它。 (至少我认为是)

那么正确的方法是什么?

好吧。您只需拥有1个carMoveTo,删除selectOutput并定义在carMoveTo之前或在carMoveTo本身中汽车必须走的路线。

在carMoveTo中,您可以定义一条策略,确定无法执行路线时的处理方式。

这是我如何制作您的模型: new Model

在carMoveTo中,我将以50%的机会选择road1或road2(这是执行您正在使用的selectOutput的正确方法)。我不知道您如何选择要走的路,但是您可以在那个地方定义。

carMoveTo

答案 1 :(得分:0)

最简单的解决方法是,通过简单地延长进入的道路,让汽车有足够的时间转向正确的车道:在上述情况下,只需将道路向南延伸,这样汽车就有足够的时间转向所需的车道。

https://www.benjamin-schumann.com/blog/2016/5/15/using-the-anylogic-road-traffic-library-for-good