执行一段代码后计算海龟数

时间:2018-12-18 17:49:11

标签: netlogo

当前在我的模型中,我在接口上有一个监视器,用于计算每个刻度的海龟总数(在我的情况下为鹿)。在执行特定的代码行之后,是否可能会有另一个监视器来计算鹿的数量?例如,这是一段代码:

to catch-fawns-source
let fawn-hunting-rate (fawn-harvest-rate-source)
if any? fawns-on source-patches
[ ask fawns-on source-patches [
if random-float 1.0001 < (fawn-hunting-rate)
[ set harvest (harvest + 1)
set fawn-harvest (fawn-harvest + 1)
   set source-harvest (source-harvest + 1)
 die ] ]
  ]
end

在这种情况下,这就是我要收获小鹿的地方。此代码与我的成年雄性和雌性幼鹿相同。那么,在执行该代码段(以及针对青少年和成人的其他相同代码段)之后,有没有办法专门跟踪我的人口呢?

我不确定是否需要任何Netlogo扩展名(如果有适用于此的扩展名)或是否可以通过某种方式添加另一个全局变量和完成此任务的代码行。

一如既往地感谢您的所有帮助!

1 个答案:

答案 0 :(得分:1)

我认为您可以摆脱另一个global变量的影响,而您只是经常更新它即可。对于一个非常简单的示例,请考虑以下设置:

globals [ most-recent-pop-check ]

to setup
  ca
  crt 10  
  set most-recent-pop-check count turtles
  reset-ticks
end

在这里,most-recent-pop-check仅在需要时更新,然后您可以设置监视器以显示该变量。在此示例中,该值仅每25个滴答变化一次-有关详细信息,请参见注释:

to go 
  ask turtles [
    ; Turtles may die
    if random-float 1 < 0.25 [
      die
    ]
    ; Throw in some density-dependence to control population size
    if random-float 1 < ( 0.5 * ( 1 - ( count turtles / 500 ) ) )  [
      hatch random 2 + 1
    ]

  ]
  ; If the ticks are not 0, and if the remainder after dividing
  ; the ticks by 0 is 0, update the most-recent-pop-check
  ; variable to reflect the current turtle population.
  if ticks != 0 and ticks mod 25 = 0 [ 
    set most-recent-pop-check count turtles
  ]
  tick
end

当然,就您而言,不是让更新根据滴答声的数量发生,而是让更新每次运行您要执行的代码块时就发生。