元胞自动机(CA)及Matlab代码实现

目录

1. 元胞自动机基础概念:       

1.1 构成

1.2 常用的邻居边界条件类型

2.  MATLAB代码实现:

2.1 奇偶规则

2.2 澳洲火灾


1. 元胞自动机基础概念:       

        元胞自动机(cellular automata,CA) 是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。

1.1 构成

        元胞自动机由元胞元胞空间元胞邻居元胞规则四部分组成。

  •  元胞: 就是一个单元或者基元,是元胞自动机最基本的部分
  • 元胞空间:就是元胞在空间分布上的集合
  • 邻居:某一元胞状态更新时所要搜索的空间区域就是该元胞的邻居
  • 边界条件:考虑了元胞空间边界上的元胞在元胞空间不是无限的情况下拥有规则所需要的邻居,就需要构造出一些虚拟的邻居
  • 规则: 根据元胞当前状态及邻居的状态来决定下一时刻该元胞的状态。元胞自动机根据规则进行局部元胞间的相互作用从而引起全局的变化。

1.2 常用的邻居边界条件类型

        固定型,周期型,绝热型和映射型四种类型。

固定型:固定给某一个数值,没有规则来确定。

                例如图中左下角这个3没有左邻居和下邻居,所以我们任意给值作为其邻居的值

周期型:

                左上角的3放置最下侧作为3的下邻居 右下角的5放置左下角作为3的左邻居

绝热型:

                将缺少邻居的中心元胞的值赋给邻居

                

 映射型:

                由中心元胞相邻的邻居进行赋值,类似于跳棋

                

2.  MATLAB代码实现:

2.1 奇偶规则

%%奇偶规则游戏
clear;clc;

%指定边界长度
n = 200;
Se = zeros(n);
z = zeros(n);

%将中间5*5=25个点初始化为1
Se(n/2-2:n/2+2,n/2-2:n/2+2)=1;  

Ch = imagesc(Se);
axis square;

%设置边界情况
Sd = zeros(n+2);  

while(true) %死循环
    Sd(2:n+1,2:n+1) = Se;
    %4邻居型计算通用式 进行邻居数值求和 
    sumValue = Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2);
    Se = mod(sumValue,2);
    set(Ch,'cdata',Se);
    pause(0.03)
end

 2.2 澳洲火灾

规则:

(1)树————>火

  • 邻居着火,该树有一定概率着火
  • 树一定概率受雷劈着火

(2)火————>空地

  • 着火的地方有一定概率变为空地

(3)空地————>树

  • 空地有一定概率变成树
clear;clc;
%火灾
 % 定义表示森林的矩阵大小
n = 300;    
 % 迭代次数                      
k = 30000;      
       
Pground = 0.8;                      % 从着火变成空地的概率                 
Plight = 5e-6; Pgrowth = 1e-3;      % 定义闪电和生长的概率  
P2=0.7;                             %旁边有火,树着火的概率

UL = [n,1:n-1]; DR = [2:n,1];      % 定义上左,下右邻居
veg=zeros(n,n)+2;                    % 初始化表示森林的矩阵
imh = image(cat(3,veg,veg,veg));   % 可视化表示森林的矩阵
Sd = zeros(n+2);                 %边界

% veg = 空地为0 着火为1 树木为2
for i=1:k
    Sd(2:n+1,2:n+1) = veg;
    %8邻居通用表达式 判断邻居是否着火
    sumValue = (Sd(1:n,2:n+1)==1)+(Sd(2:n+1,1:n)==1)+(Sd(2:n+1,3:n+2)==1)+(Sd(3:n+2,2:n+1)==1);
    
    %进行演化迭代
    for p=1:n
        for q=1:n
            if(veg(p,q)==2 && ((sumValue(p,q)>0 && rand()<P2)||rand()<Plight))
                %首先要是树,而且需要邻居有火,就会一定概率着火;或者被雷劈了,就会直接着火
                veg(p,q)=1;
            elseif(veg(p,q)==1&&rand()<Pground)
                %如果是火且满足概率,则变为空地
                veg(p,q) = 0;
            elseif(veg(p,q)==0&&sumValue(p,q)==0&&rand()<Pgrowth)
                %如果是空地,且周围没有火,那么以一定概率长成树
                veg(p,q) = 2;
            end
        end
    end
    set(imh, 'cdata', cat(3,(veg==1),(veg==2),zeros(n)))
    drawnow  
