Пусть черепаха будет следовать за одним из соседей - PullRequest
0 голосов
/ 29 января 2019

У меня есть черепахи с 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 Ответ

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

Для этого вы можете использовать расширение 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
...