Netlogo: Создание ссылок на новых соседей
Я пытаюсь создать ориентированный граф в Netlogo. Между двумя узлами должна быть только одна связь. Я использую следующий фрагмент кода:
breed [nodes node]
directed-link-breed [edges edge]
.
.
.
ask nodes
[
create-edges-to ((other nodes) with [not edge-neighbor? self])
]
Он продолжает создавать две ссылки (от и до) между узлами. В чем моя ошибка?
Заранее спасибо!
Эрик.
1 ответ
Есть две проблемы: во-первых, используя self
в контексте вы используете его в проверках, связан ли узел с самим собой. Ты хочешь myself
Вот.
Во-вторых, поскольку вы используете направленные ссылки, если A подключен к B, B считается соседом ссылки A, но не наоборот (потому что он направлен). Подумайте о link-neighbor
как, "есть ли способ добраться от черепахи A до черепахи B".
NetLogo предлагает in-link-сосед? а out-link-сосед? чтобы решить это. Так что вы можете сделать:
ask nodes [
create-edges-to other turtles with [not out-edge-neighbor? myself]
]
Имейте в виду, что, поскольку это выполняется для каждой отдельной черепахи, у вас будет линейное распределение степеней. Если это то, что вы намерены, то отлично! Но это не может быть. (отредактируйте: на самом деле обдумав это, вы ни за что не сделаете, если хотите, чтобы все черепахи были связаны одной направленной связью, так что не берите в голову.)