Anylogic道路交通图书馆变道错误
Anylogic Road Traffic Library Lane Change error
我正在尝试为公路系统建模,但出现此错误:
root.<population>[3]: Car failed to change lane (that was necessary to
continue movement) or route to the specified destination cannot be
found
完整的错误代码是:
java.lang.RuntimeException: root.<population>[3]: Car failed to
change lane (that was necessary to continue movement) or route to the
specified destination cannot be found at
com.anylogic.engine.Engine.error(Unknown Source) at
com.anylogic.engine.Agent.error(Unknown Source) at
com.anylogic.engine.Utilities.error(Unknown Source) at
com.anylogic.libraries.road.Car_xjal.error(Unknown Source) at
com.anylogic.libraries.road.Car_xjal.a(Unknown Source) at
com.anylogic.libraries.road.Car_xjal.a(Unknown Source) at
com.anylogic.libraries.road.Car_xjal.executeActionOf(Unknown Source)
at com.anylogic.engine.TransitionMessage.execute(Unknown Source)
at com.anylogic.engine.Engine.c(Unknown Source) at
com.anylogic.engine.Engine.gc(Unknown Source) at
com.anylogic.engine.Engine.a(Unknown Source) at
com.anylogic.engine.Engine$i.run(Unknown Source)
这是我的设置(space 有错误的标记屏幕截图):
它的设置方式是(逻辑截图):
也就是说,有一个Select Output
选择汽车要行驶的道路。我相信 outWayNotFound
是在汽车代理无法找到它想要移动到的路径时使用的,而我设置它的方式是如果汽车想要走任何路径但找不到它,继续它当前所在的路径。
我不确定这里的错误是什么意思,因为我想我已经在这里介绍了我的基础。我错过了什么?任何帮助将不胜感激。
Update 1
错误时RTL流程图截图:
这是一个有趣的问题,因为当您不熟悉它时,它是与道路交通库相关的常见概念问题之一。
将模型分成多个"carMoveTo"来定义道路网络中汽车的轨迹几乎总是错误的。
如果可能,您应该始终避免这样做。造成这个问题的原因有两个:
- 因为您创建的交叉路口被认为是它将首先行驶的道路的一部分。 carMoveTo3 开始认为起点是小路的起点,但由于它在不允许移动的车道上,所以它甚至无法开始移动。
- 因为当你启动一个新的carMoveTo时,如果交通量太大,这些车在十字路口时无法正确计算其他车的位置。如果有交通,这会导致汽车发生碰撞并表现不稳定。
如果你愿意,这两点都可以被认为是 AnyLogic 错误,但是创建这个道路库时认为它应该以完全不同的方式使用。 (至少我认为是)
那么正确的做法是什么?
好吧..您只需要 1 个 carMoveTo,删除 select 输出并定义汽车在 carMoveTo 之前或在 carMoveTo 本身中必须采用的路线。
并且在 carMoveTo 中,您可以定义路线不可行时的操作策略。
以下是我制作模型的方法:
在 carMoveTo 中,我会 select 道路 1 或道路 2 有 50% 的机会(这是执行您正在使用的 select 输出的正确方法)。不知道你是怎么选路的,不过你可以在那个地方定义。
最简单的解决方法是通过简单地延长进入的道路,让汽车有足够的时间切换到正确的车道:在上述情况下,只需将道路向南延伸得更远,这样汽车就有足够的时间切换到所需的车道车道.
https://www.benjamin-schumann.com/blog/2016/5/15/using-the-anylogic-road-traffic-library-for-good
我正在尝试为公路系统建模,但出现此错误:
root.<population>[3]: Car failed to change lane (that was necessary to continue movement) or route to the specified destination cannot be found
完整的错误代码是:
java.lang.RuntimeException: root.<population>[3]: Car failed to change lane (that was necessary to continue movement) or route to the specified destination cannot be found at com.anylogic.engine.Engine.error(Unknown Source) at com.anylogic.engine.Agent.error(Unknown Source) at com.anylogic.engine.Utilities.error(Unknown Source) at com.anylogic.libraries.road.Car_xjal.error(Unknown Source) at com.anylogic.libraries.road.Car_xjal.a(Unknown Source) at com.anylogic.libraries.road.Car_xjal.a(Unknown Source) at com.anylogic.libraries.road.Car_xjal.executeActionOf(Unknown Source)
at com.anylogic.engine.TransitionMessage.execute(Unknown Source)
at com.anylogic.engine.Engine.c(Unknown Source) at com.anylogic.engine.Engine.gc(Unknown Source) at com.anylogic.engine.Engine.a(Unknown Source) at com.anylogic.engine.Engine$i.run(Unknown Source)
这是我的设置(space 有错误的标记屏幕截图):
它的设置方式是(逻辑截图):
也就是说,有一个Select Output
选择汽车要行驶的道路。我相信 outWayNotFound
是在汽车代理无法找到它想要移动到的路径时使用的,而我设置它的方式是如果汽车想要走任何路径但找不到它,继续它当前所在的路径。
我不确定这里的错误是什么意思,因为我想我已经在这里介绍了我的基础。我错过了什么?任何帮助将不胜感激。
Update 1
错误时RTL流程图截图:
这是一个有趣的问题,因为当您不熟悉它时,它是与道路交通库相关的常见概念问题之一。
将模型分成多个"carMoveTo"来定义道路网络中汽车的轨迹几乎总是错误的。
如果可能,您应该始终避免这样做。造成这个问题的原因有两个:
- 因为您创建的交叉路口被认为是它将首先行驶的道路的一部分。 carMoveTo3 开始认为起点是小路的起点,但由于它在不允许移动的车道上,所以它甚至无法开始移动。
- 因为当你启动一个新的carMoveTo时,如果交通量太大,这些车在十字路口时无法正确计算其他车的位置。如果有交通,这会导致汽车发生碰撞并表现不稳定。
如果你愿意,这两点都可以被认为是 AnyLogic 错误,但是创建这个道路库时认为它应该以完全不同的方式使用。 (至少我认为是)
那么正确的做法是什么?
好吧..您只需要 1 个 carMoveTo,删除 select 输出并定义汽车在 carMoveTo 之前或在 carMoveTo 本身中必须采用的路线。
并且在 carMoveTo 中,您可以定义路线不可行时的操作策略。
以下是我制作模型的方法:
在 carMoveTo 中,我会 select 道路 1 或道路 2 有 50% 的机会(这是执行您正在使用的 select 输出的正确方法)。不知道你是怎么选路的,不过你可以在那个地方定义。
最简单的解决方法是通过简单地延长进入的道路,让汽车有足够的时间切换到正确的车道:在上述情况下,只需将道路向南延伸得更远,这样汽车就有足够的时间切换到所需的车道车道.
https://www.benjamin-schumann.com/blog/2016/5/15/using-the-anylogic-road-traffic-library-for-good