2015-04-17 6 views
3

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

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

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

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

ответ

3

Если все, что вы хотите, это способ отслеживания ссылок на число, используйте вместо 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 
+0

спасибо! Я не сделал именно то, что вы предложили, но вы дали мне идею просто дать ссылкам атрибут «значение», скажем 1, а затем установить число ссылок на 'sum [value] моих ссылок: D Приветствия! – ULM