元胞自动机
我们先来介绍下什么是元胞自动机
我们在计算模拟曲线所采用的往往是诸如微分方程或偏微分方程等可以具体写出方程这样的方式建立动力学模型
而元胞自动机是没有具体的数学方程的
关于元胞自动机的原理这个ppt说的比较好:https://wenku.baidu.com/view/86050cb9aeaad1f347933f28.html
我在这里只做一个简单的概述:
元胞自动机其实就是一个离散空间
对于每一个元胞,在空间位置上与其相邻的元胞成为邻元(邻居),所有的邻元组成了邻域
image.png
上图表示的是不同情况的邻域
工作原理
根据每个元胞及其邻元的不同状态,由状态更新规则决定这个元胞在下一个时刻的状态
其中
那么状态更新规则有两个:
规则一:
规则一
规则二:
规则二
根据元胞自动机来建模的规则:
- 有哪些对象,分类如何
- 个体有几种状态,分别为什么
- 个体所处的空间形式,一维,二维还是多维
- 个体邻元形式及个数以及网络形式
- 确定演变规则
一般来说模型采用二维网格,邻元个数为8
比方说:
对于流言模型
对于这个元胞的8个邻元在(0,1)均匀分布(相信的概率)上随机抽样;<0.5为不相信,>0.5为相信
实际建模
我比较感兴趣的是利用元胞自动机建立传染病模型,其中有一个例子是艾滋病传染模型:
我们设定:
- 零传播人群P0,例如出生的婴儿,不会传染给他人
- 一般人群PL,行为正常者
- 高危人群PH,具有高危行为,例如吸毒者
- 报复者PH+,这些人感染后报复社会,恶意传播他人
结构图
其中在感染阶段,行为危险的群体如果注意自身行为可以转变为健康人
不同的个体类型传播强度不同,利用不同邻域来体现不同的传播强度;不同的个体易感度都不同
其传播规则如下:
什么意思呢?
规则一指的是假如有一个感染者出现了,而他的邻元都是健康人
如上图,黑色的是感染者,浅褐色的是健康人,仿照流言模型,健康人也可以设置一个感染概率,以此来计算健康人转变为危险状态的过程
规则二类似于规则一,以同样的模型可以解释个体从危险状态向感染状态发展的过程