Подсчет черепах после выполнения фрагмента кода - PullRequest
0 голосов
/ 18 декабря 2018

В моей модели на данный момент у меня есть монитор на Интерфейсе, который подсчитывает общее количество черепах (оленей в моем случае) на каждый тик.Возможно ли иметь другой монитор, который подсчитывает количество оленей после выполнения определенной строки кода?Например, вот фрагмент кода:

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 голосов
/ 19 декабря 2018

Я думаю, что вы можете обойтись без другой переменной 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

Конечно, в вашем случае, вместо того, чтобы обновление происходило в зависимости от количества тиков, просто имейте егопроисходит всякий раз, когда вы запускаете блок кода, который вы ищете.

...