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

Netlogo 如何将属性仅添加到所有修补程序中的特定修补程序?,netlogo,agent,Netlogo,Agent,我希望基于滑块的输入仅作为特定面片中的属性。例如,我试图对只选择优质草的马[代理]建模。作为补丁的输入,我有草地、农作物、贫瘠土地等的补丁。这里主要关注的是草地补丁。它已经有了可变的高(3)、中(2)和低质量草(1)。因此,我想向“仅草地”面片添加一个属性(仅草地,这一点很重要),该属性可以在设置(设置环境)进行实验期间由滑块控制 我尝试了这段代码,但它不起作用(并给我一个java堆错误) 设置饲料gis:加载数据集“Data/grass.asc” gis:应用栅格饲料草 询问补丁[如果草地=3

我希望基于滑块的输入仅作为特定面片中的属性。例如,我试图对只选择优质草的马[代理]建模。作为补丁的输入,我有草地、农作物、贫瘠土地等的补丁。这里主要关注的是草地补丁。它已经有了可变的高(3)、中(2)和低质量草(1)。因此,我想向“仅草地”面片添加一个属性(仅草地,这一点很重要),该属性可以在设置(设置环境)进行实验期间由滑块控制

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

设置饲料gis:加载数据集“Data/grass.asc”
gis:应用栅格饲料草
询问补丁[如果草地=3[设置P颜色为绿色]
如果草地=2[设置颜色为黄色]
如果grass=1[设置颜色为红色];则1为低质量
]

如果有的话?补上[grass我在这里可以想到几个可能的问题。首先,我假设
grass
是一个
patches own
变量。我没有使用过gis扩展,但我假设它正在将
grass
的值设置为1、2或3,用于某些将成为grass补丁的补丁。
grass
for all patches初始化为零,因此非草面片的
grass
将等于零。因此,当您将表达式
patches与草0和草谢谢你查尔斯,我认为你的建议揭示了问题。代码现在工作。我也增加了Netlogo的内存上限,我猜也解决了java堆空间错误的问题。你也可以考虑把你的各种补丁集合起来,比如用草(草)0和草来设置草补丁。
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 
ask patches with [grass > 0 and grass <= 3] [set modified-grass quality-of-grass]