Поскольку вы работаете с направленной сетью, у вас не возникнет никаких проблем, если просто попросить каждую черепаху выбрать 4 других черепахи и подключиться к ним. Код для этого будет:
ask turtles
[ create-links-to n-of 4 other turtles
]
Обратите внимание, что это гораздо сложнее в ненаправленных сетях, потому что ссылки, которые они "получают", приводят к слишком большому количеству ссылок в целом. Тогда вам нужно сделать что-то вроде NetLogo Эффективный способ создания фиксированного количества ссылок
Однако это не приведет к достижению вами заявленной цели распределения степени по преференциальной привязанности (без масштаба, по Барабаси-Альберту или как вы хотите это называть). Механизм, который приводит к такому результату, состоит в том, что черепахи отбирают черепах, чтобы сделать связи с использованием взвешенного случайного отбора, с весом нормализованной степени. Вам нужно расширение rnd
, и вы получите примитив weighted-n-of
.
Я также отметил некоторые общие проблемы с вашим кодом, которые связаны с (как мне кажется) путаницей в том, как работает алгоритм преференциального вложения и / или как работает NetLogo. Примитив weighted-n-of
избавит вас от необходимости искать случайные числа и значительно упростит ваш код. Тем не менее, мне неясно, что должен делать let degrees max-n-of m turtles [count link-neighbors]
, но, похоже, создается список из четырех черепах высшей степени. Но алгоритм преимущественного присоединения позволяет создавать ссылки даже с узлами низкой степени, просто с меньшей вероятностью.