Module 03 · 智能体建模

个体是简单的,
涌现是复杂的。

一句话:ABM 不给系统写方程,而是给每个个体写规则——让成千上万个异质智能体在共享环境中自主感知、决策、交互,宏观模式作为计算结果「长」出来而不是被假设出来。这一页拆开 ABM 的内部构造:涌现如何发生、计算循环如何运转、以及为什么它的输出是分布而不是点。

01 · 直觉与定义

从鸟群开始:没有一只鸟知道队形,也没有指挥官。每只鸟只遵守三条局部规则——别撞上邻居、跟上方向、靠拢群体——整群的一致队形与转向便作为整体模式涌现出来。(雁阵那样整齐的 V 形排列还需要额外的气动与位置约束,这三条规则本身并不足以产生。)ABM 的世界观:宏观不是微观的平均,而是微观交互的产物;「整体行为」不需要被写进模型,它会被计算出来。

与另外两种范式的对照:DES 追踪「过程」中的实体,SD 聚合出「存量」,而 ABM 保留每一个体的完整身份——谁在哪里、记得什么、认识谁。当个体差异、局部互动和网络结构正是答案本身时(观点极化、病毒传播、市场崩盘),ABM 是三者中最能原样表达它们的范式。

自下而上的代价

ABM 换来的自由是有代价的:模型由设计者编写,规则稍改结果剧变,因此校准与验证最难;运行一次往往只是一次抽样,严谨的结论需要成百上千次蒙特卡洛重复。ABM 不是更「真实」,而是把解释责任从方程转移到了规则设计。

异质个体局部交互涌现模式规则 → 交互 → 模式(自下而上)
图中的队形不在任何一只鸟的规则里——它是个体交互的计算结果。

02 · 核心机制:感知-决策-行动循环

每个智能体在每个周期执行同一个循环:感知(读局部环境与邻居)→ 决策(按自己的规则与参数评估选项)→ 行动(移动、交易、传播、改变状态)→ 环境更新(与其他智能体的行动叠加)。数以百万计的这类循环并发运行,宏观模式在观测层浮现。

调度:同步还是异步

同步更新:所有智能体基于同一时刻的状态同时决策——秩序井然但可能产生人为的节拍。异步更新:按随机顺序逐个激活——更接近现实,但结果依赖激活顺序,需要随机化并多次重复。调度方式本身就是模型假设的一部分,必须显式声明。

时间推进通常是离散的固定步长(像 SD 的切片),但状态变化高度随机且个体化——这使 ABM 兼具 SD 的「切片时钟」与 DES 的「随机离散」两种血脉,只是通常不具备事件队列那样的时序精度(架构组成一节的调度器可改为事件驱动)。

for agent in schedule(shuffled) // 异步随机调度
  seen = perceive(local_env, neighbours)
  choice = decide(rules_i, seen, params_i)
  act(agent, choice)           // 移动/交易/传播…
end
env.update()                      // 所有行动叠加进环境
observer.record(macro_stats)      // 记录涌现指标

03 · 架构组成

一个 ABM 由六个部件构成,各司其职——它们共同回答三个问题:谁在行动?在哪里行动?按什么规则行动?

Agents

智能体

异质个体——状态、记忆、行为规则与个体参数。

Space

环境

网格、网络或连续空间——智能体栖身与交互的载体。

Rules

交互规则

局部规则——只看邻居与近邻环境,不做全局计算。

Random

随机性

可控随机源——固定种子便于复现,多 seed 支撑统计结论。

Scheduler

调度器

激活顺序——同步、随机异步或基于事件的调度。

Observer

观测器

宏观统计——把个体轨迹聚合为涌现指标与时间序列。

04 · 数学骨架:转移函数与蒙特卡洛

ABM 没有统一的全局方程,但有形式骨架:每个智能体是一个状态转移函数,宏观量是个体状态的聚合——而聚合通常不可解析,只能靠运行统计。这正是 ABM 被归入「计算方法」一类的原因:方程存在,但解只能算出来,不能推出。

ai,t+1 = fi(ai,t, Ni(t), E(t), θi)智能体 i 的下一状态 = 决策函数 f,输入为自身状态 a、邻域 N、环境 E、个体参数 θ。
X(t) = Σi g(ai,t)宏观变量是个体状态的聚合函数 g——极化指数、市场深度、感染人数皆由此而来。
E[X] ≈ 1n Σr=1..n Xr(T)ABM 的输出是分布不是点:同一模型跑 n 次(不同随机种子),取终值统计。

由此得到 ABM 的三条方法论纪律:一、随机种子必须固定并可复现;二、任何结论都要报告跨重复的分布(均值±区间),而不是单次轨迹;三、参数校准要面对「殊途同归」(equifinality)问题——不同规则组合可能产生相同宏观模式,需谨慎解读。

for r in 1..n:                  // n 次独立重复
  world = init(seed_r)
  while t < T: world.step()
  X[r] = observer.final(world)
report(mean(X), CI(X), hist(X))

05 · 适用与失效

它擅长

  • 异质性主导的问题:个体差异与局部互动决定宏观结果。
  • 涌现现象:极化、传染、聚集、时尚、迁徙、崩盘。
  • 网络与空间结构:谁是邻居、谁认识谁至关重要。
  • 适应性主体:学习、策略调整、机制设计实验。

它失效

  • 需要解析洞察——「为什么」藏在规则里,不藏在闭式解里。
  • 精确过程时序——排队、服务次序不在其表达范围。
  • 大规模总体——百万个体千次重复,算力与时间成本陡增。
  • 强宏观约束——总量守恒、均衡条件需要额外机制强行维持。

三个范式各有一块「别家管不了」的地盘——这正是混合仿真的存在理由。

06 · 耦合接口提示

放进混合模型时,ABM 通常承担「微观适应层」:向上把个体行为统计成宏观速率供给 SD;横向与 DES 共享资源与队列——智能体产生订单事件交给 DES 执行,DES 的处理结果再反馈回个体记忆。

三个关键技术点:聚合对齐——ABM 的统计口径必须与 SD 的流入定义一致;事件映射——智能体行动到离散事件的转换要有明确协议;分布校准——ABM 的随机性会放大上游参数的方差,需在耦合层面重做灵敏度分析。

查看完整对照表 →

ABM 在耦合中的典型分工

  • 导出:行为统计量(速率/比例)、个体事件流、网络结构快照。
  • 接收:宏观参数(价格/政策)、资源可用性、服务结果反馈。
  • 同步:固定步长与 DES 时钟对齐,聚合窗口与 SD 的 dt 对齐。