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]
]

Имейте в виду, что, поскольку это выполняется для каждой отдельной черепахи, у вас будет линейное распределение степеней. Если это то, что вы намерены, то отлично! Но это не может быть. (отредактируйте: на самом деле обдумав это, вы ни за что не сделаете, если хотите, чтобы все черепахи были связаны одной направленной связью, так что не берите в голову.)

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