在Netlogo中设置相互减少价值的补丁

问题描述 投票:1回答:1

我正在尝试在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]] 

netlogo
1个回答
0
投票

您的距离想法将起作用,您只需要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原语,重复几次。

© www.soinside.com 2019 - 2024. All rights reserved.