请在以下netlogo程序中告知每步死亡率我可能做错了什么(我正在实施“Pass-Away”程序作为“GO”程序中的一步):
to Pass-Away
ask turtles [
let chances 1 - exp( -1 * mortality * ticks )
let dead-count 0
if chances >= 1 [die]
set dead-count dead-count + 1
]
end
以上代码是否正确?即使它是正确的,是否有一种经过修改或更好的替代方法,以便在它们穿越世界时实现恒定(累积)每时间步长的龟死亡率?最后,如何让变量“dead-count”报告给netlogo接口上的监视器?
答案 0 :(得分:1)
这将主要起作用,除了你的死数总是为1.但它可能不会像你想要的那样工作。你应该开始探索你所写的内容。当你感到困惑时,要做的第一件事就是把东西分成小块。第二件事是添加一些有用的视觉效果。在这种情况下,您将通过绘制您的机会表示来学到很多东西。我不得不猜测你的死亡率属性是一个随机浮点数,因为你没有这么说。以下是代码的部分修复,它提供了足够的线索来继续。您需要在界面选项卡中添加一个图表 - 请参阅https://subversion.american.edu/aisaac/notes/netlogo-basics.xhtml#core-concepts-plotting - 如果您发现print
过于笨拙的监控,您可以以相同的方式添加监视器。
globals [dead-count]
turtles-own [mortality]
to setup
ca
set dead-count 0
crt 100 [set mortality random-float 1]
reset-ticks
end
to go
ask turtles [pass-away]
print (word "dead count = " dead-count) ;easiest monitor
clear-plot ;you'll need to have added a plot
foreach sort [chances] of turtles [
[?] -> plot ?
] ;keep an eye on the largest value in this plot ... get it?
tick
end
to-report chances ;turtle proc
report 1 - exp( -1 * mortality * ticks )
end
to pass-Away ;turtle proc
if chances >= 1 [
set dead-count dead-count + 1 ;*inside* the conditional! must come first!
print (word "chances: " chances)
die
]
end