2015-06-22 130 views
1

我是新來的NetLogo和編碼/一般編程,我正在編寫計算海龜之間距離的代碼。如果他們太靠近,他們需要離開,如果他們太遠,他們需要靠近。NetLogo:海龜之間的最小距離

它們不能接近1/2的補丁,也不能超過1個補丁。如果它們之間的距離不在1/2和1之間,那麼它們需要移動,直到它們在這個範圍內。

我必須鏈接他們做到這一點,或者我可以做到這一點不鏈接?

+0

首先,他們絕對不需要鏈接。查看NetLogo字典中的'distance'基元。你是在創造海龜還是在模擬過程中這樣做? – JenB

+0

我正在嘗試使用距離基元。它告訴我「集合」需要2個輸入。這就是我要求的acells [設置距離acell one-of [0.33 1.05 0.65]] – Amy

+0

我正在嘗試在設置中執行此操作,而不是在模擬過程中執行此操作。 – Amy

回答

2

既然你正在做這個設置,那麼你可以做的是讓NetLogo逐漸創建海龜,並確保每個海龜都是合適的距離。有一個合乎邏輯的問題,第一隻烏龜不應該進行距離測試,因爲沒有其他的烏龜,並且你認爲有足夠的烏龜可以適應這個距離限制的世界。

儘管如此,這裏有一些代碼(9龜)。如果你嘗試創造太多的海龜,它確實會冒無盡的循環風險。隨着海龜數量的增加,它的效率也非常低,因爲海龜會隨機放置,直到找到合適的位置,可能需要多次嘗試。

to setup 
    clear-all 
    create-turtles 1 
    repeat 8 
    [ let min-x min [xcor] of turtles - 1 
    let max-x max [xcor] of turtles + 1 
    let min-y min [ycor] of turtles - 1 
    let max-y max [ycor] of turtles + 1 
    create-turtles 1 
    [ loop 
     [ setxy random-float (max-x - min-x) + min-x random-float (max-y - min-y) + min-y 
     let close-turtles other turtles-on (patch-set patch-here neighbors) 
     let how-close distance min-one-of close-turtles [distance myself] 
     if how-close > 0.5 and how-close < 1 [stop] 
     ] 
    ] 
    ] 
end