NetLogo(社交网络):如何根据概率连接节点?

NetLogo (social network): How do you connect nodes based on probability?

我正在尝试为一个 "online forum" 建模,其中模型从 2 个连接的 2 个代理(A 代理和 B 代理)开始。

  1. 每次迭代都会创建 2 个品种之一的代理。创建哪种节点; A-agent 与 B-agent 由概率决定(见代码)。
  2. 新创建的代理(1 x A 代理或 B 代理)然后根据概率连接到 A 代理或 B 代理之一。

如何根据选择概率使新创建的代理附加到 2 种代理中的一种?

到目前为止,这是我的代码,直到第 1 点。

breed [A-agents A-agent]
breed [B-agents B-agent]

to setup
  clear-all
  reset-ticks
  create-A-agents 1
  [ set shape "triangle"
    set size 1
    set color blue
    setxy random-xcor random-ycor
  ]
  create-B-agents 1 
  [ set shape "circle"
    set size 1
    set color red
    setxy random-xcor random-ycor
  ]
  ask B-agents [create-links-with A-agents [set color green]]
  tick
end

to go ;; create a new node based on the emprical user distribution of A-agents/B-agents
  let p random-float 100 ;; create a random number between 1-100
  if (p >= 97) [create-A-agents 1 
      [ set shape "triangle"        
        set size 1
        set color blue
      setxy random-xcor random-ycor]]
  if (p < 97) [create-B-agents 1
      [ set shape "circle"
        set size 1
        set color red
        setxy random-xcor random-ycor
  ]] 
  tick
end

你需要这样的东西(对于 A 代理,你可以为 B 代理编写类似的东西)- 未经测试,可能有语法错误。

let test-num random-float 1
ifelse test-num < 0.58
[ create-link-with one-of other A-agents ]
[ create-link-with one-of B-agents ]

我没有包括任何测试是否真的有任何代理可以连接,但这应该让你朝着正确的方向前进。