Если все, что вам нужно, это способ отслеживать числовые ссылки, используйте 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
person
Bryan Head
schedule
18.04.2015