MOVE-TO ожидал, что ввод будет агентом, но вместо этого получил NOBODY ошибку времени выполнения

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

Я искал ответы здесь, но я не полностью их понимаю. Использование, если есть? это часто то, что люди делают. Как я могу реализовать это здесь или что еще я могу сделать?

to set-farm-in-radius [d]
 move-to one-of patches with [not any? other patches in-radius d with 
[belongs-to !=    nobody]]
 set farm patches in-radius farm-size
 ask farm [set belongs-to myself]
 let c random 6 + 61
 ask farm [set pcolor c]
end

Я ожидал, что это сработает, потому что команда перехода к одному из патчей оказалась очень простой.

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

Seth Tisue 17.04.2019 19:38

Извинения. Я поместил это в заголовок, но теперь вижу, что это не очень ясно. Спасибо.

StiS 19.04.2019 09:36

о, ха, я пропустил это :-)

Seth Tisue 19.04.2019 15:48
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, move-to one-of patches — довольно безопасная команда, она никогда не должна давать сбоев при запуске в контексте черепахи.

Но вы делаете что-то более сложное:

move-to one-of patches with [not any? other patches in-radius d with [belongs-to != nobody]]

Таким образом, patches with [not any? other patches in-radius d with [belongs-to != nobody]] может дать набор агентов с 0 патчами. И one-of пустой набор агентов даст вам nobody.

Так что что-то вроде этого может работать лучше:

let open-patches patches with [not any? other patches in-radius d with [belongs-to != nobody]]
ifelse (any? open-patches) [
  move-to one-of open-patches
  set farm patches in-radius farm-size
  ask farm [set belongs-to myself]
  let c random 6 + 61
  ask farm [set pcolor c]
] [
  ; handle the case where there are no open patches...
]

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

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