Попросите Черепаху оценить окрас черепах разных пород.

Я строю взаимодействия для модели «жертва-хищник».

У меня есть добыча, которая меняет цвет в зависимости от состояния, в котором она находится в данный момент. Состояние, над которым я работаю, — «скрытие», в котором добыча желтая. У меня есть хищник, который пытается оценить, может ли он преследовать добычу. Я пытаюсь сделать это, оценивая цвет добычи, но, похоже, это не работает.

to chase
  let target min-one-of prey [distance myself]
  output-print target
  ifelse target != yellow 
  [

     output-print "chase"
  ]
  [
    output-print "ignore"
  ]
end

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

Вот функция сокрытия.

to hiding
  set color yellow
  set energy (energy - 1)
  if (count predators = 0)
[
  output-print "safe"
]
end

Любая помощь будет оценена по достоинству.


person JT93    schedule 14.11.2015    source источник


Ответы (1)


чтобы получить доступ к цвету (или любой другой переменной агента), вы заключаете имя переменной в скобки и используете «of», таким образом

[color] of target

в контексте вашего кода это будет выглядеть так

 to chase
 let target nearest-of prey
 output-print target
 ifelse [color] of target != yellow 
 [

  output-print "chase"
 ]
 [
 output-print "ignore"
 ]

конец

требуется некоторое время, чтобы привыкнуть к ней, так как она сильно отличается от формы object.variable, используемой языками стиля "C".

person King-Ink    schedule 14.11.2015