Как определить соседей с некоторыми условиями

netlogo #social-networking

#netlogo #социальные сети

Вопрос:

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

  • Если это черепаха с верой> .5, черепаха ничего не делает.
  • Если это черепаха с убеждением <.5, а у одного из их ближайших соседей убеждение> .5, их новое убеждение (черепахи с убеждением < .5) будет убеждением .1 .
  • Если черепаха с убеждением <.5 не имеет непосредственного соседа с убеждением> .5, черепаха ничего не делает.

Базовая настройка:

 turtles-own [belief]

to setup
  ca
  reset-ticks
  crt 5 [
   set shape "person"
   layout-circle turtles 5
   set belief random-float 1
   ]

ask turtles [ create-links-with min-n-of 2 other turtles [distance myself] ]

end
 

Это создает сеть из 5 циклов черепах. Теперь они должны проверить убеждения своих (двух) ближайших соседей. Я попробовал это:

 to go

ask turtles with [one-of link-neighbors with [belief > .5]] [

set belief belief   .1
]

end
 

Итак, основная идея заключается в том, что каждая черепаха с подключенным соседом с убеждением> .5 должна добавить .1 к своему собственному убеждению. Я пробовал несколько вариантов ask turtles with строки, но она всегда показывает мне ошибку времени выполнения такого рода: С ожидаемым значением true / false от (черепаха 0), но вместо этого получил (черепаха 2). Есть идеи? Заранее благодарю вас.

Ответ №1:

one-of возвращает агента. В данном случае он не подходит для оценки условия с with помощью — условие является неполным, поскольку строка ask turtles with [one-of link-neighbors with [belief > .5]] переводится (примерно) как «попросите черепах с условием turtle x что-нибудь сделать».

Я думаю, что вам нужно что-то, что используется count для подсчета количества верующих turtles или any? для оценки того, существует ли набор агентов:

 to go-1
  ask turtles with [ (count link-neighbors with [belief > 0.5]) > 0 ] [
    set belief belief   0.1
  ]
end

to go-2
  ask turtles with [ any? link-neighbors with [ belief > 0.5 ] ] [
    set belief belief   0.1
  ]  
end
 

Комментарии:

1. Хорошо, any? link-neighbors with работает так, как задумано! Большое вам спасибо!