Netlogo Coding - коды IF - PullRequest
       28

Netlogo Coding - коды IF

0 голосов
/ 29 ноября 2018

вот проблема, с которой я сталкиваюсь в Netlogo.Я хочу, чтобы черепаха проверила одну из своих переменных и другую переменную другой (другой породы).основываясь на этих двух ценностях, я хочу установить награду за черепаху.Допустим, у меня есть «ученик» и «учитель» как две породы.Учащиеся могут «обманывать» (бинарный код), а учителя - «бинарный» - в зависимости от того, будут ли они обмануты и пойманы или нет, будет получена соответствующая награда.Я пытаюсь включить это с помощью следующего кода

if comply? = 1
[ 
ask students [ set gain reward1 ] 
] 

if comply? = 0 and caught? < random-float 1
[
ask students [set gain reward2 ] 
] 

if comply? = 0 and caught? > random-float 1 
[ 
ask suppliers [set gain reward3 ] 
] 
end 

усиление - это переменная, принадлежащая студенту, и поймано?переменная, принадлежащая учителю, которая представляет шансы, что учитель может поймать ученика.

Когда я запускаю модель, появляется ошибка «STUDENTS breed не владеет переменной CAUGHT? Ошибка при запуске Student1 при выполнении Caught?

Мне было интересно, если кто-то может поделиться некоторыми соображениями по этому поводу? СпасибоДеб

1 Ответ

0 голосов
/ 30 ноября 2018

У СТУДЕНТОВ породы не МОЖЕТ СОБЛЮДАТЬ?: Insight

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

breed [ students student]
breed [ teachers teacher]

students-own [ gain comply?]
teachers-own [ caught? ]

... ; initialize
to go
  ask students [ set gain 3 ]    ; this passes
  ask students [ set caught? 3 ] ; this fails
end

Важность контекста

Скорее всего, ваша проблема связана сдобавление конфликтующих переменных в процедуру для студентов.(Пример ниже)

to listen-in-class ; student procedure
  if comply? = 0 [ set gain 7 ]
  ; the comply? variable assumes a student is calling the procedure

  if gain = 3 [ set gain 4 ] 
  ; The gain variable assumes a student is calling the procedure

  if caught? = 0 [ set gain 2 ] 
  ; The caught? variable assumes a teacher is calling the procedure
end

Поскольку процедуры могут вызывать другие процедуры, каждая процедура предполагает свое окружение (контекст) из переменных / процедур.

to starting-class ; should be a student procedure
   ask student [ listen-in-class ]
   ; "ask student" assumes listen-in-class only takes global or student only variables
end

Скорее всего, это может бытьнеправильный набор переменных для процедуры был добавлен.Просит, как правило, ограничивать объем переменных в зависимости от породы.

...