NetLogo Efficient way to create fixed number of links

后端 未结 2 922
别跟我提以往
别跟我提以往 2020-12-06 14:12

I have about 5000 agents (people) in my model. I want to give them an arbitrary number of friends and have reciprocal but random pairing. So if person A chooses person B the

2条回答
  •  温柔的废话
    2020-12-06 15:01

    After debugging (see NetLogo Efficiently create network with arbitrary degree distribution), the following version is relatively efficient. It constructs an agentset (called lonely below) for the turtles that still need links and deletes them as they get enough links. Removing individual turtles is more efficient than the nested process to create the candidate set each time.

    The variable nFriends is a global (with a slider in the original model) that is the target number of links, identical for all agents.

      let lonely turtles with [count my-links < nFriends]
      ask turtles
      [ set lonely other lonely
        let new-links nFriends - count my-links
        if new-links > 0
        [ let chosen n-of min (list new-links count lonely) lonely
          create-links-with chosen [ hide-link ]
          ask chosen [ if count my-links = nFriends [ set lonely other lonely ] ]
        ]
      ]
    

提交回复
热议问题