Как получить патч для подсчета проходящих через него черепах - PullRequest
1 голос
/ 28 июня 2019

Я бы хотел, чтобы патчи подсчитывали количество стоящих на них черепах.Идеальным было бы событие, такое как:

if turtle-lands-on-me [add one to count]

, потому что черепахи могут уходить, возвращаться и считаться дважды (это то, что я хочу), и это позволит избежать подсчета черепах, которые стоят на месте дважды или более(что я не хочу).Есть ли способ добиться этого?

Спасибо!

1 Ответ

3 голосов
/ 28 июня 2019

Вам нужна переменная для каждого патча (ниже я называю его «приземлился»). Следующий код предполагает, что вы хотите знать о патче, который он устанавливает на каждом временном шаге, но игнорирует те, которые он пропустил. Он также обновляет счет только в том случае, если черепаха меняет патч в соответствии с запросом, и помечает патч счетчиком.

patches-own [landed]

to setup
  create-turtles 20
  [ setxy random-xcor random-ycor
  ]
end

to go
  ask turtles
  [ let old-patch patch-here
    set heading random 360
    forward one-of [0 0.5 1 3]
    if old-patch != patch-here
    [ ask patch-here
      [ set landed landed + 1
      ]
    ]
  ]
  ask patches [set plabel landed]
end

Проблема в том, что черепаха может проходить через несколько участков в течение одного временного шага. Вы можете увидеть это в примере модели для тех черепах, которые движутся 3. Если вы также хотите их, вам нужно будет сделать что-то вроде модели «Линия взгляда» в библиотеке моделей NetLogo.

...