2014-03-01 24 views
1

我使用How to create cluster patches that do not overlap between them中的代碼構建修補程序,如下面的第一幅圖所示。在大空間尺度下構建修補程序簇

下面是代碼:

to make-cluster 
loop [ 
let cluster [patches in-radius (2 + random-float 2)] of one-of patches 
if all? (patch-set [neighbors] of cluster) [pcolor = black] [ 
    ask cluster [ set pcolor green ] 
    stop ] ] 

clear-all repeat 20 [ make-cluster ] 

enter image description here

當我在一個大的空間範圍使用此代碼(即1000×1000補丁與貼片尺寸= 1個像素),綠色補丁是像圓圈(見下面的第二張圖)。 enter image description here

如何獲得如第一張圖所示的補丁?

非常感謝您的幫助。

+0

你能提供一些關於你爲什麼要這麼做的信息嗎?我懷疑有一個更好的總體戰略。 –

+0

我想建立一個綠色斑塊代表森林斑塊的景觀。我發現第一個數字很有趣,可以捕捉森林斑塊(即不同形狀的森林斑塊)中的異質性,而不是矩形,圓形或方形斑塊。謝謝你的幫助。 – Marine

+0

既然你對第一個數字的拼接性沒有問題,爲什麼要增加補丁的數量呢? –

回答

1

如果你的目標是簡單地具有異質性區域(而不是專門塊狀,對稱的東西),你可能會玩弄一些這裏的答案:Creating a random shape (blob) of a given area in NetLogo

弗蘭克的解決方案,我的第一個解決方案可能會運行很慢在這個大世界上。我剛剛添加了一個解決方案,該解決方案可以擴展到您的規模。我把它放在這裏也爲了方便:

to make-blob [ area x y ] 
    let blob-maker nobody 
    crt 1 [ set blob-maker self setxy x y ] 
    let border patch-set [ patch-here ] of blob-maker 
    repeat area [ 
    ask blob-maker [ 
     ask min-one-of border [ distance myself ] [ 
     set pcolor green 
     set border (patch-set border neighbors4) with [ pcolor = black ] 
     ] 
     rt random 360 
     fd .8 
    ] 
    ] 
    ask blob-maker [ die ] 
end 

這就是說,如果你喜歡的塊效應,它往往是在一個塊狀形成大量的補丁的模型可以再製成模型以較小的情況下表現非常相似的補丁數量。例如,一種策略是縮小龜的大小和運動,以使世界對他們來說仍然相對較大。

+0

我無法運行腳本..我有一個錯誤消息:'make-blob expected 3 inputs'please,我該如何運行腳本? – maycca

+0

您需要將三個參數傳遞給'make-blob'。例如:'make-blob 20 3 4'將會產生一個由20個補丁組成的斑點,這些補丁開始在'patch 3 4'處進行。 –

+0

我一定不明白這一點,因爲在我的make blob中,讓blob-maker nobody crt 1 [set blob-maker self setxy 3 4] 讓border patch-set [patch-here] 'blob-maker ...'它仍然不起作用。 – maycca

相關問題