代理人通过导航节点移动

时间:2016-06-21 15:28:18

标签: java anylogic

我正试图让代理人通过导航节点移动。这是我的设置:

  1. 代理商(让我们说人/人)随机进入太空。
  2. 节点(只是另一种代理)也随机进入太空。
  3. 每个人都定义一个目标节点。一个人应该通过导航节点移动到该目标节点。
  4. 这就是我想要做的事情:

    1. 每个代理向目标节点旋转。
    2. 如果代理找不到任何移动节点,则每个代理的视野范围都会增加。
      1. 每个代理移动到最近的导航节点,然后再次开始搜索过程。

      2. 当最近的导航节点是目标节点时,代理会停止。然后,代理人到了!

      3. 我的问题:

        1. 我使用以下方式设置代理的轮换:

           double r = Math.atan2( targetNode.getY() - this.getY(),
                  targetNode.getX() - this.getX());
          
           this.setRotation(r);
          
        2. 我不确定如何在Anylogic中编程视觉范围。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我在博士期间做了类似的事情。

使用视图区域的初始大小和形状向您的代理添加多边形节点对象myViewArea

然后,您可以让代理检查他是否“看到”导航节点,使用myViewArea.contains()方法并针对模型中的所有导航节点进行检查。

如果他找不到任何内容,您可以通过编程方式更改myViewArea(请参阅Java API)

希望这有帮助。