在Netlogo中累积每步死亡率模型程序

时间:2017-05-23 02:14:28

标签: netlogo

请在以下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接口上的监视器?

1 个答案:

答案 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