在大空间尺度上构建补丁集群

时间:2014-03-01 23:20:54

标签: netlogo

我使用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 x 1000个补丁大小= 1像素的补丁)时,绿色补丁就像圆圈(参见下面的第二幅图)。 enter image description here

如何在第一张图中显示补丁?

非常感谢你的帮助。

1 个答案:

答案 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

也就是说,如果你喜欢这种块状,那么通常情况下,块状结构中具有大量补丁的模型可以重新编写成具有较少数量的补丁的模型,其行为非常相似。例如,一种策略是缩小海龟的大小和移动,以便世界对它们来说仍然相对较大。