首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将属性仅添加到所有修补程序中的特定修补程序中?

如何将属性仅添加到所有修补程序中的特定修补程序中?
EN

Stack Overflow用户
提问于 2020-07-24 22:50:51
回答 1查看 80关注 0票数 1

我想要一个基于滑块的输入,作为一个属性只在一个特定的补丁。例如,我试图建模的马代理只选择优质的草。作为补丁的输入,我有草,庄稼,贫瘠的土地等补丁。这里的主要焦点是草地。它已经有一个可变的高(3),中(2)和低质量的草(1)。因此,我只想向草补丁添加一个属性(只有草,这很重要),它可以在设置(设置环境)过程中由滑块控制。

我尝试了这段代码,但它不起作用(并给出了一个java堆错误)

代码语言:javascript
复制
set fodder gis:load-dataset "Data/grass.asc"
 gis:apply-raster fodder grass
 ask patches [if grass = 3 [set pcolor green]                  
              if grass = 2 [set pcolor yellow]                    
              if grass = 1 [set pcolor red]                       ;; 1 is low quality 
  ]
if any? patches with [grass <= 3] [ask patches [set modified-grass quality-of-grass]]  ;; controlled by slider 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-26 01:41:54

我能想到几个可能的问题。首先,我假设grass是一个patches-own变量。我还没有使用gis扩展,但我假设它将某些补丁的grass值设置为1、2或3,这些补丁都是草块。所有补丁的grass值都初始化为零,因此非草补丁的grass将等于零。因此,当您使用表达式patches with [grass <= 3]时,您指的不仅仅是草块,而是所有的补丁。(当然,对于非草块,您可能已经将grass设置为大于3的值,在这种情况下,这不是问题。)

其次,您说要设置modified-grass (另一个patches-own变量?)只适用于草块的滑块值。但是[ask patches [set modified-grass quality-of-grass]]所有补丁设置了grass变量,而不仅仅是草补丁。

所以,我想你真正想要的是

代码语言:javascript
复制
ask patches with [grass > 0 and grass <= 3] [set modified-grass quality-of-grass]

如果没有这样的补丁,什么也不会发生。

现在我不知道为什么这两个问题都会导致java堆错误。您确定代码中没有更早地发生这种情况吗?

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

https://stackoverflow.com/questions/63082411

复制
相关文章

相似问题

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