我想要一个基于滑块的输入,作为一个属性只在一个特定的补丁。例如,我试图建模的马代理只选择优质的草。作为补丁的输入,我有草,庄稼,贫瘠的土地等补丁。这里的主要焦点是草地。它已经有一个可变的高(3),中(2)和低质量的草(1)。因此,我只想向草补丁添加一个属性(只有草,这很重要),它可以在设置(设置环境)过程中由滑块控制。
我尝试了这段代码,但它不起作用(并给出了一个java堆错误)
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 发布于 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变量,而不仅仅是草补丁。
所以,我想你真正想要的是
ask patches with [grass > 0 and grass <= 3] [set modified-grass quality-of-grass]如果没有这样的补丁,什么也不会发生。
现在我不知道为什么这两个问题都会导致java堆错误。您确定代码中没有更早地发生这种情况吗?
https://stackoverflow.com/questions/63082411
复制相似问题