NetLogo(社交网络):如何根据概率连接节点?
NetLogo (social network): How do you connect nodes based on probability?
我正在尝试为一个 "online forum" 建模,其中模型从 2 个连接的 2 个代理(A 代理和 B 代理)开始。
- 每次迭代都会创建 2 个品种之一的代理。创建哪种节点; A-agent 与 B-agent 由概率决定(见代码)。
- 新创建的代理(1 x A 代理或 B 代理)然后根据概率连接到 A 代理或 B 代理之一。
如何根据选择概率使新创建的代理附加到 2 种代理中的一种?
- 如果新创建的节点是 A 代理 = 58% 的机会连接到 A 代理之一,42% 的机会连接到 B 代理之一?
- 如果新创建的节点是 B-agents = 56% 的概率连接到 A-agent 和 44% 的概率连接到 B-agents
到目前为止,这是我的代码,直到第 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 ]
我没有包括任何测试是否真的有任何代理可以连接,但这应该让你朝着正确的方向前进。
我正在尝试为一个 "online forum" 建模,其中模型从 2 个连接的 2 个代理(A 代理和 B 代理)开始。
- 每次迭代都会创建 2 个品种之一的代理。创建哪种节点; A-agent 与 B-agent 由概率决定(见代码)。
- 新创建的代理(1 x A 代理或 B 代理)然后根据概率连接到 A 代理或 B 代理之一。
如何根据选择概率使新创建的代理附加到 2 种代理中的一种?
- 如果新创建的节点是 A 代理 = 58% 的机会连接到 A 代理之一,42% 的机会连接到 B 代理之一?
- 如果新创建的节点是 B-agents = 56% 的概率连接到 A-agent 和 44% 的概率连接到 B-agents
到目前为止,这是我的代码,直到第 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 ]
我没有包括任何测试是否真的有任何代理可以连接,但这应该让你朝着正确的方向前进。