[셀룰러 오토마타] 셀룰러 오토마타 기반 산불

1. 세포 자동 장치의 정의 및 적용 범위

일반적인 동적 모델과 달리 셀룰러 오토마타는 엄격하게 정의 된 물리 방정식이나 함수에 의해 결정되지 않고 일련의 모델 구성 규칙으로 구성됩니다. 이러한 규칙을 충족하는 모든 모델은 셀룰러 오토마타 모델로 간주 할 수 있습니다. 따라서 셀룰러 오토마타는 모델 클래스 또는 메서드 프레임 워크에 대한 일반적인 용어입니다. 그 특징은 시간, 공간 및 상태가 모두 이산 적이며 각 변수는 한정된 수의 상태 만 취하며 상태 변경 규칙은 시간과 공간에서 로컬이라는 것입니다.

산불 및 전염병 시나리오에 적용되는 세포 자동화 장치

최근에 나는 셀룰러 오토마타 모델과 접촉하여 데이터를 검색하고 연구했습니다.이 기사는 호주가 랴오 저우가되고 코알라가 구워지는 것을 추천합니다 ! 호주 산불이 통제하기 어려운 이유는 무엇입니까?
배운 내용을 아래에 기록하십시오.

산불의 Cellular Automata의 원리

셀룰러 오토마타 모델에서 공간은 그리드로 이산화되고 각 그리드를 셀이라고합니다. 산불 셀에는 나무, 불 (타는 나무) 및 빈 (열린 공간) 상태의 세 가지 상태가 있습니다. 다음 순간에 세포의 상태를 업데이트하는 규칙은 다음과 같습니다.
나무가 불로 변 합니다 : 나무가 불의 상태가 위, 아래, 왼쪽, 오른쪽이면 다음 순간에 불이됩니다. 또는 나무가 번개를 만나면 다음 순간에 불이됩니다. 곤경은 번개로 인해 불이 붙을 가능성이 거의 없습니다.

불이 비게 됨 : 다음 순간에 불이 비게됩니다.

빈 나무 : 다음 순간에 열린 공간에서 작은 확률로 Pgrowth의 새로운 나무가 자랄 것입니다.

개선 된 모델은 나무의 대각선 위치가 불타고 있는지 여부를 고려합니다. 또는 풍향을 고려하십시오 (예를 들어, 바람이 서쪽에서 서쪽으로 불면 (동에서 서쪽으로 불이 불), 불의 서쪽에서 불이 붙을 확률이 증가하고 (바람) 불의 동쪽에서 불이 붙는 것은 감소 할 것입니다 (상향 바람). 여기 사진이 있습니다 :
여기에 사진 설명 삽입그림 a 이것은 기본적인 셀룰러 오토 마톤, 그림 b는 대각선을 고려한 셀룰러 오토 마톤, 그림 c는 서풍이있는 셀룰러 오토 마톤입니다. .
여기서는 기본 셀룰러 오토마타, 대각선 상황을 고려한 셀룰러 오토마타, 서풍이있는 셀룰러 오토마타의 세 가지 모델을 시뮬레이션합니다. 시뮬레이션 결과는 다음과 같습니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입

P=[];
for m=1:10
clear D T fire_time_lightning fire_time_itself aspect tdata Index;
%% Orginal 
%the first 3 dimension is RGB,R is the fire,G 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_times
n=500;      % the length of the forest matrix
D=zeros(n);
T=zeros(n);
Y=zeros(n,n,3);  % draw the picture by matrix Y(RGB) 
fire_time_lightning=0;
fire_time_itself=0;
fire_time_demend=0;
times=1;
pull=1/times;     % the rate of pull the fire out 
aspect=ceil(rand(1)*4);  % 1 is right,2 is up,3 is left and 4 is down.
count_1=0;
tdata=[];     % the day by each fire happened.
Pull_times=0;
f1=1/1000;     % f1 is the probability in ceil when it being struck by lightning. 
f2=1/500;     % f2 is the probability in ceil when it being fired itself. 
Z=Terrain();
[scale_b,S]=Forest(Z);
Tem=S;
Yi=imshow(Y);
set(gcf,'DoubleBuffer','on');
% set up the double cache to prevent the flash in palying animation constantly
t=0;
tp=title(['T = ',num2str(t)]);
%ap=title(['aspect = ',num2str(aspect)]);
%while 1
%    t=t+1;
for t=1:2400
%% Fire in the early time
if rem(t,50)==0&&t<1000
   Fire_Demand(S); 
end
%% Lightning
if rand<f1          %Is there happen sth with lightning?
    OriginFireLightning(S);     
    set(Yi,'CData',Y);
end
%% Fire itself
if t>10
    OriginFireCritical(S,t,f2);
    set(Yi,'CData',Y);
end
%% FireRule1
[a,b]=FireRule1(S);
%% FireRule2
S=FireRule2(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)
end
scale_n=sum(sum(Y(:,:,2)));
fire_count=fire_time_itself+fire_time_lightning;
Lost_area=scale_b-scale_n;
Lost_rate_all=Lost_area/scale_b;
Lost_rate_average=Lost_rate_all/(fire_count);
Tem=Tem-S;
Tem=Tem.*Tem;
%Lost_Value=sum(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

QQ1575304183을 추가하는 대신 코드를 작성하거나 작성하십시오.

과거 리뷰 >>>>>>

[셀룰러 오토마타] 셀룰러 오토마타 기반 4 차선 트래픽 흐름

[Cellular Automata] 오른쪽 주행을위한 MATLAB 소스 코드가 포함 된 셀룰러 오토마타 기반 2 차선 교통 흐름 모델

[셀룰러 오토마타] 셀룰러 오토마타 기반 결정 성장을위한 MATLAB 소스 코드

[수학적 모델링] GUI 인터페이스를 이용한 큐잉 이론 모델 및 MATLAB 구현

[Cellular Automata] Cellular Automata를 기반으로 한 도시 구 개방이 주변 도로의 교통에 미치는 영향 연구

[ Cellular Automata] 셀룰러 오토마타 기반 이미지 처리 MATLAB 소스 코드

추천

출처blog.csdn.net/qq_34763204/article/details/113664990