#netlogo
#netlogo
Вопрос:
Я работаю над проектом, в котором порода, называемая узлами, передает сообщения своим соседям по ссылке
Код:
ask message
[
let new-location one-of [out-link-neighbors with [hasmsg? = false]] of node-id
move-to new-location
set node-id new-location
]
Как указано выше, мы можем видеть, что сообщение [т. Е. Сообщение о черепахе породы] ищет соседей по внешней ссылке, которые никогда не получали сообщения. Как только breed: message находит такой узел, появляется переход по ссылке, который показывает, что передача сообщения завершена.
Теперь, что я хочу сделать, вместо того, чтобы перемещать сообщение в новое местоположение, я хочу скопировать сообщение в новое местоположение. Как мне это сделать, я пробовал следовать, но он генерирует новые сообщения в каждом местоположении, у которого нет соседей-соседей
ask message
[
let new-location one-of [out-link-neighbors with [hasmsg? = false]] of node-id
hatch-message 1 [move-to new-location]
set node-id new-location
]
Комментарии:
1. Хотя это не отвечает на ваш вопрос, есть ли причина, по которой ваша модель не должна просто включать отправителя-кто и получателя-кто в вашу породу сообщений? Тогда вам не нужно беспокоиться о создании копий, если только это не то, что вам нужно смоделировать.
2. Итак… недавно выведенное сообщение может попытаться переместиться в местоположение
nobody
, вызывая ошибку. Это проблема, которую вы описываете?3. Идея моей модели состоит в том, чтобы показать связь по сети между разными узлами.
4. Нет, проблема в том, что новое сообщение о штриховке должно перемещаться только к своим соседям по внешней ссылке, но оно перемещается в любом месте по сети, и новые сообщения о штриховке удваиваются каждый тик, но идея в том, что его следует копировать только при наличии соседа по внешней ссылке
5. @ParthBrahmbhatt Вы должны были присвоить каждому сообщению хотя бы одного соседа по внешней ссылке. В противном случае вы должны увидеть ошибку, которую я описал. Это объясняет, почему вы получаете удвоение сообщения. Если это правильно, удвоение будет продолжаться, если вы не разорвете ссылку после каждого перемещения.