NetLogo: Топология: Ошибка возникает, когда черепаха достигает конца (max-pxcor) в штучной упаковке или цилиндрического мира с концами - PullRequest
0 голосов
/ 22 мая 2019

Я попытался использовать следующий синтаксис, но получил следующую ошибку:

Сообщения об ошибках: TURTLES-ON ожидал, что вводом будет агент или набор агентов, но вместо этого получил NOBODY.

На 2D-экране, когдабыло выдано сообщение об ошибке, ошибка произошла, когда черепаха достигла самой правой клетки.Если синтаксис «вперед 1», этот случай хорошо работает с нашей ошибкой.Но мне нужно использовать синтаксис «forward 1 * 0.1» с «tick-advance 0.1».

Я уже видел следующее описание, но пока не решаю его. Кто-нибудь знает хороший способ?Заранее спасибо.

https://ccl.northwestern.edu/netlogo/docs/programming.html#topology

Ниже приведен пример синтаксиса:

ask turtles with [xcor < max-pxcor][ 
if not any? turtles-on patch-ahead 1
[forward 1 * 0.1]] 

1 Ответ

2 голосов
/ 22 мая 2019

Репортер can-move?, на который ссылается ваша ссылка, является односторонним (и ссылается на другой: patch-ahead distance != nobody). В определении словаря он отмечает, что репортер сообщает true, когда черепаха может продвинуться на некоторое расстояние, не нарушая топологию, другими словами, может ли черепаха переместиться в существующий участок. Любые патчи "за гранью" мира без переноса мира не существуют, и поэтому возвращают nobody.

tick или tick-advance не должны входить в эту проблему, так как оценка patch-ahead выполняется каждой черепахой независимо от времени. Например, вот игрушечная модель, у которой вообще нет tick или tick-advance:

to setup
  ca
  crt 200 [
    move-to one-of patches with [ not any? turtles-here ]
    pd
  ]
  reset-ticks
end

to go
  let speed 1 * 0.1
  ask turtles [
    if can-move? speed and not any? other turtles-on patch-ahead speed [
      fd speed
    ]
  ]
end

Обратите внимание, что я полностью отключил окружающий мир и получил результат, подобный показанному ниже - без ошибок, и черепахи перестали двигаться либо потому, что там есть черепаха, либо потому, что они столкнулись с край света:

enter image description here

...