NetLogo - обмен значениями переменных по ссылкам или наборам агентов (не внутри пород)

Я строю модель NetLogo, которая пытается объяснить, как агенты находят информацию, необходимую им для принятия решения, сталкиваясь с другими агентами, когда они перемещаются в пространстве. Существует три типа агентов, каждый из которых имеет свои правила поведения и по-разному взаимодействует со своей средой. Однако все три типа агентов являются частью одной организации [Организация A].

Код ниже показывает названия породы и виды переменных, которые я использую.

breed [Implementers Implementer];; Member of Organization A
breed [IMDeployeds IMDeployed];; Member of Organization A
breed [IMremotes IMremote];; Member of Organization A
... [other breeds]
Turtles-own [exchangeinfo holdinfo inforelevant infoarray 
taskcomplexity done];; is an info exchange going to happen, does the 
turtle have info, is info relevant, and then an array
extensions [array]
globals [complete routinemeeting]

Я хочу сделать три вещи:1 и 2 Создать механизм, который соединяет IMRemotes с IMDeployeds и IMDeployeds с исполнителями. (Я уже пробовал создавать ссылки - я не уверен, что механизм делает то, что я хочу, чтобы третье действие было:) 3: Периодически проверяйте агентов, которые связаны друг с другом, чтобы перепроверить значения переменных, чтобы "информация "можно" обменять ". Код, который я имею, когда агенты находятся в одном и том же месте и может использовать "черепах здесь", приведен ниже:

ask Implementers [
ifelse any? other Implementers [have-info-same-team] [change-location]
ifelse any? IMDeployeds-here [have-info-same-team] [change-location]

end

to have-info-same-team
ifelse any? turtles-here with [holdinfo > 0] [checkarray9] [change-
location]
end

to checkarray9
ifelse any? other turtles-here with [array:item infoarray 9 > 0]
[array:set infoarray 9 1 set holdinfo 1 checkarray8][checkarray8]
end

[и т.д., проверяя каждую позицию от 9 до 0 в массиве, пока вы не получите всю новую информацию от того агента, который вам нужен]

Когда я пытаюсь попросить мои ссылки сделать что-нибудь из этого [чтобы агенты в одной и той же организации, но с разными функциями, если хотите, могли проводить целенаправленные встречи, а не полагаться на то, что они находятся в одном и том же месте друг с другом, чтобы сообщают], мне сказали, что процедура "только для черепах" или что информационный массив является переменной только для черепах.

Любая помощь или предложения с благодарностью!

1 ответ

Решение

Вместо того, чтобы просить ссылки сделать это, вы хотите спросить черепах на другом конце ссылок. Я не знаю, создали ли вы прямые или ненаправленные ссылки, но что-то вроде

ask turtle-set [other-end] of my-out-links [do something]

или же

ask my-out-links [ask other-end [do something]]

спросит черепах на другом конце ссылки на эту черепаху. (Обратите внимание, что [other-end] of my-out-links дает список черепах, а не черепахи, таким образом, использование turtle-set превратить список в черепаху. my-out-links похоже, работает как с направленными, так и с ненаправленными ссылками. См. http://ccl.northwestern.edu/netlogo/docs/dictionary.html.)

Надеюсь, это поможет, Чарльз

Другие вопросы по тегам