AI-For-Beginners 实战任务:用 NetLogo 多智能体模型仿真 COVID-19 传播
AI-For-Beginners 实战任务:用 NetLogo 多智能体模型仿真 COVID-19 传播
本篇技术指南围绕 AI-For-Beginners 课程第 23 课"多智能体系统"(Multi-Agent Systems)的课后任务展开:选取 NetLogo 模型库中的现成模型,通过修改参数与逻辑模拟一个尽可能贴近现实的场景——其中最具代表性的示例,是改造"Alternative Visualizations"目录下的 Virus(病毒传播)模型,用以模拟 COVID-19 的真实扩散过程。阅读本文后,你将掌握 NetLogo 模型库的打开与运行方式、Agent/Patch/Observer 三种角色的核心概念、以及如何通过修改现有模型完成"现实问题仿真 + 视频演示交付"的完整任务闭环。
任务目标与交付标准
任务文档(法文版、英文原版)提出的要求非常清晰,分为三部分:
- 选取模型:从 NetLogo 模型库中任选一个模型,尽量忠实地用它模拟一个真实场景;
- 改造示例:官方推荐的方向是修改 Alternative Visualizations 文件夹中的 Virus 模型,验证它能否被改造成模拟 COVID-19 传播的模型——核心问题是:"你能构建一个模仿真实病毒传播过程的模型吗?";
- 成果交付:保存模型副本,并制作一段视频演示,在视频中解释该模型与现实世界的对应关系。
值得注意的是,本次任务并非凭空建模:课程正文(lessons/6-Other/23-MultiagentSystems/README.md)明确指出,多智能体建模方法曾被成功用于预测 COVID-19 在全球范围的传播,同时类似的思路也可用于城市交通建模、观察交通规则变化的影响。这说明"病毒模型改造"是一条经过验证、有真实背景支撑的建模路径,而非无根据的虚构练习。
前置知识:多智能体系统的核心概念
要完成这个任务,首先要理解任务依托的理论基础。多智能体系统诞生于 20 世纪 90 年代,是对互联网与分布式系统快速发展的回应。其核心是**涌现(emergent)或协同(synergetic)**思想:大量相对简单的个体(Agent)组合在一起,其整体行为可以涌现出更复杂、更智能的系统级行为,这在理论上被称为"元系统跃迁(metasystem transition)"。
一个 Agent 是"存在于某个环境之中、能够感知环境并作用于环境的实体"。按不同维度可以对 Agent 进行分类:
- 按推理能力:反应式(reactive) Agent 只做简单的请求-响应式行为;慎思式(deliberative) Agent 具备逻辑推理和/或规划能力;
- 按代码执行位置:静态(static) Agent 运行在专用网络节点上;移动(mobile) Agent 可以在网络节点间迁移代码;
- 按行为特征:被动(passive) Agent 没有特定目标,只对刺激做出反应;主动(active) Agent 会追求目标;认知(cognitive) Agent 涉及复杂规划与推理。
其中反应式 Agent 正是本任务的主角——NetLogo 中的个体行为本质上就是反应式的:每个个体遵循简单规则,系统整体却展现出复杂模式。这正是"涌现"最直观的演示,也是病毒传播模型能够成立的机制基础。
NetLogo 建模环境速览
从 Logo 到多智能体建模
NetLogo 是一个基于 Logo 编程语言改进版的多智能体建模环境。Logo 语言本是为向儿童教授编程概念而设计的,其标志性操作是控制一个名为 turtle(海龟) 的 Agent 移动并留下轨迹。在 NetLogo 中,你可以用 create-turtles 批量创建海龟,然后用 ask turtles 命令所有海龟执行同一动作:
create-turtles 10
ask turtles [
forward 10
]
当然,所有海龟做同样的事并不有趣,因此可以用 ask 限定特定群体(例如某个点附近的个体),也可以用 breed [cats cat] 创建不同"品种"的海龟——注意该命令要求同时给出复数形式和单数形式,因为不同命令会使用不同形式以保持语义清晰。
三种核心角色:Agent、Patch 与 Observer
NetLogo 的世界由三类对象构成,理解它们对改造病毒模型至关重要:
- Agents(海龟):在场地中移动并执行动作的个体。通过
ask turtles [...]下发指令,方括号内的代码由所有海龟在 turtle 模式 下执行; - Patches(地块):场地上的方形区域,Agent 生活在上面。可以引用同一地块上的所有 Agent,也可以修改地块颜色等属性,还可以
ask patches执行动作; - Observer(观察者):控制世界的唯一 Agent,所有按钮处理函数都在 observer 模式 下执行。
✅ 多智能体环境的精妙之处在于:在 turtle 模式或 patch 模式下运行的代码,会由所有 Agent 同时并行执行。因此只需编写少量代码、定义单个 Agent 的行为,就能让整个模拟系统展现出复杂行为——这就是改造病毒模型时"改个体规则、观全局曲线"的底层原理。
主界面结构:Setup 与 Go
打开模型后进入 NetLogo 主界面,主要包含两个区域:
- Interface(界面) 区:主场地(所有 Agent 生存的方形区域)、各类控件(按钮、滑块等)、以及用于展示模拟参数的图表;
- Code(代码) 区:NetLogo 程序编辑器。
大多数模型界面都有 Setup 按钮(初始化模拟状态)和 Go 按钮(启动执行),它们对应代码中形如 to go [...] 的处理函数。
从模型库出发:挑选并改造基座模型
打开模型库
NetLogo 的最大优势之一在于内置了大量可直接运行的示例模型。操作路径为:File → Models Library,即可看到按类别组织的模型库。
模型库截图(Screenshot by Dmitry Soshnikov,来自课程 README)
以课程正文为例,打开 Biology → Flocking(鸟群聚集)即可观察涌现行为的经典演示。而针对本任务,则应定位到 Alternative Visualizations 目录下的 Virus 模型——它是改造为 COVID-19 传播仿真的推荐基座。
认识主模拟界面
打开一个基于个体(Agent)的模型后,主界面布局如下(以狼-羊-草捕食模型为例):
主界面截图(Screenshot by Dmitry Soshnikov,来自课程 README)
界面中可以看到:setup / go 控制按钮、以滑块形式存在的模拟参数(如初始个体数量、繁殖率等)、实时数值显示框、以及记录种群数量随时间变化的时序图表。这些正是完成病毒模型改造时需要观察和调整的核心交互元素——你可以在修改代码后反复执行 setup → go,观察传播曲线是否符合真实疫情特征。
改造案例深度拆解:Virus 模型 → COVID-19 仿真
为什么选择 Virus 模型
Virus 模型是一个典型的接触传播多智能体模型:个体在场地中随机移动,健康者与感染者接触后有概率被感染,感染者经过一定时间后康复或死亡。这一机制与 COVID-19 的"飞沫/接触传播、潜伏期、康复/死亡结局"高度同构,因此只需做参数级改造即可复现真实的流行曲线(如 SIR 模型式的先上升后下降趋势)。
改造思路与参数映射
将课程正文与任务要求相结合,可以设计如下改造映射(具体参数值需根据真实疫情数据调研设定,这里给出逻辑框架):
| 真实世界要素 | Virus 模型中的对应物 | 改造方式 |
|---|---|---|
| 易感人群数量 | 初始健康个体数 | 按目标城市/国家人口规模调整 |
| 传染概率 | 接触感染概率参数 | 依据 COVID-19 基本再生数 R0 标定 |
| 潜伏期/病程 | 感染持续 tick 数 | 对照 COVID-19 约 5~14 天潜伏期设定 |
| 康复/死亡比例 | 康复与死亡分支概率 | 参考公开的病死率数据 |
| 人群流动与接触 | 个体移动速度与感知半径 | 模拟封控、隔离等干预手段 |
任务强调的实验重点
任务文档特别提出了一个可验证的科学问题:"你能构建一个模仿真实病毒传播过程的模型吗?" 这意味着交付不应停留在"模型能跑"的层面,而应通过调整参数产生可对比的传播曲线,并与真实疫情数据的形态进行对照说明——这正是视频演示需要解释的核心内容。
实验扩展:从隔离参数到干预策略
改造完成后,还可以在模型中增加"恢复后免疫""接种比例""社交距离"等参数滑块,观察不同干预强度下感染峰值的到达时间与高度。这种"改变参数 → 观察整体涌现行为"的循环,正是多智能体建模用于决策支持(如交通规则评估、疫情管控评估)的标准工作方式。
成果交付:保存副本与视频演示
按任务要求,完成改造后需要:
- 保存模型副本:通过 NetLogo 的 File → Save As 将改造后的模型另存为一个独立文件(如
covid19-spread.nlogo),保留原始模型不被破坏,便于对照与复现; - 制作视频演示:在视频中完整呈现——原始模型的行为 → 你做了哪些代码与参数改动 → 改动后如何对应现实世界的 COVID-19 传播特征(如潜伏期、接触传染、干预效果)。
一个合格的演示视频应回答三个问题:模型改了什么?改动的现实依据是什么?模拟结果如何对应真实疫情曲线?
与课程体系的衔接
本任务是第 23 课"多智能体系统"的课后实践(英文原版见 lessons/6-Other/23-MultiagentSystems/assignment.md,法文版见 translations/fr/lessons/6-Other/23-MultiagentSystems/assignment.md),课程主页还提供了课后测验入口(quiz),以及延伸挑战:思考多智能体系统如何优化校车路线、如何在面包店中运作。完成本任务后,你实际上已经走通了"反应式 Agent → 涌现行为 → 现实问题建模"的完整链路,这与课程后续"慎思式 Agent(BDI 架构)"等内容形成了自然的进阶路径。
小结
本任务的核心价值在于:用最小的建模成本,复现一个具有真实世界对应关系的复杂系统。通过改造 NetLogo 模型库中的 Virus 模型,你既能掌握多智能体仿真的完整工作流(模型库 → 界面操作 → 代码改造 → 参数标定 → 演示交付),也能直观体会到"简单个体规则通过协同效应涌现出复杂系统行为"这一多智能体系统的核心原理——这正是 AI-For-Beginners 课程中第 23 课想要传递的关键认知。

