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

NetLogo(社交网络):如何基于概率连接节点?,netlogo,probability,Netlogo,Probability,我试图建立一个“在线论坛”的模型,模型从两个相互连接的代理开始,它们是两个品种(A代理和B代理) 在每次迭代中,创建两个品种之一的代理。创建哪种类型的节点;A-agent与B-agent的对比由概率决定(参见代码) 然后,新创建的代理(1个A代理或B代理)根据概率连接到A代理或B代理之一 如何使新创建的代理基于选择概率连接到两种代理之一 如果新创建的节点是A-agents,则连接到其中一个A-agents的几率为58%,连接到其中一个B-agents的几率为42% 如果新创建的节点是B-age

我试图建立一个“在线论坛”的模型,模型从两个相互连接的代理开始,它们是两个品种(A代理和B代理)

  • 在每次迭代中,创建两个品种之一的代理。创建哪种类型的节点;A-agent与B-agent的对比由概率决定(参见代码)
  • 然后,新创建的代理(1个A代理或B代理)根据概率连接到A代理或B代理之一
  • 如何使新创建的代理基于选择概率连接到两种代理之一

    • 如果新创建的节点是A-agents,则连接到其中一个A-agents的几率为58%,连接到其中一个B-agents的几率为42%
    • 如果新创建的节点是B-agent,则连接到A-agent的概率为56%,连接到B-agent的概率为44%
    这是我到目前为止的代码,直到第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
    
    breed[A-agents A-agents]
    品种[B-代理人B-代理人]
    设置
    清除所有
    重置滴答声
    创建代理1
    [设置形状“三角形”
    1号套餐
    设置颜色为蓝色
    setxy随机xcor随机ycor
    ]
    创建代理1
    [设置形状“圆”
    1号套餐
    设置颜色为红色
    setxy随机xcor随机ycor
    ]
    询问B代理[创建与A代理的链接[设置绿色]]
    打上钩
    结束
    外带;;根据a-agents/B-agents的实际用户分布创建新节点
    设p随机浮动100;;创建一个介于1-100之间的随机数
    如果(p>=97)[创建代理1
    [设置形状“三角形”
    1号套餐
    设置颜色为蓝色
    setxy random xcor random ycor]]
    如果(p<97)[创建B-代理1
    [设置形状“圆”
    1号套餐
    设置颜色为红色
    setxy随机xcor随机ycor
    ]] 
    打上钩
    结束
    
    您需要这样的东西(对于A-agents,您可以为B-agents编写类似的代码)-未经测试,可能存在语法错误

    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 ]
    
    让测试num随机浮动1
    ifelse测试数值<0.58
    [创建与其他A-代理之一的链接]
    [创建与其中一个B代理的链接]
    

    我还没有包括任何关于是否有任何代理要连接的测试,但这应该会让您朝着正确的方向前进。

    您需要类似的东西(对于A-agents,您可以为B-agents编写类似的测试)-未经测试,可能存在语法错误

    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 ]
    
    让测试num随机浮动1
    ifelse测试数值<0.58
    [创建与其他A-代理之一的链接]
    [创建与其中一个B代理的链接]
    

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

    谢谢,这很有帮助。我从第1点(在代理属性下)将您的建议集成到if语句中,并且成功了。谢谢,这很有帮助。我从第1点(在代理属性下)将您的建议集成到if语句中,并且成功了。