问题描述
to volver-a-casa
(ifelse estado < 6 or estado = 8
if donde != 1 [
move-to mi-casa
set donde 1
set nro-personas nro-personas + 1
set color color + 10
]
estado = 7 [
set nro-personas nro-personas - 1
set nro-fallecidos nro-fallecidos + 1
set nro-fallecidos1 count personas1 with [estado = 7]
set nro-fallecidos2 count personas2 with [estado = 7]
set nro-fallecidos3 count personas3 with [estado = 7]
set nro-fallecidos4 count personas4 with [estado = 7]
move-to mi-casa
set fallecidos fallecidos + 1
die
]
)
在我的传染病模型中,我有 4 个品种的海龟(personas1、personas2、 等),其中 estado 是具有 9 个不同类别或“状态”的海龟变量”。当海龟移动到不同类型的补丁(工作、学校、家庭)时,它们会过渡到不同的状态 (estado)。对于每个品种,都有一个全局报告变量 nropersonas,用于计算 estado = 7 的海龟数量。我还尝试构建单独的全局报告变量(nrofallecidos1、nrofallecidos2、等)来计算具有 estado = 7 的 按品种 的海龟数量。nropersonas 成功地计算了每个刻度处具有 estado = 7 的海龟总数,但是我的特定品种的报告变量,nrofallecidos1、nrofallecidos2 等,根本没有报告(所有报告中的海龟计数为 0)。
任何帮助将不胜感激。谢谢!
解决方法
我注意到两件事:
- 当您使用
ifelse
时,您只需说明第一种情况的条件(在您的情况下为estado < 6 or estado = 8
)。相反 (estado = 7
) 受逻辑牵连,必须从您的代码中删除。在下面的代码中,我将其保留为注释。 - 为了更清楚地了解发生了什么,您可以添加更多方括号。我喜欢在同一级别使用左括号和右括号,但这是一个风格问题。
正确的语法是:
to volver-a-casa
ifelse estado < 6 or estado = 8
[
if donde != 1
[
move-to mi-casa
set donde 1
set nro-personas nro-personas + 1
set color color + 10
]
]
[
; in this case estado is 7
set nro-personas nro-personas - 1
set nro-fallecidos nro-fallecidos + 1
set nro-fallecidos1 count personas1 with [estado = 7]
set nro-fallecidos2 count personas2 with [estado = 7]
set nro-fallecidos3 count personas3 with [estado = 7]
set nro-fallecidos4 count personas4 with [estado = 7]
move-to mi-casa
set fallecidos fallecidos + 1
die
]
end