【问题标题】:NetLogo: reporters not reporting correctly by turtle breedNetLogo:记者没有按海龟品种正确报道
【发布时间】:2021-07-26 16:34:53
【问题描述】:

我有以下代码块:

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)。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 嗨!您可以在通过this 后修改您的问题吗?特别是对于“帮助他人重现问题”的关注。另外,请在编写问题时使用文本框下方的 ``` 将代码格式化为代码。这些元素将帮助您获得帮助。
  • 嗨,马特奥。是的,我会尝试相应地修改我的问题。抱歉,我对使用 stackoverflow 比较陌生。

标签: netlogo reporters


【解决方案1】:

我注意到两件事:

  1. 当您使用ifelse 时,您只需说明第一种情况的条件(在您的情况下为estado &lt; 6 or estado = 8)。相反(estado = 7)受逻辑牵连,必须从您的代码中删除。在下面的代码中,我将其保留为注释。
  2. 为了更清楚地了解发生了什么,您可以添加更多方括号。我喜欢在同一级别使用左括号和右括号,但这是一个风格问题。

正确的语法是:

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

【讨论】:

  • 感谢您的评论!抱歉,我还应该指出,在我的完整代码中,在条件语句之后,有多个语句要执行,其中:estado = 6....estado = 7...estado = 9...等。跨度>
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多