ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【元胞自动机】基于matlab元胞自动机森林大火【含Matlab源码 235期】

【元胞自动机】基于matlab元胞自动机森林大火【含Matlab源码 235期】 欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab元胞自动机仿真内容点击①Matlab元胞自动机进阶版⛳️关注CSDN海神之光更多资源等你来⛄一、元胞自动机简介1 元胞自动机发展历程最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视.1970 年, 剑桥大学的约翰 · 何顿 · 康威设计了一个电脑游戏 “生命游戏” 后, 元胞自动机才吸引了科学家们的注意.1983 年 S.Wolfram 发表了一系列论文. 对初等元胞机 256 种 规则所产生的模型进行了深入研究, 并用熵来描述其演化行 为, 将细胞自动机分为平稳型, 周期型, 混沌型和复杂型.2 对元胞自动机的初步认识元胞自动机CA是一种用来仿真局部规则和局部联系的方法。典型的元胞自动机是定义在网格上的每一个点上的网格代表一个元胞与一种有限的状态。变化规则适用于每一个元胞并且同时进行。典型的变化规则决定于元胞的状态以及其 4 或 8 邻居的状态。3 元胞的变化规则元胞状态典型的变化规则决定于元胞的状态以及其 4 或 8 邻居的状态。4 元胞自动机的应用元胞自动机已被应用于物理模拟生物模拟等领域。5 元胞自动机的matlab编程结合以上我们可以理解元胞自动机仿真需要理解三点。一是元胞在matlab中可以理解为矩阵中的一点或多点组成的方形块一般我们用矩阵中的一点代表一个元胞。二是变化规则元胞的变化规则决定元胞下一刻的状态。三是元胞的状态元胞的状态是自定义的通常是对立的状态比如生物的存活状态或死亡状态红灯或绿灯该点有障碍物或者没有障碍物等等。6 一维元胞自动机——交通规则定义6.1 元胞分布于一维线性网格上.6.2 元胞仅具有车和空两种状态.7 二维元胞自动机——生命游戏定义7.1 元胞分布于二维方型网格上.7.2 元胞仅具有生和死两种状态.元胞状态由周围八邻居决定.规则骷髅死亡笑脸生存周围有三个笑脸则中间变为笑脸少于两个笑脸或者多于三个中间则变死亡。8 什么是元胞自动机离散的系统: 元胞是定义在有限的时间和空间上的, 并且元 胞的状态是有限.动力学系统: 元胞自动机的举止行为具有动力学特征.简单与复杂: 元胞自动机用简单规则控制相互作用的元胞 模拟复杂世界.9 构成要素1元胞 (Cell)元胞是元胞自动机基本单元状态: 每一个元胞都有记忆贮存状态的功能.离散: 简单情况下, 元胞只有两种可能状态; 较复杂情况下, 元胞具有多种状态.更新: 元胞的状态都安照动力规则不断更新.2网格 (Lattice)不同维网格常用二维网格3邻居 (Neighborhood)4边界 (Boundary)反射型以自己作为边界的状态吸收型不管边界车开到边界就消失5规则状态转移函数定义根据元胞当前状态及其邻居状况确定下一时刻该元胞状态的动力学函数, 简单讲, 就是一个状态转移函数.分类 总和型: 某元胞下时刻的状态取决于且仅取决于它所有邻居 的当前状态以及自身的当前状态.合法型: 总和型规则属于合法型规则. 但如果把元胞自动机 的规则限制为总和型, 会使元胞自动机具有局限性.6森林火灾绿色树木红色火黑色空地。三种状态循环转化树周围有火或者被闪电击中就变成火。空地以概率p变为树木理性分析红为火灰为空地绿是树元胞三种状态的密度和为1火转化为空地的密度等于空地转换为树的密度新长出来的树等于烧没的树f是闪电的概率:远远小于树生成的概率T s m a x T_{smax}T smax​是一大群树被火烧的时间尺度程序实现周期性边界条件购进啊其中的数字为编号构建邻居矩阵上面矩阵中的数字编号对应原矩阵相同位置编号的上邻居编号一 一对应同样道理7交通概念车距和密度流量方程守恒方程时空轨迹横轴是空间纵轴为时间红线横线与蓝色交点表示每个时间车的位置。如果是竖线则表示车子在该位置对应的时间宏观连续模型最常用的规则红色条表示速度是满的。1 加速规则不能超过v m a x 2 格 / s v_{max}2格/svmax2格/s2 防止碰撞不能超过车距理论分析结果分析: 密度与流量第一个图横坐标是归一化后的密度纵坐标是车流量。第二个图理论值与CA的结果结果分析: 时空轨迹中间的深色区域是交通堵塞的区域。⛄二、案例及部分源代码1 案例元胞自动机——应用于森林火灾和传染病场景最近接触了元胞自动机模型做了一些资料搜查并进行学习推荐这篇文章澳洲变燠洲考拉成烤拉澳大利亚山火为什么难以控制以下对所学进行记录。森林火灾元胞自动机原理在元胞自动机模型中空间被离散成网格每一个网格被称为元胞。森林火灾元胞有三种状态树火正在燃烧的树和空空地状态。元胞下一时刻状态的更新规则如下树变火一棵树其上下左右若有一个状态为火下一刻就会变成火。或者一棵树遇上闪电下一刻就会变成火。由于遇上闪电着火的概率Plight很小。火变空火在下一时刻会变成空。空变树空地下一时刻会以一个很小的概率Pgrowth长出新树。改进模型会考虑树的对角位置有没有着火。或者会考虑风向比如吹西风火从东吹向西火的西边着火的机率会变大顺风火的东边着火的几率变小逆风这里盗个图图a是基础元胞自动机图b是考虑对角的元胞自动机图c是吹西风的元胞自动机。本人这里对基础元胞自动机考虑对角情况的元胞自动机考虑吹西风的元胞自动机三种模型进行仿真仿真结果如下⛄2 部分源代码P[];for m1:10clear D T fire_time_lightning fire_time_itself aspect tdata Index;%% Orginal%the first 3 dimension is RGBR is the fireG is the tree.%Black is the meaning of no tree.global n D T Y fire_time_lightning fire_time_itself fire_time_demend pull aspect count_1 tdata Pull_timesn500; % the length of the forest matrixDzeros(n);Tzeros(n);Yzeros(n,n,3); % draw the picture by matrix YRGBfire_time_lightning0;fire_time_itself0;fire_time_demend0;times1;pull1/times; % the rate of pull the fire outaspectceil(rand(1)*4); % 1 is right,2 is up,3 is left and 4 is down.count_10;tdata[]; % the day by each fire happened.Pull_times0;f11/1000; % f1 is the probability in ceil when it being struck by lightning.f21/500; % f2 is the probability in ceil when it being fired itself.ZTerrain();[scale_b,S]Forest(Z);TemS;Yiimshow(Y);set(gcf,‘DoubleBuffer’,‘on’);% set up the double cache to prevent the flash in palying animation constantlyt0;tptitle([T ,num2str(t)]);%aptitle([aspect ,num2str(aspect)]);%while 1% tt1;for t1:2400%% Fire in the early timeif rem(t,50)0t1000Fire_Demand(S);end%% Lightningif randf1 %Is there happen sth with lightning?OriginFireLightning(S);set(Yi,‘CData’,Y);end%% Fire itselfif t10OriginFireCritical(S,t,f2);set(Yi,‘CData’,Y);end%% FireRule1[a,b]FireRule1(S);%% FireRule2SFireRule2(S,a,b);set(Yi,‘CData’,Y);set(tp,‘string’,[T ,num2str(fix(t/(24))),D ,num2str(t),h ])%set(ap,‘string’,[aspect ,num2str(aspect)])pause(2e-6)endscale_nsum(sum(Y(:,:,2)));fire_countfire_time_itselffire_time_lightning;Lost_areascale_b-scale_n;Lost_rate_allLost_area/scale_b;Lost_rate_averageLost_rate_all/(fire_count);TemTem-S;TemTem.*Tem;%Lost_Valuesum(sum(Tem));%N[pull Lost_rate_all Lost_rate_average fire_count]P[P;fire_time_demend Pull_times Lost_rate_all fire_time_itself fire_time_lightning]%figure (2)%plot(tdata(:,1),tdata(:,2));end⛄三、运行结果⛄四、matlab版本及参考文献1 matlab版本2014a2 参考文献[1]党珊,蒋太刚,巫承军.基于元胞自动机方法的消防疏散仿真研究[J].现代电子技术. 2022,45(21)[2]帅斌,秦梦瑶,许旻昊.基于元胞自动机的高速铁路列车运行仿真研究[J].计算机仿真. 2022,39(08)[3]张睿洋.元胞自动机在两类传染病模型中的应用[J].现代信息科技. 2022,6(10)3 备注简介此部分摘自互联网仅供参考若侵权请联系删除
返回列表