Netlogo WITH ожидал значение true / false, но вместо этого получил 0 - PullRequest
0 голосов
/ 04 февраля 2019

Я довольно новичок в Netlogo.Я пытаюсь заставить своих черепах действовать по-разному в зависимости от их переменных, однако я получаю ошибку времени выполнения WITH, ожидающую значение true / false, но вместо этого полученную 0.

Я уже инициализирую паручерепахи по другой процедуре, поэтому не должно быть пустых наборов агентов черепах с запрошенными переменными.

  to setup-figures

    ask n-of 2 citizens
         [ get-panicked ]

    ask n-of 2 citizens
          [ get-alerted ]

    ask n-of 2 citizens
          [ calm-down ] 

  end

    to flee

    ask citizens with [ panicked? ] [

        fd 1.1
      ]

    ask citizens with [ alerted? ] [
        fd 0.6
       ]
    ask citizens with [ calm? ] [

         fd 0.5
       ]

    if [pcolor] of patch-ahead 1 = grey

      [collision-check]

end

to get-panicked

   set panicked? true
   set color red
   set mood 19

end

to get-alerted

   set alerted? true
   set color yellow
   set mood 35

end

to calm-down

   set calm? true
   set color green
   set mood 66

end

1 Ответ

0 голосов
/ 05 февраля 2019

Примитив ask будет смотреть на всех граждан, чтобы найти тех, кто (скажем) предупрежден?равно верно.Но если вы инициализируете только некоторых граждан, те, кто не инициализирован, будут предупреждены?установить его значение по умолчанию ноль.Ноль и ложь не одинаковы в NetLogo, поэтому ask душит тех граждан, чья ценность предупреждена?равен нулю, т. е. на тех, которые не были инициализированы.В начале вашей настройки вы можете поставить

ask citizens [
set panicked? false
set alerted? false
set calm? false
]

Затем вы можете попросить n-ваших граждан запаниковать и т. Д., Как вы это делаете в своем коде.

...