【问题标题】:How do I create a global variable in NetLogo to monitor a specific turtle breed?如何在 NetLogo 中创建一个全局变量来监控特定的海龟品种?
【发布时间】:2021-04-21 19:26:05
【问题描述】:

我正在使用 NetLogo 创建一个年龄结构的疾病传播模型。我有多个海龟品种 - 例如,[persons1 person1][persons2 person2] 等 - 它们的疾病状态由代理变量 state 描述(例如,state 1 易感,state 2 被感染,@ 987654326@住院等)。每个品种的感染率不同,因此我创建了一个全局变量hospitalizations,我用它来监控每个时间步从感染到住院的海龟数量。例如:

ask turtles [
state 2
   if random_float 1 < lambda [
      set state 3
      set hospitalizations hospitalizations + 1
   ]
]

但是,我想为每个品种创建不同的全局变量 hospitalizations,以监控每个品种中过渡到住院的人数 - 例如,hospitalizations1 用于 persons1hospitalizations2 用于 @987654333 @等。除了为每个品种复制上面的代码行[例如,ask persons1...set hospitalizations1 hospitalizations1 + 1],还有其他方法可以在不修改ask turtles的情况下做到这一点吗?例如:set hospitalizations1 hospitalizations1 + 1 if persons1 = TRUE?

任何建议将不胜感激。谢谢。

【问题讨论】:

  • 大概你应该写一个好的流程图,整理一下全局变量的类型以及如何设置。此外,NetLogo 允许您使用 "if" 和 "ifelse" 构造,它们可以组合起来以减少全局变量的数量。此外,您可以通过着色来管理满足特定条件的海龟。这是减少全局变量数量的好方法。你怎么看?

标签: global-variables netlogo monitor


【解决方案1】:

我假设您的品种(persons1 和 persons2)具有称为状态的海龟属性,并且只要住院,状态就会保持在状态 3。如果是这种情况,那么我认为您甚至不需要全局变量hospitalizations。相反,您可以使用 count command 监控您的所有海龟或特定品种,如下所示:

;to count all breed
count turtles with [state = 3] 

;counting specific breed
count persons1 with [state = 3]
count persons2 with [state = 3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多