Как остановить симуляцию NetLogo

#netlogo

#netlogo

Вопрос:

Я пытаюсь создать симуляцию распространения Covid19 в течение нескольких месяцев: май и июнь Код, который я использую для создания черепах и запуска симуляции, показан ниже:

 to gh-month    
if month="May"//month is a chooser in interface tabe
[
clear-all

create-turtles 3000
[
setxy random-xcor random-ycor
set shape forma
set color blue

]
set no_infected 106
ask n-of 1 turtles  with [color = blue]
[
set infectedTurtle? True
set color red
]
set percentage(no_infected / 3000)* 100
]
if month="June"
[
  clear-all
  create-turtles 3000
  [
  setxy random-xcor random-ycor
  set shape forma
  set color blue
  ]

  set no_infected 2030
  ask n-of 1 turtles  with [color = blue]
  [
   set infectedTurtle? True
   set color red
  ]
   set percentage(no_infected / 3000)* 100
  ]
 end
 

А команды setup и go приведены ниже

     to setup
      gh-month
    end
    to go
      reset-ticks                               ;; netlogo time
      ask turtles [
      forward 0.005                      ;; moving turtles command and speed
      ]
     ask turtles with [color = red] [
     ask other turtles-here [
    if random 100 < percentage[set color red]
    ]
  ]
    set %infected (count turtles with [color = red] / count turtles) * 100
    if %infected= percentage[stop]//percentage is declared above also is a monitor in interface tab
 end
 

Мой вопрос после начала симуляции, почему для месяца «Май» остановлен на основе заданного условия (если% заражен = процент [стоп]), а для июня нет, он увеличивается до 100% и не останавливается при заданных условиях.
Спасибо всем

Ответ №1:

У вас есть базовое непонимание того, как время работает в NetLogo, поэтому есть несколько проблем. Вы также написали слишком много кода сразу. Например, просто создайте черепах и заставьте их работать, прежде чем они будут перемещаться, и заставьте их работать, прежде чем пытаться использовать разные месяцы.

NetLogo работает со счетчиком или часами. Каждый tick увеличивает счетчик. Это reset-ticks часть инициализации, потому что она устанавливает счетчик в 0 и делает его доступным. Команда tick переводит часы вперед и обычно является последней командой в процедуре, которая содержит все события, которые происходят за день (или час, или что бы ни обозначала галочка). Поэтому для процедуры go требуется команда tick , а не команда reset-ticks .