【问题标题】:NetLogo (social network): How do you connect nodes based on probability?NetLogo(社交网络):如何根据概率连接节点?
【发布时间】:2019-12-13 18:04:34
【问题描述】:

我正在尝试建模一个“在线论坛”,其中模型以 2 个连接的代理开始,这些代理属于 2 个品种(A 代理和 B 代理)。

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

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

  • 如果新创建的节点是 A 代理 = 58% 的机会连接到 A 代理之一,42% 的机会连接到 B 代理之一?
  • 如果新创建的节点是 B 代理 = 56% 的概率连接到 A 代理,44% 的概率连接到 B 代理

这是我到目前为止的代码,直到第 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

【问题讨论】:

    标签: netlogo probability


    【解决方案1】:

    您需要这样的东西(对于 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 ]
    

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

    【讨论】:

    • 谢谢,这有帮助。我将您的建议整合到第 1 点的 if 语句中(在代理属性下)并且它有效。
    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多