我正在尝试将海龟设置为等于领导者的标题,同时所有海龟都必须避开障碍物(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
有人可以指出我的代码有什么问题
答案 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)。
在这种情况下,您可以为您的关注者提供一个首选目的地(并且可以模糊地定义为“该'方向某处的某个点'),并且路线规划算法绘制路线。你可以让路线规划者不知道障碍物,直到它们“可见”或你所定义的任何东西为止(例如,在压制身体时,追随者可能直到偶然发现障碍物时才知道障碍物。)
希望这有帮助!