Crowd: A Social Network Simulation Framework

摘要

        这篇论文介绍了一个名为 Crowd 的社交网络模拟框架。Crowd 采用基于代理建模的方法,旨在简化和加速在网络上开发基于代理的模型和模拟的过程。

        问题:许多研究人员采用基于代理的建模和仿真 (ABMS) 来观察个体行为如何塑造更大的社区行为,但通用 ABMS 工具并非专门为社交网络设计,因此功能有限,增加了复杂仿真的工作量;

        解决方案:Crowd 是一种社交网络模拟器,旨在促进简单快速的建模。它支持通过 YAML 配置进行仿真设置,并通过用户定义的方法实现进一步的定制;

功能:Crowd 的主要功能包括:

        无代码模拟,用于扩散任务。

        交互式可视化。

        数据聚合。

        图表绘制功能

        技术特点:Crowd 用 Python 设计,支持生成式代理,并且可以轻松连接 Python 的数据分析和机器学习库;

        案例研究:论文包括三个案例研究,以说明该框架的用法,包括流行病中的生成式代理、影响最大化和网络信任博弈;

        开源:Crowd 是一个开源框架,简化了基于配置方法的代理网络仿真的设置和执行;

        用户界面:Crowd 提供了一个用户友好的界面,有助于仿真设置、交互式网络可视化、图表生成和数据聚合,使用户能够建模和分析各种研究问题。

绪论

        基于代理的建模与仿真(ABMS)作为一种有价值的工具,被广泛应用于社会科学、经济学和流行病学等多个研究领域。

        ABMS 的应用:ABMS 被用于分析电动汽车的采用、移动应用、营销策略、动物之间的疾病传播、传染病的病毒传播和干预策略、信息和趋势的传播、信任管理、交通规划和紧急疏散。

          ABMS 的方法:ABMS 采用自下而上的方法来模拟现实世界的系统。研究人员通过检查个体实体(代理)在微观层面的行为,以及它们与其他代理和环境的互动,来观察个体行为如何影响系统。通过这种方式,可以解释或预测系统层面上出现的模式,例如趋势的扩散      。

        代理的组成:仿真中的代理包括由建模者定义的一组属性和行为。根据代理和环境的状态,代理在仿真的每个时间步长执行这些指定的操作。环境也可以有属性,在某些仿真工具中,环境也有自己的行为。环境属性的变化直接反映在代理行为的选择中。

        社交网络仿真:ABMS 已成为计算社会科学中的一种重要方法,尤其是在研究社交网络方面。在基于代理的社交网络仿真中,环境被表示为一个网络。检查网络中代理之间的交互,可以深入了解信息传播、信任动态和疾病传播等问题,从而可以利用这些信息来预防负面结果或实现积极结果。

        网络仿真中的代理:在网络仿真中,代理通常代表一个人,但也可能代表动物、组织或任何其他个体实体。两个节点之间的链接表示两个代理之间存在关系,并且可能存在不同类型的关系(例如,家庭、同事或两个组织之间协调的可能性)。节点与其邻居互动,这些邻居的行动和状态起着至关重要的作用。例如,在模拟信息传播时,信息是从其邻居传递到代理的。

        现有 ABMS 工具的局限性:虽然各种现有的 ABMS 工具也促进了社交网络的仿真,但通用 ABMS 工具并非专门为社交网络而设计。因此,建模复杂的网络系统所需的功能范围和工作量会增加。NetLogo、MASON、Repast 和 Mesa 是最广泛使用的例子。

        Crowd 框架的介绍:这篇论文介绍了一个名为 Crowd 的社交网络仿真框架,旨在简化和加速在网络上开发基于代理的模型和仿真的过程。Crowd 的主要功能包括交互式网络可视化、用于设置仿真的配置文件方法(这也允许无代码的扩散任务)以及用于合并数据和绘制图表以进行进一步分析的工具。

      Crowd 的特点:Crowd 优先考虑易用性并提倡更少的代码编写,同时由于其灵活和可扩展的架构,它也允许结合自定义模型以实现更多样化的用例。Crowd 的用户可以利用 Python 环境,通过在 Jupyter notebooks 上运行他们的代码,并访问广泛的 Python 库来执行数据分析和机器学习等任务。

