Netlogo, изменение связи с ссылкой на ссылку - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь создать сеть влияния на моих черепах на моей установке.Каждая черепаха имеет переменную AD, случайно установленную между 0 и 1. Каждая из них создаст 5 ненаправленных ссылок.Теперь, если у них низкий AD (ниже 0,3), они должны искать кого-то с высоким AD в своей сети (выше 0,7) и создать ссылку на этого человека (чтобы стать последователем).

Я пытался сэтот код не работает, потому что в некоторых сетях не будет никого с AD> 0,7, и поэтому при попытке убить ссылку я получаю время выполнения.Кто-нибудь знает способ обойти это?(Особенно, если мы можем избежать двухэтапного процесса и напрямую создавать ссылки, когда условие выполняется).

to setup
  ask turtles [
    create-links-with n-of 5 other turtles 
    if (AD < 0.3) [
      let target one-of (other turtles with [link-neighbor? myself and (AD > 0.7)])
    ask link-with target [die]
      create-link-to target
    ]
    ]

Спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Из вашего кода я думаю, что вы хотите (1), чтобы каждый агент делал ссылки с 5 другими (так что в среднем у них будет 10, так как они также будут получать ссылки от других).(2) если собственный AD низок, то, по крайней мере, одна из ссылок имеет узел AD высокого значения.Следующий код создает одну ссылку (с AD при необходимости), а затем еще одну 4.

to setup
  ask turtles
  [ ifelse AD < 0.3
    [ create-links with one-of other turtles with [AD > 0.7] ]
    [ create-links-with one-of 5 other turtles ]
    create-links with n-of 4 other turtles
  ]
end

ОБНОВЛЕНИЕ из-за более конкретного вопроса.Обычный способ избежать ошибок - создать набор возможных агентов, а затем проверить, есть ли члены.Выглядит примерно так:

...
let candidates turtles with [AD > 0.7]
if any? candidates
[ create-links-with one-of candidates
]
...
...