【发布时间】: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 用于 persons1,hospitalizations2 用于 @987654333 @等。除了为每个品种复制上面的代码行[例如,ask persons1...set hospitalizations1 hospitalizations1 + 1],还有其他方法可以在不修改ask turtles的情况下做到这一点吗?例如:set hospitalizations1 hospitalizations1 + 1 if persons1 = TRUE?
任何建议将不胜感激。谢谢。
【问题讨论】:
-
大概你应该写一个好的流程图,整理一下全局变量的类型以及如何设置。此外,NetLogo 允许您使用 "if" 和 "ifelse" 构造,它们可以组合起来以减少全局变量的数量。此外,您可以通过着色来管理满足特定条件的海龟。这是减少全局变量数量的好方法。你怎么看?
标签: global-variables netlogo monitor