概念
元胞自动机(Cellular Automata, 简称CA)是一时间和空间都离散的动力系统。散布在规则格网(Lattice Grid)中的每一元胞(Cell)取有限的离散状态,遵循同样的作用规则,依据确定的局部规则作同步更新。大量元胞通过简单的相互作用而构成动态系统的演化。
一般常见的有一维和二维元胞自动机,二维元胞自动机又可根据邻域的种类分为:冯诺依曼型(四邻域)和摩尔类型(八邻域)。
元胞自动机作为一种动态模型,常用于模拟在有限的离散空间中按照固定的一些规则随着离散时间变化的过程。
例程
动态地展示变化过程:
h = imagesc(你的元胞矩阵)
在按照一定规则更行状态的循环中,
set(h,‘cdata’,你的更新后的元胞矩阵)
drawnow或者pause(时间间隔)
火灾模型
参考博文:https://blog.csdn.net/cokezkx/article/details/98472741
用二维矩阵描述一片森林,每一个单位有三种状态:空地(0)、着火(1)、树木(2)。
规则:某格点的状态只由它的4邻域决定:
(1)正在燃烧的树变成空格位;
(2)如果绿树格位的最近邻居中有一个树在燃烧,则它变成正在燃烧的树;
(3)在空格位,树以概率p生长;
(4)在最近的邻居中没有正在燃烧的树的情况下树在每一时步以概率f(闪电)变为正在燃烧的树。
n = 300; %森林的矩阵大小
Plight = 5e-6; %闪电概率
Pgrowth = 1e-2; %生长概率
UL = [n 1:n-1]; %定义上左邻居
DR = [2:n 1]; %定义下右邻居
veg=zeros(n,n); %初始化表示森林的矩阵
imh = image(cat(3,veg,veg,veg)); %构成三维矩阵
% veg: empty=0 burning=1 green=2
for i=1:3000 %主循环开始
%判断上下左右四个邻居是否有火
sum = (veg(UL,:)==1) + (<