В моей модели я использую прямые ссылки, чтобы сохранить ценность взаимодействия каждой черепахи с другими черепахами, и каждая ссылка имеет различное значение для каждого конца ссылок, что именно то, что я хочу, и это было действительно легко реализовать, однако у меня есть производительность проблема, и моя модель не работает так быстро, как я думаю, она должна работать.
Теперь я пробую разные методы, чтобы уменьшить потребности в вычислениях. Одна из вещей, которая пришла мне в голову, - это объединить все направленные ссылки с неориентированными ссылками и присвоить значение взаимодействия end1 и end2 друг другу как атрибуты ссылок, например end1-end2-Relationship-Value и end2-end1-Relationship-Value и Frequency1 Frequency2. Эта реализация сделает мою модель немного более сложной для отладки, поскольку порядок ссылок будет намного сложнее отслеживать, и я часто использую вычисление этих значений, поэтому мне было интересно, есть ли у кого-нибудь лучший способ увеличить представление :)
Причина, по которой я подумал, что это может быть лучше, заключается в том, что это уменьшит количество ссылок до половины, другой метод - это забыть ссылки (убрать старые ссылки или ссылки с менее значимыми отношениями (незначительное значение отношения и более низкая частота отношений), но этот не является полностью совместим с настройками моей модели.
agents-own [Belongs_to My-home popularity ]
patches-own [label_ storage]
links-own[Value-Of-The-Relationship frequency]
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse any? links with [end1 = Self_Agent and End2 = Other_Agent]
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
to SeTPoPularity
set Popularity sum[Value-Of-The-Relationship] of links with [end2 = mySelf]
end
Обновление 2: я думаю, что уже нашел лучший способ (очевидный! который я должен был сделать в первую очередь) установить популярность, вместо того, чтобы называть его каждый тик, я просто могу обновить его, только если он изменилось, я даже думаю, что мне может не понадобиться Переменная под названием "популярность" каждый раз, когда она мне нужна, я просто вызываю my-in-links
* Обновление 3: *
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse out-link-neighbor? Other_Agent
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
Спасибо Сету за его комментарии
Спасибо . Марзи.