我正在尝试对公路的公路系统进行建模,但出现此错误:
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.Car_xjal.error(来源未知) com.anylogic.libraries.road.Car_xjal.a(来源未知) com.anylogic.libraries.road.Car_xjal.a(来源未知) com.anylogic.libraries.road.Car_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(未知来源)
这是我的设置(带错误的空间标记屏幕截图):
设置方式为(逻辑屏幕截图):
也就是说,有一个Select Output
用于选择汽车将驶向的道路。我相信outWayNotFound
会在汽车代理无法找到其要移动的路径时使用,而我设置的方式是汽车想走任何路径而找不到它,只需沿当前路径继续。
我不确定错误在这里表示什么,因为我认为我已经涵盖了这里的基础。我想念什么?任何帮助将不胜感激。
更新1
发生错误时,RTL流程图的屏幕截图:
答案 0 :(得分:2)
这是一个有趣的问题,因为它是与道路交通图书馆不相关的常见概念问题之一。
将模型分为多个“ carMoveTo”以定义道路网络中汽车的轨迹几乎总是错误。
如果可能,应始终避免这样做。出现此问题的原因有两个:
如果愿意,可以将两个点都视为AnyLogic错误,但是创建此路库的目的是认为应该以完全不同的方式使用它。 (至少我认为是)
那么正确的方法是什么?
好吧。您只需拥有1个carMoveTo,删除selectOutput并定义在carMoveTo之前或在carMoveTo本身中汽车必须走的路线。
在carMoveTo中,您可以定义一条策略,确定无法执行路线时的处理方式。
在carMoveTo中,我将以50%的机会选择road1或road2(这是执行您正在使用的selectOutput的正确方法)。我不知道您如何选择要走的路,但是您可以在那个地方定义。
答案 1 :(得分:0)
最简单的解决方法是,通过简单地延长进入的道路,让汽车有足够的时间转向正确的车道:在上述情况下,只需将道路向南延伸,这样汽车就有足够的时间转向所需的车道。
https://www.benjamin-schumann.com/blog/2016/5/15/using-the-anylogic-road-traffic-library-for-good