1

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

  1. 代理(比如说人/人)随机分布在空间中。
  2. 节点(只是另一种代理)也随机位于空间中。
  3. 每个人定义一个目标节点。一个人应该通过导航节点移动到那个目标节点。

这就是我想要做的:

  1. 每个代理都向目标节点旋转。
  2. 每个代理都有一个视野范围,如果代理没有找到任何导航节点可以移动,则该范围将会增加。

  1. 每个代理移动到最近的导航节点,并再次开始搜索过程。

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

我的问题:

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

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

4

1 回答 1

1

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

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

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

如果他没有找到任何东西,您可以myViewArea以编程方式更改您的(请参阅Java API)

希望这可以帮助。

于 2016-06-22T06:08:42.290 回答