NetLogo: patchy forest - 保持总面积和 blob 大小稳定且不重叠

NetLogo: patchy forest - keep total area and blob size stable and not overlap

我意识到我的问题只是对问题的轻微修改:

但我无法修改它们以满足我的需要。

我需要制作一个斑驳的森林景观。每个设置, "green" 个补丁的总面积必须相同(补丁总数的 20%、10%...)并且一个斑点的大小应该相同。 因此:blob_size = 面积 / number_blobs

我建议

to create-forests
  clear-all
  ask n-of 1 patches [ set pcolor green ]
  repeat 6 [
    ask one-of patches with [pcolor = green ] [
      ask one-of neighbors4 with [pcolor = black] [ 
        set pcolor green ]
    ]
  ]
end

应该是答案,因为 n-of 1 (number_blobs) patches 我创建了所需的 blob 数量,而 blob_size 受到 repeat 6 (blob_size) 的限制。但是,在我的简单示例中,我有一个 error ASK expected input to be an agent or agentset but got NOBODY instead. 显然是因为 one-of patches with [pcolor = green] 没有黑人邻居。

请问,如何在我的代码中包含条件 ask one-of patches with [pcolor = green ] and with min-one of neighbors4 with [pcolor = black]? 或者有什么不同的方法来做到这一点?我需要保持我的绿色补丁的总面积相同,并且补丁大小 +- 也相同,最好是它们不重叠。非常感谢!

to create-forests
  clear-all
  ask n-of 1 patches [ set pcolor green ]
  repeat 6 [
    ask one-of patches with [pcolor = green and any? neighbors4 with [ pcolor = black ] ] [
      ask one-of neighbors4 with [pcolor = black] [ 
        set pcolor green ]
    ]
  ]
end

修改为 make-blob 来自:Creating a random shape (blob) of a given area in NetLogo

  • 我的斑点仍然可以重叠,但至少每个 运行

    的总 "area" 是相同的
    to make-blob
      let total_area 500       ;  how patches I want to turn green
      repeat 5 [               ; number of blobs I want to  have
        let blob-maker nobody
        crt 1 [ set blob-maker self     
           setxy random-xcor random-ycor]  ; set random position of "blob-makers"
        repeat 10 [               ; size of one blob (number of patches of the same color close one to another)
        ask blob-maker [
           ask min-one-of patches with [ pcolor = black ] [ distance myself ] [ set pcolor green ]
      rt random 360
      fd 1
    ]
    ]
    ask blob-maker [ die ]
    ]
    end
    

导致