2016-04-26 55 views
2

我是这个网站和NetLogo的新手。 我试图在意大利模拟百日咳流行病,我想知道代理人生病时的年龄。NetLogo:死亡代理=丢失信息?

问题是代理商可能死亡!所以我失去了所有与死亡代理有关的数据!

有没有办法从死海龟中检索变量的值?

谢谢!

回答

1

而不是要求他们真的死于[die]命令,只是使用一个变量来说他们已经死了。你大概有一些东西跟踪他们的感染状态(如易感染,感染,恢复),所以你可以添加另一个状态(易感染,感染,恢复,死亡)。然后你可以通过如下命令获得信息:set VARNAME count turtles with [status = dead]

根据下面的注释,如果你需要从交互中排除死海龟,这可能会使你的其他代码变得困难。所以另一种选择是将其他命令添加到代码中告诉乌龟死亡的代码中。其他命令可以像增加计数器一样简单,但也可以将值添加到某个列表。

ask turtles 
    [ if ... (whatever your test is to see if the turtle dies) 
    [ set deathcounter deathcounter + 1 
     die 
    ] 
    ] 
+0

我认为,另外,他们将需要确保他们的任何现有代码有关的海龟需要排除死海龟(例如步伐命令)。当一只乌龟死亡时,它们不再处于模拟状态。这实际上可能很乏味。 – mattsap

+0

是真的,我一直在考虑过去的流行病模拟,并假设他们已经在限制事物(例如,感染只能从感染者传播到易感人群),但我会更新 – JenB

+0

我有一个模拟解决方案。我们不知道如何/如果用户限制他们的代理人集合,所以两者都可能是很好的呈现。 – mattsap

1

如果你想存储死海龟的所有变量,我会创造一个新的品种被称为尸它拥有所有相同的变量你那快要死了其他品种,而当你的品种模具设置其品种尸。 ask turtles [set breed corpse]

这是JenB的解决方案的选择,如果你没有通过身份限制你的龟命令已经(例如ask turtles [something]相比ask turtles with [status = "active"] [something]

+2

我相信,如果两个品种都具有相同的变量,那么可以简单地要求即将死去的海龟“设置品种尸体”,而不是复制正在死亡的品种的所有值。 – Charles

+0

好点!谢谢! – mattsap