如何确保海龟跟随前往领导者的方向并同时避开障碍物

时间:2014-10-20 15:02:02

标签: netlogo

我正在尝试将海龟设置为等于领导者的标题,同时所有海龟都必须避开障碍物(avoid_obstacles功能)。我的问题是,当我添加设置标题代码 在flock函数中:

[set heading [heading] of one-of nearby-leaders ] 

它导致我的避免障碍代码中断。如果我注释掉这段代码,请避免障碍工作。下面是我的完整代码。

to go
 set time-to-evacuate time-to-evacuate + 1
 ask turtles [check fd 0.1]
 ask turtles [avoid_obstacles fd 0.1]
 ask turtles with [pcolor = red][die] ;;turtles exit thru red door will die
 if all? turtles [ pcolor = red ]     ;; stop simulation
 [ stop ]
 tick
end

to check
 if not leader?
  [let beings-seen patches in-cone vision vision-angle with [pcolor = red] 
    ifelse any? beings-seen
     [let target one-of beings-seen face target fd 1 ]
     [flock]]

if leader? 
 [let beings-seen patches in-cone leader-vision leader-vision-angle with [pcolor = red] 
   ifelse any? beings-seen 
    [let target one-of beings-seen face target fd 1 ] 
    [flock]]

end

to flock
 let nearby-leaders turtles with [leader? ]
 if any?  nearby-leaders in-radius vision
 [ set heading [heading] of one-of nearby-leaders ]
end

to avoid_obstacles ;; all obstacles set as green patches
 let i 1
 while [[pcolor] of patch-ahead i != green and i <= vision]
 [set i (i + 1) ]
  if ([pcolor] of patch-ahead i = green)
   [
    ifelse [pcolor] of patch-at-heading-and-distance (heading - 20) i + 1 = green
    [
        ifelse [pcolor] of patch-at-heading-and-distance (heading + 20) i + 1 = green
        [ 
            ifelse random 1 = 0
            [ rt 30 ]
            [ lt 30 ]
        ]
        [ rt 60 ]
    ]
    [lt 60]
   ]
 end 

有人可以指出我的代码有什么问题

1 个答案:

答案 0 :(得分:1)

首先,考虑放弃拥有“领导者”的概念。在人群逃离恐慌的情况下,他们不会停止并举行选举。大声笑。我不知道你的模型试图建模,所以我在这里没有建议。我的模特“

无论如何,你的“追随者”需要做的是融入欲望,与领导者一样的愿望,以及避免障碍的愿望。

首先,追随者只需要一个地方来记住“所需”的方向。因此,不是直接设置标题,而是存储领导者的标题。然后你可以使用该标题影响围绕障碍物的运动.j

对于第二个问题,避免障碍本身就是一个复杂的讨论。无论你把它放在一起,你需要对它进行修改,以便将“期望的”标题考虑在内,同时仍然有效地避开障碍物。这可能很难做到。

我的模型“归巢粒子2009”使用了一种方法。该模型旨在探索特定的归巢/回避行为。当粒子无法沿所需方向移动时,允许其在有限数量的其他方向上移动。

以下是链接:http://www.turtlezero.com/models/view.php?model=homing-particles_2009

除非您已将http://www.turtlezero.com添加到Configure Java控制台中允许的站点列表中(不推荐,但您可以相信我,对吧?),您将无法在浏览器中运行我的模型。我没有检查该模型需要在NetLogo 5中运行什么。

该问题的最终解决方案可能是使用路径寻找算法,如*(a-star)。

在这种情况下,您可以为您的关注者提供一个首选目的地(并且可以模糊地定义为“该'方向某处的某个点'),并且路线规划算法绘制路线。你可以让路线规划者不知道障碍物,直到它们“可见”或你所定义的任何东西为止(例如,在压制身体时,追随者可能直到偶然发现障碍物时才知道障碍物。)

希望这有帮助!