Netlogo:根据多个条件选择代理

Netlogo: Selecting an agent based on multiple conditions

我有 2 个代理,hubindividual

每个人都有自己的变量,叫做value

我想写一个方法,让集线器select拥有最高价值的个体,并且还没有与集线器建立link,为了与它建立link。

到目前为止,我使用的是 max-one-of,它在第一轮给了我最高的 value-d 个人,但在第二轮中,同一个人仍然是 selected 尽管 link 已经与集线器建立。

我想问大家,如何获得尚未link与集线器编辑的个人,具有最高价值

非常感谢!

您需要使用 with and link-neighbor? 过滤您的个人:

breed [ hubs hub ]
breed [ individuals individual ]
individuals-own [ value ]

to setup
  clear-all
  create-hubs 1
  create-individuals 10 [
    set value random 100
    forward 5
  ]
  reset-ticks
end

to go
  ask hubs [
    let candidates individuals with [ not link-neighbor? myself ]
    if any? candidates [
      create-link-with max-one-of candidates [ value ]
    ]
  ]
  tick
end