2014-10-09 150 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