首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Netlogo中设置值相互减小的补丁程序

在Netlogo中设置值相互减小的补丁程序
EN

Stack Overflow用户
提问于 2020-02-28 04:30:09
回答 1查看 56关注 0票数 2

我正在尝试在Netlogo中设置补丁,其中我随机分配了几个(在我的代码中到目前为止是4)作为一个高质量值9 (quality是我创建的patches-own变量)。我已经正确地编码了这一部分。

接下来,我想要创建代码,以便所有其他补丁都被分配一个质量值,该值随着与我已经分配的高质量补丁的距离而减少(我目前给出的值是9)。我本质上是在尝试在我的netlogo世界中创建补丁质量的高山(高质量补丁)和低谷(最低质量补丁)。因此,补丁质量在梯度尺度上变化。不过,这部分我搞不懂。这有可能吗?有没有人能提供一些有用的代码来实现这一点?

我已经添加了与补丁质量相关的绿色比例颜色,这样我就可以直观地看到补丁质量的梯度。我认为使用"ifelse“代码可以很好地完成这一切,但如果补丁质量值不是已经分配为9的4个补丁中的一个,我就无法完成所需的代码:

代码语言:javascript
复制
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]] 
EN

回答 1

Stack Overflow用户

发布于 2020-02-28 18:17:13

你的距离想法将会起作用,你只需要min-one-of来寻找最近的质量为9的补丁。试试这个:

代码语言:javascript
复制
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原语,重复几次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60441301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档