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

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

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

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

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


person ULM    schedule 17.04.2015    source источник


Ответы (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
person Bryan Head    schedule 18.04.2015
comment
Большое тебе спасибо! Я сделал не совсем то, что вы предлагали, но вы подали мне идею просто присвоить ссылкам значение атрибута, скажем 1, а затем установить количество ссылок на sum [ value ] of my-links: D Ура! - person ULM; 18.04.2015