相关工作

        相关工作(RELATED WORK)部分主要讨论了现有的基于代理的建模与仿真(ABMS)工具,并介绍了 Crowd 在这些工具中的定位。该部分首先介绍了通用的 ABMS 工具,然后转向社交网络模拟器,并解释了 Crowd 在此领域中的位置。

通用的 ABMS 工具

        通用 ABMS 工具的局限性:虽然通用的 ABMS 工具可以用于各种仿真,但对于复杂的任务,实现一个能够准确模拟现实世界的系统所需的时间和精力会显著增加。因此,许多研究人员开发了专门针对 ABMS 应用的常见领域和主题的领域特定工具

        Logo 风格的模拟器:例如 NetLogo,它引入了自己的编程语言(基于 Logo),旨在简化非程序员用户的建模过程。用户可以使用 NetLogo 实现自己的模型,或者修改从 NetLogo 广泛的库中选择的示例模型。Repast Simphony 的 ReLogo 插件可以快速简单地开始建模,与其他 Logo 工具不同的是,它可以与 Java 和 Groovy 混合使用,从而可以访问 Java 库。

        强调模块化和易用性的 Python 模拟器:例如 Mesa 和 AgentPy。Mesa 是第一个 Python ABMS 框架,它提供了一个模块化架构来支持各种场景,因此,与之前的替代方案相比,定义新的空间要容易得多。Mesa 中的可视化是通过一个基于 Web 的用户界面进行的,用户可以通过导入为库中不同类型的环境提供的各种可视化元素来创建可视化。AgentPy 进一步简化了建模和参数探索,与 Mesa 相比,需要的代码行数更少.

        大规模模拟器:随着仿真中代理数量增加到数十万或数百万,执行时间会显著增加。为了解决这个问题,各种工具提供了性能优化,包括多线程、分布式计算或基于张量的方法。例如 MASON、Repast Simphony 和 Repast HPC。

        其他:Agents.jl 和 krABMaga。Agents.jl 利用了 Julia 的性能和定义复杂数学表达式的简易性。krABMaga 则利用了 Rust 的效率和可靠性。

社交网络仿真工具和框架

        社交网络平台(如 Facebook、X (Twitter) 和 Reddit)实现了信息的快速传播。因此,这些平台成为传播错误信息或出于商业目的传播趋势的场所,这引起了许多研究人员的兴趣。

        Hashkat:Hashkat 允许对其内置功能进行 Twitter 类大型网络的详细分析,包括生成具有代理属性的网络。HashKat 需要用户创建一个配置文件来定义仿真属性,例如时间限制、关注模型和输出设置。尽管为现实的社交网络仿真提供了广泛的支持,但与模块化模拟器相比,扩展模拟器的功能需要更多的精力。

        开源社交网络模拟器:它侧重于信息扩散的时空方面。它提供了简单的网络生成、独立级联和线性阈值扩散模型、常用的社交网络分析 (SNA) 指标以及用于社区检测和在其 GUI 中选择种子节点的算法。

        Soil:Soil 是一个可扩展的基于 Python 的模拟器,旨在与 Mesa 的更高版本配合使用,以允许其用户利用这两个库。该工具提供了网络、代理和事件类,以及网络、设置和图表的基于 Web 的可视化。

        Covasim 和 Flu and Coronavirus Simulator (FACS):社交网络也用于流行病学研究中,例如分析 COVID-19 等疾病的传播,其中建模病毒的传播、了解不同干预策略的影响以及估计资源需求通常是主要目标。

        Crowd 的定位:Crowd 旨在简化和加速在网络上开发基于代理的模型和仿真的过程。它通过配置文件方法设置仿真,并提供交互式网络可视化、数据聚合和图表绘制功能。Crowd 还允许用户结合自定义模型,并利用 Python 环境进行数据分析和机器学习. Crowd 采用不同的方法,在当前版本中,仿真可以驻留的唯一环境是网络。该网络环境由节点和边组成,其中节点是代理,边定义代理之间的关系。

        与其他工具的比较:论文中通过一个表格(Table I)将 Crowd 与其他仿真工具进行了比较,比较的标准包括模型开发的编程语言、ABMS 的范围、可用的仿真环境、图形用户界面 (GUI) 的类型、可视化功能、数据收集、批量运行和模型探索。此外,还列出了模型开发所需的工作量和每个工具的可扩展性。

