目录
1. 引言
从宏观到微观:
复杂系统是指其行为由许多单独部分之间的相互作用产生的系统:
Lotka-Volterra模型
单独部分=动物(捕食者和猎物)
相互作用=捕食(捕食者吃猎物)
SIR疾病模型
单独部分=人(易感者、传染者和康复者)
相互作用=疾病传播(从传染者到易感者)
这些系统的ODE模型要求我们用全局(或宏观)变量来表示它们的状态,并根据这些全局变量如何随时间变化来定义更新规则。
Lotka-Volterra模型
全局变量=捕食者/猎物的数量
更新规则=以出生率、死亡率和捕食率计算
SIR疾病模型
全局变量=每种疾病状态下的种群比例
更新规则=以感染率和恢复率计算
然而,为了建立这些ODE模型,我们必须对我们的系统做出假设。这两个模型都要求我们假设子种群中的所有个体都是相同的,而且我们种群中的所有个体都有相同的机会相互作用。
但是事实是,在讨论这些模型可能存在的问题时,这些假设不断出现,成为限制因素:
Lotka-Volterra模型
一些捕食者/猎物可能比其他人更强/更弱
一些捕食者/猎物可能比其他人更快/更慢
捕食者/猎物种群可能具有非均匀的空间分布
SIR疾病模型
一些年龄组(如儿童)可能更易受影响/感染
人口可能有不均匀的空间分布(例如,我们90%的人口可能接种了疫苗,但如果没有接种的10%的人都住在同一个郊区,那就是一个高风险的子人口)。
我们可以扩展我们的ODE模型来反映这种异质性(个体之间的变化),但所需的方程和参数的数量将迅速爆炸性增长。
在接下来的几篇博客里,我们将探索能够代表人口中这种异质性的建模方法:
元胞自动机模型 |
基于代理的模型 |
网络模型 |
这些模型将是计算性的而不是数学性的。
这篇博客我们先来学习元胞自动机模型,思考一个问题:
考虑一个SIR模型,在这个模型中,我们人口中的每个人在一个正方形格子(网格)上都有一个固定位置 :
- 什么是最合适的数据结构?
- 你可以如何表示状态?
- 你如何确定谁与谁互动?
- 状态如何更新?
2. 1D 细胞自动机
细胞自动机(CA)是一种离散动态系统,在简单的局部规则基础上表现出复杂的行为。
自动机:一种理论上的机器,它根据外部输入和自身先前的状态更新其内部状态。
细胞自动机:一个自动机(单元)阵列,其中一个单元的输入是附近单元的当前状态。
在一个CA里:
- 时间是离散的(如逻辑图)因为是逐次迭代的过程,不是连续的状态改变。
- 注:逻辑图,
- 空间是离散的:通常是一维或二维网格(三维也可)。
- 系统状态是离散的:系统的每个组件都处于一组有限的状态中(例如,开或关);因此,整个系统有有限的、可数的状态。
- 更新规则是根据组件之间的局部相互作用来定义的。
细胞自动机——应用
2.1 1D 细胞自动机——最简单的情况
一些基本的元素
一个一维的单元格:
每个细胞都有两种状态之一:
单元本身及其相邻的两个邻居(K = 3):
离散迭代(time step):
使用上一代的邻域状态:
邻域状态有种可能的组合:
这些组合中的每一个都决定了下一代中目标(中心)细胞的状态:
具体的例子:
2.2 1D 细胞自动机——行为
我们可以使用NetLogo来探索一些不同规则的行为,NetLogo的学习文档有:
NetLogo 6.2.2 User Manual: BehaviorSpace Guide
2.2.1 正式地描述1D细胞自动机
每个有限自动机由一个有限的单元格状态集、一个有限的输入字母表和一个过渡函数组成,它是一个从邻域状态集到单元格状态集的映射。
邻域的状态是由大小为的邻域模板所覆盖的自动机状态的函数(例如叉积)。因此,每个自动机的输入字母表由一组可能的邻域状态组成。
让,(细胞状态的数量) 。
的大小等于可能的邻域状态的数量:
为了定义一个转移函数,中唯一的下一个状态必须与一个可能的邻接状态相关联。
由于有的状态可供分配给每一个可能的邻域状态作为下一个状态,所以有个可能的转换函数可以被定义。
是所有可能的过渡函数的集合,可以用个邻域和个状态来定义。
例子:
考虑一个2维的细胞自动机,每个单元使用8个状态;一个有5个单元局部邻域(北、南、东、西)的规则网格。这里,,,所以有:
可能的邻域状态。
对于所有这些相邻状态,有8种不同的状态在下可供下一个细胞状态选择,所以有:
可能的过渡函数。
2.2.2 命名CA的规则
有可能地规则更新1D CA()。
这是Rule 90。
256条规则中的许多规则都是微不足道的相互等价:基础几何的简单转换:
- mirror:通过垂直轴的反射。
- complement:交换定义中0和1的角色
256条基本规则中的一些规则仅仅通过重新命名状态或左右颠倒就完全相同,因此本质上不同的基本规则的数量较少(只有88条)。
Rule 30
Rule 30 显示出非周期性的、混乱的行为:
与自然界中的模式有相似之处,纺织锥螺(Conus textile),鳕鱼洞,大堡礁,澳大利亚:
Rule 110
Rule 110 是图灵完全的,即能够进行普遍计算:
2.3 Discrete time dynamics
之前学习地ODE模型中的许多概念也适用于这里。
- 我们对系统的长期行为感兴趣:随着时间的推移会发生什么?
- 我们的状态空间(系统中所有可能状态的集合)是离散和有限的,我们的轨迹是状态的序列
- 我们可以观察到瞬态、固定点和极限循环吸引子
- 导致每个吸引子的状态构成了它的吸引盆
2.4 Wolfram classes
". ......许多(也许是所有)CA都属于四个基本的行为类别"——Stephen Wolfram, 1984
3. 2D Cellular Automata
2D CA与 1D CA类似,只是我们必须选择如何定义我们的邻域和我们的更新规则。
两个常见的邻域是:
冯-诺伊曼邻域
摩尔邻域
3.1 Conway’s Game of Life
像 Rule 110 一样,Game of Life 是图灵完全的。
生命的规则:
- 每个细胞都可以是活的(黑色)或死的(白色)。
- 如果一个活着的细胞有少于2个活着的邻居,它就会死去—— loneliness。
- 如果一个活着的细胞有3个以上的邻居,它就会死去——overcrowding。
- 如果一个活着的细胞有2个或3个活着的邻居,它就会活着——survival。
- 如果一个死亡的细胞正好有3个活的邻居,它就会活下来——reproduction。
活细胞的初始模式构成了系统的第一代。然后,这些规则同时应用于系统中的每一个细胞,产生第二代,以此类推。系统的长期行为是什么?
Loneliness
如果一个活的细胞少于2个活的邻居,它就会死亡:
Overcrowding
如果一个活着的细胞有超过3个活着的邻居,它就会死亡:
Survival
如果一个活着的细胞有2个或3个活着的邻居,它就能保持活力:
Reproduction
如果一个死细胞正好有3个活的邻居,它就会活过来:
具体地例子:
随着时间的推移,出现了有组织的模式:
可用于实现携带信息的信号和对这些信号的逻辑操作。
总结:
《Game of Life》(以及更普遍的《CA》)便是复杂系统的典型例子,性质如下:
- many components
- local interactions
- decentralised control
- parallel processing
- emergent global behaviour
- self-organisation
然而,它们仍然做出了一些强有力的假设,可能限制了它们作为真实系统模型的适用性:
- 所有的更新都是同步进行的
- 所有的更新都是确定性的
下一篇博客我们将讨论如何创建更现实的CA模型:捕食者与猎物的相互作用和一种传染病的传播。