2014-10-09 153 views
0

我试图让一个代理(白色)在紧急情况发生时跟随领导(黑色)。问题是,如果发生紧急情况,代理商将跟随领导者,但他们彼此重叠。如何确保他们在跟随领导者时不会互相重叠。我曾尝试过在植绒中使用分离规则,但它不起作用。真的需要知道如何解决这个问题。感谢您的帮助netlogo如何设置乌龟的最小间隔跟随领导

turtles-own 
[ 
leader? 
leader 
] 


to setup 
clear-all 
reset-ticks 

ask n-of population patches with [ pcolor = blue] 
[sprout 1 
[ set color white 
set size 1 
set shape "person" 
set leader? false]] 
choose-leaders 
end 

to choose-leaders 
ask n-of ((percent_of_leader/100) * population) turtles 
[ 
set leader? true 
set color black 
set size 1 
set shape "person" 
set leader self 
] 
end 

to go 
ask turtles [follow-leader] 
tick 
end 

to follow-leader 
if not leader? [ 
let nearby-leaders turtles with [leader? and distance myself < 3] 
if any? nearby-leaders 
[ set heading (towards min-one-of nearby-leaders [distance myself]) - random minimum-separation +   random minimum-separation 
]] 
end 
+0

要获得帮助,您需要发布关于您正面临的特定编码挑战的具体问题 - 而不仅仅是对总体目标的广泛描述。只有给出的信息,我们除了“为它付出!”之外没有太多的东西可以说,而当你被困住时,向我们展示你的代码并解释你在进行下一步时的确切困难。 – 2014-10-10 16:23:22

+0

@Seth对不起。我只是编辑了代码,我希望代码能做的是,如果有两个或更多的代理面对同一个领导,那么他们应该至少有一个补丁至少相互分离,这样他们就不会重叠。现在的问题是,当我添加代码'而其他海龟在这里[fd 1]',看起来好像他们没有跟随队列中的领导者,而是随机前进。感谢您的帮助 – juliana 2014-10-11 12:38:49

回答

0

的正确形式:

while other turtles here [fd 1] 

是:

while any? other turtles-here [fd 1] 

这不正是一个最小的分离规则。它确保乌龟将继续前进,直到它不再与其他乌龟共享一个补丁。但是如果两只龟靠近贴片边界,但是在相反两侧,那么龟可能仍然任意靠近另一只龟。尽管如此,它可能足以满足你的目的。

在NetLogo的模型库的示例模型的艺术部分,一个示例模型中,海龟沿着统一距离的领导者跟随(或多或少?不知道多么统一)。你可以看看这个模型,看看你是否认为这种方法可能适用于你的问题。

+0

我对代码做了一些更改。我添加了这个代码** [设置标题(朝向min-one-near-leaders [距离自己]) - 随机最小分隔+随机最小分隔 ]] **而不是使用此代码“而任何其他乌龟在这里[fd 1]“,但我仍然无法为每个跟随同一领导者的海龟设置最小间隔。他们仍然重叠。请帮助。 tq – juliana 2014-10-13 05:43:26

+0

你想用什么方法来保持分离?如果你有一种方法,并且你可以用英语表达这种方法,那么我可以帮你在代码中表达它。但是,如果你甚至不知道它应该如何工作,那么我也不知道。 – 2014-10-13 11:43:45

+0

我没有任何具体的方法需要使用,只要每只龟都可以保持一定的距离,应该足够好。我想到的是,任何追随者(白龟)找到最近的领导者(黑龟),他们的标题将会改变,以跟随领导者的标题(跟随领导者想要去的地方)。如果他们是两个追随者,面对同一个领导者,他们不会相互碰撞,需要保持一定的距离。其实,这个概念和植绒行为一样,但是这次我加了领袖的规则,所以领导会引导植绒龟移动到下一个地方。谢谢您的帮助。 – juliana 2014-10-13 21:49:04