Подсчет черепах после выполнения фрагмента кода

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

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 (если оно применимо к этому) или я мог бы каким-то образом добавить еще одну глобальную переменную и строки кода, которые выполняют эту задачу.

Спасибо за вашу помощь, как всегда!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
43
1

Ответы 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

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

У меня небольшие проблемы с тем, чтобы эта логика работала на меня. Для простоты предположим, что я просто хочу подсчитать количество оленей в исходных патчах после того, как код, который я написал выше, был выполнен. Я попытался создать глобальную переменную под названием «fawnsource-after-gather» и поместил эту строку кода: «set fawnsource-after-gather count fawns-on source patch» после «die» в приведенном выше коде. Но монитор с «подсчетом пятен-исходников» дает те же числа, что и другой монитор с «fawnsource-after-gather». Любые идеи о том, что мне не хватает?

AmandaV 02.01.2019 19:50

@AmandaV - К сожалению, если вы не увидите больше кода вашей модели, ничего не придет в голову. Возможно, проблема с расписанием, когда вы звоните в tick? Не уверен, но не стесняйтесь обновить свой вопрос с помощью игрушечной версии вашей модели, которая воспроизводит проблему, которую вы описываете, - просто чтобы убедиться, показывает ли опубликованный мной пример кода ожидаемое поведение?

Luke C 03.01.2019 03:23

Да, ваш код обновляет размер популяции каждые 25 тиков, сделайте то, что ожидалось. Я опубликую аналогичный вопрос с игрушечной версией моей модели, и, возможно, это поможет разобраться в проблеме. Спасибо за вашу помощь!

AmandaV 03.01.2019 17:27

Другие вопросы по теме