NetLogo: patchy forest - 保持总面积和 blob 大小稳定且不重叠
NetLogo: patchy forest - keep total area and blob size stable and not overlap
我意识到我的问题只是对问题的轻微修改:
Adding patch clusters in a landscape
How to create cluster patches that do not overlap between them
和
To build patch clusters at large spatial scales
但我无法修改它们以满足我的需要。
我需要制作一个斑驳的森林景观。每个设置, "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
导致
我意识到我的问题只是对问题的轻微修改:
Adding patch clusters in a landscape
How to create cluster patches that do not overlap between them 和
To build patch clusters at large spatial scales
但我无法修改它们以满足我的需要。
我需要制作一个斑驳的森林景观。每个设置, "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
导致