元胞自動機

2021-07-09 16:44:28 字數 1740 閱讀 2725

**這

幾個關於元胞自動機的問題

% 元胞自動機:森林火災模型

% 規則:

% (1)正在燃燒的樹變成空格位;

% (2)如果綠樹格位的最近鄰居中有乙個樹在燃燒,則它變成正在燃燒的樹;

% (3)在空格位,樹以概率p生長;

% (4)在最近的鄰居中沒有正在燃燒的樹的情況下樹在每一時步以概率f(閃

% 電)變為正在燃燒的樹。

% 參考文獻:

% 祝玉學,趙學龍譯,《物理系統的元胞自動機模擬》, p23

close all;clc;clear;

figure;

p=0.3; % 概率p

f=6e-5; % 概率f

axes;rand('state',0);

set(gcf,'doublebuffer','on');

% s=round((rand(300)/2+0.5)*2);

s=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;

st(sk==2)=0; % for rule (1)

su=zeros(302);sf=sk;sf(sf<1.5)=0;sf=sf/2;

su(2:301,2:301)=sf(1:300,1:300)+sf(1:300,2:301)+sf(1:300,3:302)+...

sf(2:301,1:300)+sf(2:301,3:302)+sf(3:302,1:300)+...

sf(3:302,2:301)+sf(3:302,3:302);

st(sf>0.5)=2; % for rule (2)

se=sk(2:301,2:301);se(se<0.5)=4;se(se<3)=0;se(se>3)=1;

st(2:301,2:301)=st(2:301,2:301)+se.*(rand(300)7.5)=1;

d=find(ss==1 & sk==1);

for k=1:length(d);

r=rand;

st(d(k))=round(2*(r<=f)+(r>f));

end % for rule (4)

sk=st;

r=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

ca,康奈爾大學

元胞自動機

即生命遊戲,今天下午迅雷的筆試程式設計題。簡單的版本,給定當前的狀態,給出下乙個時刻的狀態。status函式獲取某點當時周圍的活的細胞數量,寫的比較渣 include include include using namespace std define max 10010 int status ve...

元胞自動機

元胞自動機 ca 是一種用來 區域性規則和區域性聯絡的方法。典型的元胞自動機是定義在網格上的,每乙個點上的網格代表乙個元胞與一種有限的狀態。變化規則適用於每乙個元胞並且同時進行。典型的變化規則,決定於元胞的狀態,以及其 4 或 8 鄰居的狀態。森林火災元胞自動機模型 一片森林由於自然或人為原因,有一...

元胞自動機

此文為準備2020年美賽期間所聽取的基於元胞自動機模擬新興肺炎病毒的傳播與控制課程筆記。其中關於各組成成分的細節描述如下 週期性邊界 固定邊界 所有邊界外元胞均取某一固定常量。conway的生命遊戲機 規則 1 對周圍的8個近鄰的元胞狀態求和 2 如果總和為2的話,則下一時刻的狀態不改變 3 如果總...