使用过程建模库来处理Anylogic中的船舶航行行为

时间:2019-07-07 22:23:18

标签: anylogic

我想使用“过程建模库”来模拟船舶从一个点到另一个点的移动(因为“道路交通库”不能现实地反映船舶的移动)。

但是,我坚持定义一种速度控制方式并保持两艘船之间的安全距离。我要实现的是将每个容器(代理)的速度限制在一个阈值[MaxSpeed,MinSpeed]中,并且所有容器都应保持安全距离/时间,且容器位于前面或后面。例如,如果速度为15节的船只抓住速度为10节的船只,它将在达到所需的安全距离/时间之前将速度更改为10节。

当前,我正在考虑将代理速度设置为“源”块或“ MoveTo”块,并创建一个避免碰撞的函数。有人知道该函数的外观吗?非常感谢您有任何想法或意见,谢谢!

1 个答案:

答案 0 :(得分:0)

即使根据您的模型,可能会有一些聪明的方法来执行此操作,但我将向您展示一种通用的低效方法,以一种非常简化的方式来执行此操作,而不会减速或出现任何奇特的东西。

最好先在船前设置一个节点作为安全距离: boat with safety distance

我还添加了一个事件,该事件将检查其他船只是否离该船只本身太近...因此,在这种情况下,您可以使这样的代码每分钟运行一次,例如:

<rule name="redirect-with-lang" stopProcessing="true">
      <match url="en\/|es\/|mx\/" ignoreCase="true"/>
      <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        <add input="{HTTP_COOKIE}" pattern="langpref=\w{2}\/(\w{2});" />
        <add input="{REQUEST_URI}" pattern="^(\/es\/|\/en\/|\/mx\/).+$" />
        <add input="{C:1}" pattern="^((?!{C:2}).)*$"/>
      </conditions>
      <action type="Redirect" url="/{C:1}/{C:3}" />
    </rule>

此代码检查安全节点内是否有任何船只,如果有,则该船只将立即将其速度更改为前面的速度。

此代码丑陋且效率低下,但是如果您想要更好的东西,则需要根据自己的情况来考虑它,以便使其变得更好...但是此解决方案应该使用Process中的moveTo块来工作建模库。