【数学建模】元胞自动机(CA)详解+Matlab代码实现
文章目录
- 一、什么是元胞自动机?
- 二、图解元胞自动机:
- 三、案例+Matlab代码实现:
- 1.奇偶规则
- 2.生命游戏
- 3.森林火灾
一、什么是元胞自动机?
元胞自动机(cellular automata,CA) 是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。
元胞自动机的构建没有固定的数学公式,构成方式繁杂,变种很多,行为复杂。故其分类难度也较大,自元胞自动机产生以来,对于元胞自动机分类的研究就是元胞自动机的一个重要的研究课题和核心理论,在基于不同的出发点,元胞自动机可有多种分类,其中,最具影响力的当属S. Wolfram在80年代初做的基于动力学行为的元胞自动机分类,而基于维数的元胞自动机分类也是最简单和最常用的划分。除此之外,在1990年,Howard A.Gutowitz提出了基于元胞自动机行为的马尔科夫概率量测的层次化、参量化的分类体系(Gutowitz,H. A.,1990)。下面就上述的前两种分类作进一步的介绍。同时就几种特殊类型的元胞自动机进行介绍和探讨S. Wolfrarm在详细分析研究了一维元胞自动机的演化行为,并在大量的计算机实验的基础上,将所有元胞自动机的动力学行为归纳为四大类(Wolfram. S.,1986):
- ⑴平稳型:自任何初始状态开始,经过一定时间运行后,元胞空间趋于一个空间平稳的构形,这里空间平稳即指每一个元胞处于固定状态。不随时间变化而变化。
- ⑵周期型:经过一定时间运行后,元胞空间趋于一系列简单的固定结构(Stable Patterns)或周期结构(Perlodical Patterns)。由于这些结构可看作是一种滤波器(Filter),故可应用到图像处理的研究中。
- ⑶混沌型:自任何初始状态开始,经过一定时间运行后,元胞自动机表现出混沌的非周期行为,所生成的结构的统计特征不再变止,通常表现为分形分维特征。
- ⑷复杂型:出现复杂的局部结构,或者说是局部的混沌,其中有些会不断地传播。
二、图解元胞自动机:
图片来源于连大数学建模
三、案例+Matlab代码实现:
1.奇偶规则
matlab代码:
%%奇偶规则游戏
clear;clc;
n = 200;%指定边界长度
Se = zeros(n);
z = zeros(n);
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;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.生命游戏
matlab代码:
clear;clc;
%%生命游戏
n = 200;
p = 0.4;
z = zeros(n);
Se = rand(n)<p;
Sd = zeros(n+2);
Ph = imagesc(Se);
while(true)Sd(2:n+1,2:n+1)=Se;sumValue = Sd(1:n,1:n)+Sd(1:n,2:n+1)+Sd(1:n,3:n+2)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2)+Sd(3:n+2,1:n)+Sd(3:n+2,2:n+1)+Sd(3:n+2,3:n+2);for i=1:nfor j=1:nif(sumValue(i,j)==3||(sumValue(i,j)==2&&Se(i,j)==1))Se(i,j) = 1;elseSe(i,j) = 0;endendendset(Ph,'cdata',Se);pause(0.05);
end
运行效果:
3.森林火灾
matlab代码:
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:kSd(2:n+1,2:n+1) = veg;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:nfor q=1:nif((sumValue(p,q)>0||rand()<Plight)&&veg(p,q)==2&&rand()<P2)%首先要是树,而且需要邻居有火或者被雷劈了,就会一定概率着火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;endendendset(imh, 'cdata', cat(3,(veg==1),(veg==2),zeros(n)))drawnow
end
运行效果:
【数学建模】元胞自动机(CA)详解+Matlab代码实现相关推荐
- 数学建模——智能优化之遗传算法详解Python代码
数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...
- matlab元胞自动机入门详解
元胞自动机的初步理解 对元胞自动机的初步认识 元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法.典型的元 胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状 态.变化规则适用 ...
- 【元胞自动机】基于元胞自动机的人口疏散仿真matlab代码
1 简介 为了消除礼堂的安全隐患,制定 行之有效的应急预案,有必要对礼堂人群疏散运动进行研究,掌握礼堂人群疏散的一般特点和规律.采用基于二维元胞自动机模型对某高校礼堂发生人群疏散运动进 行仿真,找出影 ...
- 【元胞自动机】基于元胞自动机模拟晶体生长附matlab代码
1 内容介绍 基于溶质扩散和界面能的作用,考虑成分过冷,曲率过冷,界面能各 向异性和界面扰动等因素,建立了单个等轴枝晶的生长模型.采用元胞自动机(cellular automata)方法模拟了枝晶生长 ...
- 【元胞自动机】基于元胞自动机模拟商场人流量matlab代码
1 简介 本文属于计算机科学和交通工程的交叉领域,涉及一种基于元胞自动机的商场行人微观仿真方法,首先对商场行人区域网格化处理,得到元胞自动机模型相应的元胞空间,并将其划分为一些凸多边形区域;其次判断每 ...
- 数学建模05-元胞自动机
数学建模05-元胞自动机 一.元胞自动机 元胞自动机主要应用于: 社会学:元胞自动机经常用于研究个人行为的社会性,流行现象,例如人口迁移,公共场所内人员的疏散,流行病传播. 图形学:元胞自动机以其特有 ...
- 数学建模——遗传算法步骤及程序详解
数学建模--遗传算法步骤及程序详解 文章目录 数学建模--遗传算法步骤及程序详解 前言 一.遗传算法的基础 1.编码和解码 2.适应度函数 3.交叉 4.变异 5.选择 二.遗传算法原理步骤 1.初始 ...
- 【元胞自动机】基于元胞自动机模拟HIV传染matlab源码
一.模型 介绍 元胞自动机就是类似于一个系统,各个单元,即元胞都有联系,但整体的系统又对各个小的单元产生影响,这影响便可定义为规则.而我们的目的就是找到这些规则来进行预测未来系统的发展.(通过计算机的 ...
- 元胞自动机交通模型【matlab实现】
Matlab元胞自动机交通模型案例分享 模型介绍 算例设计 matlab使用元胞自动机进行仿真(部分代码) 结果展示(部分结果) 模型介绍 交通模型空间示意图(T字路口+人行道) 算例设计 根据上述模 ...
- 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码
粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...
最新文章
- 深入浅出grep与正则表达式
- 让手机站点像原生应用的四大途径
- 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
- 深入理解pthread_cond_wait、pthread_cond_signal
- SpringMVC的请求-文件上传-客户端表单实现
- XCTF-高手进阶区:bug
- HDU(1572),最短路,DFS
- 利用浏览器调试功能 计算 百度网盘 文件数量 V2
- SU命令的功能及基本用法--psmerge
- a + b + c 求和
- 前端代码编辑器 sublime text 4 for Mac v4.0(4114) 中文设置
- MapReduce 规划 系列十 采用HashPartitioner调整Reducer计算负荷
- JVM源码分析之JDK8下的僵尸(无法回收)类加载器
- 你有必要不沾计算机一段时间英语,新人教版八年级英语下册unit 1必背词组及句子...
- 利用clamav为程序添加查毒功能
- 如何批量下载网站中的超链接(一次性下载网页中所有可能的PDF文件)
- 清理或破坏病毒流氓若干
- 如何在pdf文件上进行电子签名
- mysql中事务id,有啥用?
- oracle假如存在才删除该字段,Oracle删除表、字段之前判断表、字段是否存在
热门文章
- IT小公司避坑及生存指南
- 西南科技大学OJ题 舞伴问题1027
- 全网最全-固定资本存量分省、市、地区、产业-含计算过程
- 西门子plc烧录单片机_用51单片机做简易PLC
- 模拟电路——阻容耦合放大电路
- 【数学建模】算法模型(三)|模糊综合和灰色关联分析 元胞自动机模型 图论 BP神经网络算法 马尔可夫链蒙特卡罗算法(MCMC)
- quartus ii IP核的破解
- html 自动阅读,自动阅读软件脚本
- 基于基于jsp+mysql+Spring+mybatis的SSM汽车保险理赔管理系统设计和实现
- Ubuntu下VLC播放器安装配置以及VLC常用快捷键记录