Только наблюдатель может попросить всех черепах - ошибка NetLogo - PullRequest
0 голосов
/ 11 декабря 2018

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

Только наблюдатель может задать множество всех черепах.Ошибка, пока черепаха 0 работает ASK.вызывается процедурой EXIT, вызывается процедурой Customer, GO и кнопкой «go»

to go
customer
end

to setup-turtles
create-turtles 1
ask turtles
[
set shape "person"
set size 3
set heading -90
fd 10
setxy 15 -15
set color red
]
end

to customer
ask turtles
[
set products ( products )
rt (random 360)
fd 1
if patch-here = one-of patches with
[
  pcolor = green
]
[
  set pcolor orange
  set products (products + 1)
]
if patch-here = one-of patches with
[
  pcolor = gray
]
[exit]
show count patches with
[pcolor = green ]


move-to one-of patches with
[
  pcolor = black
]

]
end



to exit
ask turtles
[
ifelse patch-here = one-of patches with
[
  pcolor = gray
]
[ifelse count products >= 2
  [
    die
  ]
  [move-to one-of patches with
    [
      pcolor = green or pcolor = black
    ]
  ]
]
  [
    die
  ]
move-to one-of patches with
  [pcolor = green
  ]

move-to one-of patches with
    [pcolor = black
    ]


  ]

end

1 Ответ

0 голосов
/ 11 декабря 2018

В вашей клиентской процедуре у вас есть

ask turtles
[ ...
  if patch-here = one-of patches with [pcolor = gray]
  [ exit ]
  ...
]

Таким образом, процедура выхода вызывается любой черепахой, которая находится на сером пятне.Каждая черепаха, которая соответствует этому условию, входит в процедуру выхода.Как только он входит в эту процедуру, первая команда (в процедуре выхода) имеет значение ask turtles.Таким образом, черепаха просит всех черепах сделать что-то.

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

...