Netlogo - обновление исходящих ссылок с черепахами вне сети - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно довольно быстро изучить NetLogo, поэтому я обратился за помощью.Я потратил довольно много времени, пытаясь решить эту проблему, но я думаю, что любой, кто немного опытнее, сможет помочь.

Я создаю сеть влияния для черепах, которая должна произвольно адаптироваться каждый разтак часто.Я использовал следующую команду, которая хорошо работает:

ask turtles [create-links-to n-of (S) other turtles]

Где S - общее количество черепах.Я использую ссылки, потому что одна черепаха находится под влиянием другой, но не обязательно влияет на другую.Все идет нормально.Проблема в том, что мне нужно также выполнять сетевые обновления, чтобы с 5% вероятностью черепахи настраивали свою сеть, убивая одну из ссылок и создавая новую с кем-то вне их сети.Следующие строки:

if random 101 < 5 [
  create-links-to n-of 1 other turtles
  ask one-of links [die]
]

на самом деле не справляются с задачей, потому что черепаха может в конечном итоге выбрать одну из существующих ссылок в ходе симуляции, что приводит к сокращению общего количества ссылок в сети, которое должно остатьсястабильный.

Есть мысли?

Большое спасибо, Педро

1 Ответ

0 голосов
/ 13 ноября 2018

Я не могу это проверить, но вы захотите что-то вроде:

if random 100 < 5
[ let target one-of (other turtles with [not member? self link-neighbors])
  ask one-of links [die]
  create-links-to target
]

not member? self link-neighbors исключает всех черепах, с которыми уже связаны. Причина, по которой существует выбор, за которым следует смерть, за которой следует творение, заключается в том, чтобы избежать сотворения и смерти, являющихся одной и той же связью.

Я также немного почистил твой код. Во-первых, one-of делает то же самое, что и n-of 1, но его немного легче читать. Во-вторых, случайное число 101 генерирует любое из 101 случайного числа (0, 1, 2, ... 100), поэтому 5/101 составляет менее 5%. Поэтому я изменил 101 на 100. Обратите внимание, что часто проще использовать random-float 1 < 0.05, поэтому вы можете использовать одну и ту же структуру кода для любой вероятности.

...