核心内容摘要
冉冉学姐的vlog在线观看
社会网络动力学分析社会网络动力学分析是研究社会网络中节点和边随时间变化的规律和机制。
在NetLogo中我们可以利用其强大的建模和仿真能力来探索和分析社会网络的动力学特性。
本节将详细介绍如何在NetLogo中进行社会网络动力学分析包括网络结构的变化、节点属性的演变、边权重的动态调整等内容。
网络结构的变化社会网络的结构不是静态的而是会随着时间的推移而发生变化。
这些变化可能包括节点的加入和退出、边的形成和断开等。
在NetLogo中我们可以使用turtles和links来模拟这些变化。
1 节点的加入和退出节点的加入和退出是社会网络中常见的动态变化。
我们可以通过编程来模拟这些过程。
1.
1 节点的加入在NetLogo中可以使用create-turtles命令来创建新的节点。
例如我们可以每10个时间步随机创建一个新节点to go tick if (ticks mod 10
[ create-turtles 1 [ set shape person set color blue setxy random-xcor random-ycor ] ] ... end
1.
2 节点的退出节点的退出可以通过删除turtles来实现。
例如我们可以随机选择一个节点并在每20个时间步将其删除to go tick if (ticks mod 20
[ if any? turtles [ ask one-of turtles [ die ] ] ] ... end
2 边的形成和断开边的形成和断开是社会网络中另一个重要的动态变化。
我们可以通过编程来模拟这些过程。
1.
1 边的形成在NetLogo中可以使用create-link-with命令来创建新的边。
例如我们可以每15个时间步随机选择两个节点并创建一条边to go tick if (ticks mod 15
[ if count turtles 2 [ let node1 one-of turtles let node2 one-of turtles with [self ! node1] ask node1 [ create-link-with node2 [ set color red ] ] ] ] ... end
1.
2 边的断开边的断开可以通过删除links来实现。
例如我们可以每30个时间步随机选择一条边并将其删除to go tick if (ticks mod 30
[ if any? links [ ask one-of links [ die ] ] ] ... end
节点属性的演变节点属性的演变是社会网络中另一个重要的研究内容。
节点属性可以包括节点的影响力、意见、状态等。
在NetLogo中可以通过编程来模拟这些属性的动态变化。
1 节点影响力的变化节点的影响力可以随着时间的推移而变化。
例如我们可以模拟节点影响力随时间的增加或减少turtles-own [influence] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set influence random 100 ] ... end to go tick ask turtles [ set influence influence random 10 - 5 ; 随机增加或减少影响力 ] ... end
2 节点意见的变化节点的意见也可以随着时间的推移而变化。
例如我们可以模拟节点意见在社交网络中的传播和变化turtles-own [opinion] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set opinion random 100 ] ... end to go tick ask turtles [ let neighbors my-links if any? neighbors [ let avg-opinion mean [opinion] of link-neighbors set opinion avg-opinion random 10 - 5 ; 意见受邻居影响随机变化 ] ] ... end
边权重的动态调整边权重的动态调整是社会网络中另一个重要的研究内容。
边权重可以表示节点之间的关系强度或互动频率。
在NetLogo中可以通过编程来模拟这些权重的动态变化。
1 边权重的初始化在NetLogo中可以使用links-own来定义边的属性。
例如我们可以初始化每条边的权重links-own [weight] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor ] ask turtles [ create-links-with other turtles [ set weight random 100 ] ] ... end
2 边权重的动态调整边权重的动态调整可以通过编程来实现。
例如我们可以模拟边权重随时间的变化基于节点的互动频率to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ ask neighbors [ let interaction-frequency random 10 ask link-with myself [ set weight weight interaction-frequency ] ] ] ] ... end
社会网络中的信息传播信息传播是社会网络中一个重要的动力学过程。
在NetLogo中可以通过编程来模拟信息在节点之间的传播。
1 基本信息传播模型我们可以使用一个简单的模型来模拟信息传播。
例如假设每个节点有50%的概率将其信息传播给与其连接的邻居turtles-own [info] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set info false ] ask one-of turtles [ set info true set color red ] ... end to go tick ask turtles with [info true] [ let neighbors link-neighbors if any? neighbors [ ask neighbors [ if random-float 1
5 [ set info true set color red ] ] ] ] ... end
2 复杂信息传播模型我们还可以模拟更复杂的信息传播模型例如考虑信息传播的延迟和衰减。
假设信息传播有1个时间步的延迟并且每传播一次衰减10%turtles-own [info info-timer] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set info false set info-timer 0 ] ask one-of turtles [ set info true set color red ] ... end to go tick ask turtles with [info true] [ let neighbors link-neighbors if any? neighbors [ ask neighbors [ if random-float 1
5 [ set info-timer 1 ; 设置信息传播的延迟 ] ] ] ] ask turtles with [info-timer 0] [ set info-timer info-timer - 1 if info-timer 0 [ set info true set color red ] ] ... end
社会网络中的意见形成意见形成是社会网络中一个重要的动力学过程。
在NetLogo中可以通过编程来模拟意见在节点之间的形成和变化。
1 基本意见形成模型我们可以使用一个简单的模型来模拟意见形成。
例如假设每个节点的意见受到其邻居意见的平均值影响turtles-own [opinion] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set opinion random 100 ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let avg-opinion mean [opinion] of neighbors set opinion avg-opinion random 10 - 5 ; 意见受邻居影响随机变化 ] ] ... end
2 复杂意见形成模型我们还可以模拟更复杂的意见形成模型例如考虑意见的极化和同质性。
假设节点更倾向于与其意见相近的邻居互动意见极化系数为
1turtles-own [opinion] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set opinion random 100 ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let similar-neighbors neighbors with [abs (opinion - [opinion] of myself) 20] if any? similar-neighbors [ let avg-opinion mean [opinion] of similar-neighbors set opinion (opinion
1 * (avg-opinion - opinion)) ; 意见极化 ] ] ] ... end
社会网络中的群形成群形成是社会网络中一个重要的动力学过程。
在NetLogo中可以通过编程来模拟节点如何形成和加入不同的群。
1 基本群形成模型我们可以使用一个简单的模型来模拟群形成。
例如假设每个节点有50%的概率加入与其意见相近的节点所在的群turtles-own [opinion group] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set opinion random 100 set group 0 ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let similar-neighbors neighbors with [abs (opinion - [opinion] of myself) 20] if any? similar-neighbors [ if random-float 1
5 [ let group-to-join [group] of one-of similar-neighbors set group group-to-join set color (group-to-join * 10
; 用颜色表示不同的群 ] ] ] ] ... end
2 复杂群形成模型我们还可以模拟更复杂的群形成模型例如考虑节点的影响力和意见的多样性。
假设节点更倾向于加入与其意见相近且影响力较大的节点所在的群turtles-own [opinion influence group] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set opinion random 100 set influence random 100 set group 0 ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let similar-neighbors neighbors with [abs (opinion - [opinion] of myself) 20] if any? similar-neighbors [ let influential-similar-neighbors similar-neighbors with [influence 50] if any? influential-similar-neighbors [ let group-to-join [group] of one-of influential-similar-neighbors set group group-to-join set color (group-to-join * 10
; 用颜色表示不同的群 ] ] ] ] ... end
社会网络中的疾病传播疾病传播是社会网络中一个重要的动力学过程。
在NetLogo中可以通过编程来模拟疾病在节点之间的传播。
1 基本疾病传播模型我们可以使用一个简单的模型来模拟疾病传播。
例如假设每个节点有50%的概率将其感染状态传播给与其连接的邻居turtles-own [infected] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set infected false ] ask one-of turtles [ set infected true set color red ] ... end to go tick ask turtles with [infected true] [ let neighbors link-neighbors if any? neighbors [ ask neighbors [ if random-float 1
5 [ set infected true set color red ] ] ] ] ... end
2 复杂疾病传播模型我们还可以模拟更复杂的疾病传播模型例如考虑节点的健康状况和互动频率。
假设节点的健康状况影响其传播疾病的概率互动频率影响传播的速度turtles-own [infected health-status interaction-frequency] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set infected false set health-status random 100 set interaction-frequency random 10 ] ask one-of turtles [ set infected true set color red ] ... end to go tick ask turtles with [infected true] [ let neighbors link-neighbors if any? neighbors [ ask neighbors [ let infection-prob
1 * ([interaction-frequency] of myself /
if random-float 1 infection-prob [ set infected true set color red ] ] ] ] ... end
社会网络中的行为选择行为选择是社会网络中一个重要的动力学过程。
在NetLogo中可以通过编程来模拟节点如何根据其环境和邻居的行为做出选择。
1 基本行为选择模型我们可以使用一个简单的模型来模拟行为选择。
例如假设每个节点有50%的概率选择与其大多数邻居相同的行为turtles-own [behavior] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set behavior one-of [0 1] ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let majority-behavior mode [behavior] of neighbors if random-float 1
5 [ set behavior majority-behavior set color (ifelse-value (behavior
[blue] [red]) ] ] ] ... end
2 复杂行为选择模型我们还可以模拟更复杂的行为选择模型例如考虑节点的个人偏好和邻居的行为多样性。
假设节点更倾向于选择与其个人偏好相近的行为并且邻居的行为多样性会影响其选择的概率turtles-own [behavior preference] to setup clear-all create-turtles 50 [ set shape person set color blue setxy random-xcor random-ycor set behavior one-of [0 1] set preference random 100 ] ask turtles [ create-links-with other turtles ] ... end to go tick ask turtles [ let neighbors link-neighbors if any? neighbors [ let behaviors [behavior] of neighbors let diversity length remove-duplicates behaviors let majority-behavior mode behaviors let similar-prob (1 - abs (preference -