目录
1. 引言
细胞自动机的局限性,不能够直接分析行为。
本节的目的是:
- 认识到在实现CA模型时需要做出的一些关键决策
- 理解基于ODE模型指定CA模型所涉及的步骤
- 欣赏模型设计的创造性方面
2. 模型的实现
空间
我们需要思考的问题有:
- 空间是如何表现的?
- agent 如何在空间中定位?
并且需要考虑:
- 离散与连续的空间
- 单个与多个 cells 占用
- proximate 与 long-range 的相互作用
时间
我们需要考虑的问题有:
- 时间是如何体现的?
- 事件的顺序如何影响行为?
并且需要考虑:
每个单元的状态被更新的顺序
- 系统的每个组件都会同时更新吗?(同步更新)
- 还是一次一次地更新?(异步更新)
- 如果是异步更新,这些组件将以什么顺序被更新?
离散时间与连续时间
- 离散:检查每个时间步长会发生什么。
- 连续:接下来会发生什么事件,何时发生?
信息
我们需要考虑的问题有:
- 组件(cells / agents)使用什么信息?
- 它们是如何获得的?
并且需要考虑:
- 变量的范围:global、cell(patch)、agent(turtle)。
- 如何访问和修改这些变量
- 感知的(空间)范围:随着范围的扩大会发生什么?(即,什么是邻域?)
状态更新
我们需要考虑的问题有:
- 更新是确定性的还是随机性的?
- 这个决定如何影响行为?
并且需要考虑:
- 一个组件的未来状态是否将由其当前的输入、环境等唯一指定?(确定性更新)
- 还是会涉及一些随机性?(随机更新)
3. 应用:Lotka-Volterra
Lotka-Volterra模型:
- 猎物(兔子):
- 捕食者(红狐狸):
参数:
- 兔子数量的增长率
- 狐狸捕食(吃)兔子的速度
- 狐狸种群的增长率
- 由于死亡和迁移导致的狐狸种群的衰减率
3.1 Lotka-Volterra模型的CA版本
我们不是直接对每个人口的规模(宏观变量)进行建模,而是明确表示每个个体,然后观察(测量)人口的规模。
空间:
- 我们将在一个二维规则格子(网格)上表示每个个体的位置,而不是假设我们的种群混合得很好。
- 我们将做一个新的假设,即在任何时间点上只有一只动物可以占据一个网格空间。
时间:
- 我们将使用离散的时间步骤,而不是连续处理时间。
信息:
- 我们将假设每个动物个体只知道它的近邻。
状态更新:
- 我们的二维格子中的每个单元将取三个值中的一个:
更新规则:
从我们的格子中随机挑选一个单元(A)。
随机选择A的一个邻居(B)。
更新如下:
- 如果A包含一只兔子,B是空的,那么,在概率为α的情况下,兔子会繁殖,B现在包含一个新的兔子——猎物繁殖
- 如果A中有一只狐狸,B中有一只兔子,或者如果A中有一只兔子,B中有一只狐狸,那么兔子被吃掉的概率为;并且,如果发生这种情况,以概率,原先含有兔子的细胞现在含有新的狐狸——猎物死亡和捕食者繁殖
- 如果A中有一只狐狸,而B为空,那么狐狸死亡的概率为——捕食者死亡
- 如果A是空的,而B包含一只狐狸或一只兔子,那么相邻的动物就会从B移动到A——动物移动
4. 应用:流行病
SIR疾病模型:
状态变量:
- 目前易受感染的人口比例
- 目前具有传染性的人口比例
- 目前已康复的人口比例
- 注:因此,
参数:
- 易感者和传染者之间的有效接触率
- 感染者的康复率
4.1 SIR疾病模型的CA版本
我们不是直接测量每个疾病区间的人口比例(宏观变量),而是明确表示每个个体,标记他们当前的疾病状态,然后观察(测量)每个状态的人口比例。
空间:
- 我们不是假设我们的种群是很好的混合,而是将每个个体的位置表示在一个二维规则格子(网格)上。
- 我们将作出新的假设,即一个人同时占据一个网格单元,而且人们的位置在一段时间内是固定的(即他们不会移动!)。
时间:
- 我们将使用离散的时间步骤,而不是连续处理时间。
信息:
- 最初,人口中的一部分p是有传染性的,其余的人口是易受感染的。
4.1.1 SIR疾病模型的第一版CA
状态更新:
- 我们的二维格子中的每个单元将取三个值中的一个:
更新规则:
- 一个易感者可以被一个有传染性的邻居感染的概率为
- 一个受感染的人恢复的概率为
4.1.2 SIR疾病模型的第二版CA
请注意,对于任何现实世界的系统,我们可能有多种可能的模型可供选择:
如前所述,每个站点对某种疾病可以是易感的()、传染的()或恢复的()。现在,免疫是暂时的,人们以 的速率再次易感。因此,平均而言,人们是:
- 感染:天
- 恢复(免疫)为:天
状态更新:
现在每个单元格可以在 范围内取值,如下所示:
更新规则:
- 如果一个易感者的邻居中至少有一个人具有传染性,那么这个易感者就会受到感染。
- 感染者在天后恢复过来
- 康复者在天后失去免疫力并成为易感者(免疫力减退)。
5. 探索我们的模型行为
参数扫描:
描述模型行为的一种常见方法是进行参数扫描:系统地改变每个参数的值,以了解其对系统行为的影响。
例如(SIR疾病模型的第二版CA),对以下每个组合运行模型:
- (传染病人的初始比例)
- (一个人感染的天数)
- (一个人恢复/免疫的天数)
- 即, 种可能的组合
参数扫描:
- 因为我们的模型行为是随机的,我们可能想把每个参数组合运行几次,考虑系统的平均行为。
- 对于轨迹(即随时间变化的状态序列),这可能是困难的。通常情况下,我们确定一些全局测量,记录每次模拟运行的值,并报告平均值和标准差。
6. 基本CA模型的扩展
异步或同步CA
基本的CA在每个时间步骤中同步(在同一时间)更新所有单元。我们也可以在不同时间更新单元。
概率性CA
基本CA的更新规则是确定性的(Cx.05例子)。我们也可以使用概率/随机的更新规则(Cx.06的例子)。
非同质性CA
基本CA对每个单元都适用相同的更新规则。我们也可以使用上下文敏感的规则。
网络结构的CA
基本CA用网格相邻关系来定义邻域。我们也可以使用更复杂的邻居网络拓扑结构(我们将在后面看这个)。
7. 为什么使用CA?
优势:
- 它们(相对)简单,容易实现
- 它们可以表示难以用ODEs建模的相互作用和行为
- 它们反映了系统组件的内在个性
缺点:
- 它们是相对受限制的(拓扑结构、相互作用、个体行为)。
- 全局行为可能难以解释