1、% 元胞自动机:森林火灾模型% 规则:% (1)正在燃 烧 的树变成空格位;% (2)如果 绿树 格位的最近邻 居中有一个树在燃烧, 则它变成正在燃烧的树;% (3)在空格位,树以概率 p 生长;% (4)在最近的邻居中没有正在燃 烧的树的情况下树在每一时步以概率 f(闪%? 电)变为正在燃烧的树。% 参考文献:% 祝玉学,赵学龙译,, p23close all;clc;clear;figure;p=0.3;% 概率 pf=6e-5;% 概率 faxes;rand(state,0);set(gcf,DoubleBuffer,on);% S=round(rand(300)/2+0.5)*2);S
2、=round(rand(300)*2);Sk=zeros(302);Sk(2:301,2:301)=S;%加边开始的森林初 值% 红色表示正在燃烧(S 中等于 2 的位置)% 绿色表示绿树(S 中等于 1 的位置)% 黑色表示空格位(S 中等于 0 的位置)C=zeros(302,302,3);R=zeros(300);G=zeros(300);R(S=2)=1;G(S=1)=1;C(2:301,2:301,1)=R;C(2:301,2:301,2)=G;Ci=imshow(C);ti=0;tp=title(T = ,num2str(ti);%时间记录while 1;ti=ti+1;St=Sk
3、; %St 表示 t 时 刻的森林情况St(Sk=2)=0; % for rule (1) Su=zeros(302);Sf=Sk;%Sf 表示模拟着火的过程Sf(Sf0.5)=2;% for rule (2)Sf-suSe=Sk(2:301,2:301);%Se 中将初始的森林,空白 处变为 1,其他地方 为 0Se(Se3)=1;%空白地方 赋值为 1St(2:301,2:301)=St(2:301,2:301)+Se.*(rand(300)7.5)=1;d=find(Ss=1 for k=1:length(d);r=rand;St(d(k)=round(2*(rf);end% for rule (4)%t 时刻的着火 还是没着火, 记为 1or2Sk=St;%更新 t 时刻的森林 StR=zeros(302);G=zeros(302);R(Sk=2)=1;G(Sk=1)=1;C(:,:,1)=R;C(:,:,2)=G;set(Ci,CData,C);set(tp,string,T = ,num2str(ti)pause(0.2);end