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

时间:2019-02-20 18:46:53

标签: anylogic

我想在AnyLogic中实现一个联网的自动驾驶车队。因此,车辆代理人有能力更改其路线。我的理解是,使用标准的“ MoveTo ”块,您可以通过告诉车辆代理商将其移动到什么路来只移动一次

例如:

enter image description here

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

但是,由于车辆可以自行选择路线,因此我只知道车辆的来源目的地,不确定该走什么路线。因此,理想情况下, MoveTo 块的数量应该是动态的。

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

类似这样的东西:

enter image description here

因此,在 moveToRoad2 Road 参数中,我可以输入类似内容(仅出于说明目的可能是错误的):

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

car.getRoad()将返回车辆要去的道路,如果它等于汽车的目的地,则它将走 endOfRoute 块。

  

编辑1

我现在了解,如果同一端口有两个连接,则AnyLogic将引发错误:

Out端口不能与多个In Port连接。

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

1 个答案:

答案 0 :(得分:0)

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

然后,您需要生成汽车将要行驶的道路的集合...此集合是在carSource中生成的...或者您可以在“循环”中进行更新。

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

所以汽车要走的新路是:

collection.get(car.variable)

在carMoveTo出口处:

car.variable++;

在selectOutput中,为true的条件为:

agent.variable==collection.size()

我希望这会有所帮助... 但是,如果您的车辆过多,您会在模型中看到大问题,因为汽车不一定会在carMoveTo中的目的地之后识别出车辆的通行,因此您可能会拥挤……或可能……取决于不同的因素