end

 

 

 

参考:
【数学建模】元胞自动机(CA)详解 + Matlab代码实现_WSKH0929的博客-CSDN博客_matlab元胞自动机

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1 2/3维图像分割工具箱 2 PSORT粒子群优化工具箱 3 matlab计量工具箱Lesage 4 MatCont7p1 5 matlab模糊逻辑工具箱函数 6 医学图像处理工具箱 7 人工蜂群工具箱 8 MPT3安装包 9 drEEM toolbox 10 DOMFluor Toolbox v1.7 11 Matlab数学建模工具箱 12 马尔可夫决策过程(MDP)工具箱MDPtoolbox 13 国立SVM工具箱 14 模式识别与机器学习工具箱 15 ttsbox1.1语音合成工具箱 16 分数阶傅里叶变换的程序FRFT 17 魔方模拟器与规划求解 18 隐马尔可夫模型工具箱 HMM 19 图理论工具箱GrTheory 20 自由曲线拟合工具箱ezyfit 21 分形维数计算工具箱FracLab 2.2 22 For-Each 23 PlotPub 24 Sheffield大学最新遗传算法工具箱 25 Camera Calibration 像机标定工具箱 26 Qhull(二维三维三角分解、泰森图)凸包工具箱 2019版 27 jplv7 28 MatlabFns 29 张量工具箱Tensor Toolbox 30 海洋要素计算工具箱seawater 31 地图工具箱m_map 32 othercolor配色工具包 33 Matlab数学建模工具箱 34 元动机 35 量子波函数演示工具箱 36 图像局域特征匹配工具箱 37 图像分割graphcut工具箱 38 NSGA-II工具箱 39 chinamap中国地图数据工具箱(大陆地区) 40 2D GaussFit高斯拟合工具箱 41 dijkstra最小成本路径算法 42 多维数据快速矩阵乘法 43 约束粒子群优化算法 44 脑MRI肿瘤的检测与分类 45 Matlab数值分析算法程序 46 matlab车牌识别完整程序 47 机器人工具箱robot-10.3.1 48 cvx凸优化处理工具箱 49 hctsa时间序列分析工具箱 50 神经科学工具箱Psychtoolbox-3-PTB 51 地震数据处理工具CREWES1990版 52 经济最优化工具箱CompEcon 53 基于约束的重构分析工具箱Cobratoolbox 54 Schwarz-Christoffel Toolbox 55 Gibbs-SeaWater (GSW)海洋学工具箱 56 光声仿真工具箱K-Wave-toolbox-1.2.1 57 语音处理工具箱Sap-Voicebox 58 贝叶斯网工具箱Bayes Net Toolbox(BNT) 59 计算机视觉工具箱VFfeat-0.9.21 60 全向相机校准工具箱OCamCalib_v3.0 61 心理物理学数据分析工具箱Palamedes1_10_3 62 生理学研究工具箱EEGLAB 63 磁共振成像处理工具箱CONN 18b 64 matlab 复杂网络工具箱 65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 matlab优化工具箱 73 数据包络分析工具箱 74 图像分割质量评估工具包 75 相关向量机工具箱 76 音频处理工具箱 77 nurbs工具箱 78 Nurbs-surface工具箱 79 grabit数据提取工具箱 80 量子信息工具箱QLib 81 DYNAMO工具箱 82 NEDC循环的整车油耗量 83 PlotHub工具箱 84 MvCAT_Ver02.01 85 Regularization Tools Version 4.1 86 MatrixVB 4.5(含注册) 87 空间几何工具箱 matGeom-1.2.2 88 大数计算工具箱 VariablePrecisionIntegers 89 晶体织构分析工具包 mtex-5.7.0 90 Minimal Paths 2工具箱 91 Matlab数学建模工具箱

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值