cellular automata
元胞自动机(cellular automata,CA) 是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学
模型,具有模拟复杂系统时空演化过程的能
概述
元胞自动机是一个空间和状态都是离散的模型。该模型可以用一个四元组表示:
其中:
- $S$表示细胞状态,是一个有限的、离散的状态集合;
- $L_a$表示元胞空间,$a$是一个整数,表示细胞空间的维数;
- $N$表示领域内元素的组合,$n$表示邻居的个数
- $f$表示状态转移函数,即状态转移规则
对于一个元胞,在空间位置上与它相邻的元胞称为它的邻元(有时也称作邻居)。
邻域和邻元的定义可以是多样的
下图为一维CA网格邻域定义
下图为二维CA网格邻域定义
每个元胞有若干个状态,如:
- 物理系统:(分子)固态,液态
- 生物系统:(细胞)死or活
- 社会系统: (个人)相信与不相信谎言
- 政治系统: (国家)战争与妥协…
在各种CA模型中,每个等份(单元格)代表一个元胞,CA的网格可以有不同的形式(维数,大小)。
- 一维的CA模型是将直线分成若干相同的等份;
- 二维的CA模型是将一个平面分成许多正方形、六边形或三角行的网格(最常见的是将其划分成正方形);
- 三位的CA模型将空间划分成许多立体网格。
根据每个元胞及邻元的不同状态,由于状态更新规则决定这个元胞下一个时刻的状态。
序号$i$个体在$t=1,\dots,n$时刻的状态:
其中$S_i^t,S_1^t,S_2^t,\dots,S_n^t$为个体$i$的邻元在$t$时刻的状态。
规则可以是确定型的,也可以是随机型的。对于一个一维的CA,一个细胞具有两种可能的状态如生or死,相信或者不相信等等,表示为0or1.
如果规则一:我使用下图的左边的邻元定义
定义其状态更新规则:当一个个体的两个邻元都活或都死,该个体在下一时刻为死;反之,他的状态在下一时刻变为活。
再如规则二:我仍然使用当前左边邻元定义,但重新定义其状态
更新规则为:当个体的两个邻元都活或都死,该个体再下一时刻改变状态;反之,该个体的状态在下一时刻保持不变。
模型的构建
考虑以下问题:
- 确定系统中有那些个体,如何分类?
- 个体有几种状态,分别是什么;
- 个体所处空间形式,是一位,二维还是多为;
- 个体的邻元形式及个数,这与网格形式及交互群体规模有关
- 根据个体状态、网格形式及邻元,确定个体状态的演变规则。
此外,还需确定: - 系统中的个体与单元格是否一致。
简单的、经典的CA模型中,单元格与个体不加区分,每个单位格就是一个个体,个体始终在单元格中,个体的状态即为单元格的状态。但在一些复杂系统中,尤其在个体可以移动的系统中,将个体与单元格区分更为方便。 - 系统中是否离散事件。
采用CA模型描述的系统,每个时刻都需根据规则确定伟哥元胞的状态。除此之外,有的系统中某些个体会在特定时刻(有条件或无条件)发生状态变化,此时可以采用离散时间仿真方法,将该时刻列入事件表,根据事件表处理该类事件。
pip --default-time=100 install pandas
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!