ARCHITECTURE

         这篇论文的架构(ARCHITECTURE)部分主要介绍了 Crowd 框架的整体设计和组成部分。Crowd 被开发为一个 Python 库,为社交网络仿真提供便利,其可扩展模块旨在包含该任务的基本功能,例如网络模型、数据保存器、可视化工具以及仿真的执行。

        此外,还开发了一个桌面应用程序,它为该库提供了一个额外的层,以提高易用性并利用 JavaScript 可视化库。

以下是架构部分的关键点:        

        Crowd 框架的整体架构:Crowd 框架的总体架构展示了库如何连接到桌面应用程序和文件系统(如图 1 所示)。

        桌面应用程序的功能:运行仿真:用户可以通过选择设置和参数来运行仿真。

        查看之前的仿真:用户可以查看项目的先前仿真。

        项目导航:用户可以以用户友好的方式在项目和仿真之间导航。

        自定义方法:对于更复杂的仿真和数据收集目的,用户可以在编辑器中编写 Python 方法,并选择在仿真生命周期中何时执行这些方法。

        结果探索:执行仿真后,用户可以通过图形可视化以及节点和边缘信息部分来探索结果。

        数据聚合:用户可以聚合来自多个仿真的数据。

        图表绘制:用户可以使用简单的选择器绘制图表。

        无需编写代码即可设置仿真:Crowd 利用 YAML 文件来描述网络设置、节点类型、节点和边缘参数,以及在扩散仿真的情况下,描述隔间和规则。这允许简单模型进行无代码仿真,同时显著减少其他模型所需的代码行数。

        利用 Python 环境:在使用 Crowd 的库版本时,建模人员可以在调用运行仿真的库方法之前,添加未由此设置提供的功能并执行这些功能。这方面的一个例子是:在将 LLM 传递以用于仿真中的每个步骤的推理之前,对其进行初始化。

        跨平台应用程序:为了提高安装的简易性并使该工具更易于非技术用户使用,Crowd 利用 Tauri 提供了一个跨平台应用程序。Rust 层充当桥梁,将来自 GUI (Svelte) 的函数调用中继到后端 (Python)。可以使用此结构调用的函数放置在另一个名为 Crowd API 的模块中,这些函数有助于执行核心仿真任务以及管理文件操作,例如上传数据集和访问存储为文件系统中的 JSON 和 YAML 文件的项目数据和结果。

网络架构:

        在其他 ABMS 框架(如 Mesa 和 MASON)中,用户需要实现两个类:Model 和 Agent。Crowd 采用不同的方法。在当前版本中,仿真可以驻留的唯一环境是网络。此网络环境由节点和边组成,其中节点是代理,边定义代理之间的关系。与代理相关的信息作为节点参数存储在网络中,并且可以单独定义代理级别的方法,以在运行仿真时作为列表参数传递。

        Crowd 提供两个基类:Network 和 CustomSimNetwork,以及它们的两个扩展:DiffusionNetwork 和 EdgeSimNetwork

        为了在框架中表示网络,Crowd 利用 NetworkX,这是一个提供数据结构来表示图形的库,以及用于社交网络分析和网络生成的算法。对于网络生成任务,还使用了 igraph-python 库。

        Crowd 的基本 Network 类旨在为所有可能的用户定义场景提供一个通用框架。对于此网络类型的设计,采用了一种网络即代码的方法,其中网络、代理、它们的交互、分析的详细信息和可视化都是使用配置文件和代码定义的。它对于想要实现仿真的所有底层细节的研究人员非常有用。

        CustomSimNetwork 类提供了比以前的类型显著更多的功能。CustomSimNetwork 处理网络、节点和边缘参数的添加,并在迭代之前、代理级别方法之前保持和运行用户定义的方法。迭代前方法允许在迭代的主要逻辑之前设置或重置一些参数。迭代前和迭代后方法之间,执行标记为 every-iteration-agent 的函数,其中为每个代理随机调用给定的方法。迭代后方法可用于数据收集目的,例如查找每天决定待在家中的代理总数。此外,仿真后方法可以深入了解案例的最终情况或完成任何剩余的逻辑。DiffusionNetwork 是 CustomSimNetwork 类的扩展,有助于简化扩散仿真,其中使用来自 NDLib 的隔间结构定义仿真逻辑。这允许 NDLib 提供与扩散相关的所有功能,而建模人员只需要编写用于数据收集的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值