Ошибка: вы не можете использовать% в контексте черепахи, потому что% только наблюдатель - PullRequest
0 голосов
/ 01 ноября 2019

Я знаю, что есть много вопросов (и ответов) об этой ошибке, но, к сожалению, я еще не исправил ошибку в своем коде, даже после предыдущих ответов. Я надеюсь, что вы можете помочь мне в этом. Я знаю, что что-то не работает из-за запроса one-of A, но у меня нет никакой другой идеи, как реализовать это по-другому, чтобы попросить агента создать новый объект. Сообщения об ошибках появляются, когда я вызываю процедуру create_object на ходу.
Порода A является владельцем agenda. Порода object является владельцем att1

to go
  ifelse random-float 1 < 0.5
  [ ask one-of A
     [
      ifelse empty? agenda

      [ ifelse random-float 1 < 0.5
        [create_object]  ;; this returns the error message
        [remove_object] 
      ]
     ]
   ]
[...]
end

Ошибка происходит от create_object. Это определяется следующим образом:

to create_object

  create-object 1[
          hide-turtle
          set att1 random-float 1  
          let this-post myself ; is it the same object that I am creating?
        if (condition1= TRUE)
              [set agenda fput this-post agenda] ; this should add the object in the agent A's list
         ]
end

Я не знаю, требуется ли вам больше кода. Не стесняйтесь комментировать, если вам нужна дополнительная информация.

Спасибо

1 Ответ

1 голос
/ 02 ноября 2019

Являются ли «А» и «объект» обеими видами черепах? Если это так, у вас есть черепаха (породы А), вызывающая процедуру, в которой она пытается создать черепаху (объекта породы). Однако, если вы посмотрите на словарь Netlogo, вы увидите, что create-turtles (и другие формы, такие как create-object) действительны только при использовании наблюдателем, а не при использовании черепахой.

Если вычтобы создать новую черепаху, вам нужна команда hatch. Обратите внимание, что новая заштрихованная черепаха будет иметь те же атрибуты (например, положение), что и родительская черепаха.

...