1

我有 0 < AD < 1 和 0 < 意见 < 1 的海龟。每只海龟都与给定数量的其他海龟链接(无向)。我希望 AD 低 (< 0.3) 的海龟采纳属于其链接邻域的另一只 AD (> 0.7) 高的海龟的意见。我想出的代码采用了所有在其扩展网络中具有高 AD 的海龟的所有意见。关于如何做到这一点的任何想法,以便它只采纳附近一个人的意见,如果有的话(可能没有)?

这与上一个问题有关(Netlogo,将 link-with 更改为 link-to

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
4

1 回答 1

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
于 2019-01-29T20:42:26.347 回答