Netlogo, changing link-with to link-to

南楼画角 提交于 2020-03-04 21:50:13

问题


I am trying to create a network of influence for my turtles on my setup. Each turtle has an AD variable randomly set between 0 and 1.Each of them will create 5 undirected links. Now if they have AD low (below 0.3), they should look for someone with high AD in their network (above 0.7) and create a link to that person (to become a follower).

I have tried with this code which doesn't work because some networks will not have anyone with AD > 0.7 and so when trying to kill the link I get runtime. Would anyone know a way around it? (Specially if we can avoid the two-step process and directly create links-to when the condition is met).

to setup
  ask turtles [
    create-links-with n-of 5 other turtles 
    if (AD < 0.3) [
      let target one-of (other turtles with [link-neighbor? myself and (AD > 0.7)])
    ask link-with target [die]
      create-link-to target
    ]
    ]

Thanks!


回答1:


From your code I think you want (1) every agent to make links with 5 others (so on average they will all have 10, since they will also get links from others). (2) if own AD is low, then at least one of the links is with a high value AD node. The following code creates one link (with the AD if needed) and then another 4.

to setup
  ask turtles
  [ ifelse AD < 0.3
    [ create-links with one-of other turtles with [AD > 0.7] ]
    [ create-links-with one-of 5 other turtles ]
    create-links with n-of 4 other turtles
  ]
end

UPDATE due to more specific question. The normal way to avoid errors is to create an agentset of possibles and then test if there's any members. Looks a bit like this:

...
let candidates turtles with [AD > 0.7]
if any? candidates
[ create-links-with one-of candidates
]
...


来源:https://stackoverflow.com/questions/54377614/netlogo-changing-link-with-to-link-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!