Я предполагаю, что это направленные ссылки, так как между любыми двумя черепахами не может быть двух неориентированных ссылок. Следующий код не изящен, но я думаю, он сделает то, что вы хотите. Я встроил его в рабочую модель.
to test
clear-all
create-turtles 10 [fd random 10]
ask turtles [ create-links-to n-of 8 other turtles ]
ask links [set label random 100 ]
let link-list sort links
let to-die []
let remaining link-set link-list
foreach link-list [[m] ->
let opposite (link [who] of [end2] of m [who] of [end1] of m)
if opposite != nobody and member? opposite remaining [
ifelse ([label] of opposite < [label] of m) [
set to-die lput opposite to-die
]
[
set to-die lput m to-die
]
set remaining remaining with [self != m]
]
]
foreach to-die [m ->
set link-list remove m link-list
]
ask link-set to-die [die]
end
Для каждой ссылки в списке он проверяет, есть ли противоположная ссылка в наборе ссылок remaining
, изначально составленном из ссылок в список. Если это так, он помечает правильную ссылку для удаления, а затем выбирается из remaining
, чтобы при проверке противоположной ссылки она не была найдена. Как только все ссылки, которые нужно удалить, найдены, они удаляются из списка и отправляются на d ie.
Надеюсь, это поможет, Чарльз