метод заражения для симуляции netlo go не работает - PullRequest
1 голос
/ 27 февраля 2020

Следующий код представляет собой простую симуляцию распространения вируса. Это не работает, и я не могу понять, почему. ziek становится истинным, когда агент мутирует (это другой метод, но известно, что он работает). Агент также становится лаймом. Однако мои агенты только видоизменяются и не заразятся. Что я делаю не так?

to get-infected
  ask other turtles [
  if color = gray and turtles-here = ziek
    [set color lime 
      set ziek true]]

end

1 Ответ

2 голосов
/ 27 февраля 2020

Таким образом, turtles-here сообщает набор черепах агента на патче вызывающего абонента (вызывающим абонентом может быть другая черепаха или патч), в словаре NetLo go . Поэтому сравнение turtles-here = ziek не имеет большого смысла, если ziek равно true или false, поскольку эти значения никогда не будут одинаковыми (=) с набором агентов черепах.

Чтобы проверить, не болен ли кто-либо из набора агентов turtles-here, вам нужно использовать any? вместе с примитивами with. Я думаю, вы хотите что-то вроде этого:

to get-infected
  ask other turtles [
    if color = gray and any? turtles-here with [ziek] [
      set color lime 
      set ziek true
    ]
  ]
end

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

to go
  ; ... other go code to do turtle actions goes here
  ask turtles with [ziek] [
    infect-others
  ]
  ; ... more code here
end

to infect-others
  ask other turtles-here with [not ziek] [
    set color lime 
    set ziek true
  ]
end
...