我正在尝试在Netlogo中设置补丁,我在其中随机分配一些(现在是我的代码中的4个),将其设置为9的高质量值(quality是我创建的补丁拥有的变量)。我已经正确编码了这一部分。
[接下来,我想创建代码,以便为所有其他色块分配一个质量值,该质量值与我已经分配的高质量色块(我现在给定的值为9)之间的距离逐渐减小。我本质上是试图在我的netlogo世界中创建补丁质量的山峰(高质量补丁)和山谷(最低质量补丁)。因此,贴片质量会在梯度范围内变化。不过,我无法弄清楚这部分。可能吗谁能提供一些有用的代码来完成这项工作?
我已添加了与补丁质量相关的绿色刻度,因此我将在视觉上能够看到补丁质量的梯度。我认为使用“ ifelse”代码是解决所有问题的好方法,但是如果补丁质量值不是已经分配给9的4个补丁之一,我将无法完成所需的代码:
to setup-patches
resize-world (number-of-patches * -1)number-of-patches (number-of-patches * -1)number-of-patches
ask n-of 4 patches
[ set quality 9
set pcolor scale-color green quality 1 10
ask patches
[ ifelse quality = 9
[ set quality 9
set pcolor scale-color green quality 1 10 ]
[ set quality 9 - distance ;;This is the part I have no idea what to code to achieve my goal. I want it to code distance from the patches that are set at a quality of 9, but I don't know how to do that
set pcolor scale-color green quality 1 10]]
您的距离想法将起作用,您只需要min-one-of
即可寻找质量为9的最近的补丁。请尝试:
to setup-patches
ask n-of 4 patches [ set quality 9 ]
ask patches with [quality != 9]
[ let closest min-one-of patches with [quality = 9] [distance myself]
set quality 9 - distance closest
if quality < 1 [ set quality 1]
]
ask patches [set pcolor scale-color green quality 12 0]
end
另一种方法是使用diffuse
原语,重复几次。