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

问题描述 投票:0回答:1

我想在AnyLogic中实现一个连接的自动驾驶车队。因此,车辆代理能够改变其路线。我的理解是,使用标准的“MoveTo”块可以让您只通过告诉它将代理移动到哪条道路来移动车辆代理。

例如:

enter image description here

可以在road4Source中指定的任何道路上创建跟随上述块的任何车辆,然后移动到moveToRoad2块中指定的另一条道路,然后当它到达endOfRoute块时将被销毁/删除/丢弃。

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

考虑到这一点,是否可以重用MoveTo块(认为它是一种while循环),以便车辆保持在MoveTo块中,直到它到达Destination(在我的情况下是一条特定的道路)?

像这样的东西:

enter image description here

因此,在moveToRoad2的Road参数中,我可以放一些类似的东西(可能只是为了说明而错):

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

其中car.getRoad()将返回车辆想要前往的道路,如果它等于汽车的目的地那么它将进入endOfRoute区块。

编辑1

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

输出端口不能与多个输入端口连接。

那么有没有其他方法来实现我想要做的事情?

anylogic
1个回答
0
投票

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

然后你需要生成汽车将采取的道路集合...这个集合在carSource中生成...或者你可以在“循环”中进行更新。

汽车代理必须有一个以0开头的变量,并且每次退出carMoveTo时都会增加+1 ...

所以这辆车将采取的新道路是:

collection.get(car.variable)

并在carMoveTo退出时:

car.variable++;

在selectOutput中,true的条件是:

agent.variable==collection.size()

我希望这会有所帮助......但是,如果你有太多的流量,你会发现模型中存在很大的问题,因为汽车不一定能识别carMoveTo目的地之后的交通,所以你可能已经粉碎......或者可能没有......取决于不同的因素。

© www.soinside.com 2019 - 2024. All rights reserved.