Пусть черепаха будет следовать за одним из соседей

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

Это связано с предыдущим вопросом ( Netlogo, изменение связи с ссылкой на)

to opinion-formation
ask turtles [ 
let leaders turtles with [AD > 0.7]
if (AD < 0.3) and (link-neighbor? one-of leaders) [set opinion1 [opinion] of turtles with [link-neighbor? one-of leaders ]]
]
end

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

to opinion-formation
ask turtles [
let leaders turtles with [AD > 0.7]
if (count leaders with [member? self link-neighbors] > 0) and AD < 0.3 [
set opinion1 [opinion] of one-of leaders with [member? self link-neighbors]
]
]
end

1 ответ

Решение

Вы можете использовать nw расширение для этого, так как оно позволяет использовать nw:turtles-in-radius X Примитив возвращать черепах в пределах связанного расстояния. Для очень простого примера взгляните на этот код:

extensions [ nw ]

turtles-own [ AD ]

to setup
  ca
  crt 10
  ask turtles [
    set AD random-float 1
    set color scale-color blue AD 0 1
    setxy random 20 - 10 random 20 - 10
    create-link-with one-of other turtles
  ]
  reset-ticks
end

to check-leadership
  ask turtles [
    let my-nearby-turtles nw:turtles-in-radius 2
    let my-nearby-leader one-of my-nearby-turtles with [ AD > 0.7 ]
    if my-nearby-leader != nobody [
      let new-AD [AD] of my-nearby-leader
      show word "I have a leader, my new AD is " new-AD
      set AD new-AD      
      set color scale-color blue AD 0 1 
    ]
  ]
end
Другие вопросы по тегам