2014-03-01 27 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

相关问题