我正在尝试在Netlogo中设置补丁,其中我随机分配了几个(在我的代码中到目前为止是4)作为一个高质量值9 (quality是我创建的patches-own变量)。我已经正确地编码了这一部分。
接下来,我想要创建代码,以便所有其他补丁都被分配一个质量值,该值随着与我已经分配的高质量补丁的距离而减少(我目前给出的值是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]] 发布于 2020-02-28 18:17:13
你的距离想法将会起作用,你只需要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原语,重复几次。
https://stackoverflow.com/questions/60441301
复制相似问题