Как изменить атрибут черепахи, если одна из ее ссылок исчезнет?

В NetLogo: предположим, что модель имеет

  1. черепаха (0) породы A с ненаправленными связями с 3 черепахами (1, 2 и 3) породы B;
  2. черепаха 0 имеет атрибут с именем "количество ссылок", равный 3.

Теперь, пусть один из 3 соседей 0 умирает..

Как я могу запрограммировать Turtle 0 на автоматическое изменение количества ссылок на 2?

1 ответ

Решение

Если все, что вам нужно, это способ отслеживать количество ссылок, используйте count my-links вместо пользовательской переменной.

В общем, наименее подверженный ошибкам способ обновления значения при изменении количества ссылок - это вычисление этого значения, когда оно вам необходимо. Для количества ссылок это просто count my-links, Для более сложных вещей, заверните их в репортер:

to-report energy-of-neighbors
  report sum [ energy ] of link-neighbors
end

Если по какой-то причине это не сработает (агентам нужно реагировать на исчезновение ссылки или вы наблюдаете серьезное, измеримое снижение производительности при вычислении на лету), вам придется самостоятельно обновлять данные по количеству ссылок. менять. Лучший способ сделать это - инкапсулировать поведение в команде:

to update-on-link-change [ link-being-removed ] ;; turtle procedure
  ; update stuff
end

а затем инкапсулируйте вещи, которые могут вызвать изменение количества ссылок (например, смерть черепахи) в командах:

to linked-agent-death ;; turtle procedure
  ask links [
    ask other-end [ update-on-link-change myself ]
  ]
  die
end
Другие вопросы по тегам