道路交通图书馆 - MoveTo 块 - while 循环?

Road Traffic Library - MoveTo block - while loop?

我想在 AnyLogic 中实现联网的自动车队。因此,车辆代理有能力改变其路线。我的理解是,使用标准的“MoveTo”块可以让您移动车辆代理仅一次,方法是告诉它要将代理移动到哪条路。

例如:

可以在 road4Source 中指定的任何道路上创建遵循上述块的任何车辆,然后移动到 moveToRoad2[=55= 中指定的另一条道路] 块然后到达 endOfRoute 块时将是 destroyed/deleted/discarded。

但是,由于车辆可以自己选择路线,所以我只知道车辆的起点目的地,并不知道确定它将采取什么路线。因此,MoveTo 块的数量理想情况下应该是动态的。

考虑到这一点,是否可以重复使用 MoveTo 块(将其视为一种 while 循环),以便车辆保持在 MoveTo 阻塞直到它到达 目的地 (在我的情况下是一条特定的道路)?

像这样:

因此,在 moveToRoad2Road 参数中,我可以输入类似的内容(可能是错误的,只是为了说明):

car.getRoad() == car.destination ? endOfRoute : car.getRoad()

其中 car.getRoad() 会 return 车辆想要去的道路,如果它等于汽车的目的地,那么它会去 endOfRoute块。

EDIT 1

我现在明白了,如果有两个连接到同一个端口,AnyLogic 会抛出一个错误:

Out端口不能连接多个In端口

那么有没有其他方法可以实现我在这里想要做的事情?

首先,这是你想要的配置:

然后您需要生成汽车将要行驶的道路集合...此集合在 carSource 中生成...或者您可以在 "loop" 中进行更新。

汽车代理必须有一个以 0 开头并在每次退出 carMoveTo 时递增 +1 的变量...

所以汽车要走的新路是:

collection.get(car.variable)

并且在 carMoveTo 退出时:

car.variable++;

在 selectOutput 中,true 的条件为:

agent.variable==collection.size()

希望对您有所帮助... 然而,如果你有太多的交通,你会在你的模型中看到大问题,因为汽车不一定会在 carMoveTo 中识别目的地后的交通所以你可能会被压碎......或者可能不会......取决于不同的因素.