元胞自動機

2021-09-26 00:09:30 字數 1297 閱讀 4244

元胞自動機(ca)是一種用來**區域性規則和區域性聯絡的方法。典型的元胞自動機是定義在網格上的,每乙個點上的網格代表乙個元胞與一種有限的狀態。變化規則適用於每乙個元胞並且同時進行。典型的變化規則,決定於元胞的狀態,以及其( 4 或 8 )鄰居的狀態。

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

一片森林由於自然或人為原因,有一處火,火情將由此擴散至整個森林。

1、用l*l個格仔表示整個森林,一格仔代表一棵樹;

2、每個格仔有三種狀態:

0:已經燃燒完了,成為空地

1:有樹木

2: 樹木正在燃燒

3、 某一時刻只要一棵樹的鄰居有乙個正在燃燒,則下一時刻它也會燃燒;

4、一棵樹燃燒t2個時刻後成為空地

5、乙個空地t0時刻後長成新的樹木

6、每棵樹自然著火的概率為p1

7、空地長出樹木的概率為p2

matlab**:

p1=0.000004; % 樹木自然著火概率

p2 =0.01; %空地長出樹木概率

%假設空地長出樹木,樹木燃燒變成空地只需要1回合

size =400; %森林大小

trees =zeros(size,size);

d1 = [size , 1:size-1];

d2 = [2:size , 1];

result = image(cat(3, (trees == 2), (trees == 1), zeros(size)))

for i =1:2000

neighbour = (trees(d1,:)==2)+(trees(d2,:)==2)+(trees(:,d1)==2)+(trees(:,d2)==2);%周圍著火樹木數量

trees =trees+(trees==1 &(neighbour>0|rand(size,size)<=p1)) ...%自然著火,受周圍影響著火

+ (neighbour==0 &rand(size,size)<=p2& trees==0) +(trees==2)*(-2); %周圍無火焰的空地恢復成樹木,燃燒樹木變成空地

set(result, 'cdata', cat(3, (trees == 2), (trees == 1), zeros(size)) );

drawnow

pause(0.01)

end

效果:

(綠色為森林,紅色為燃燒樹木,黑色為空地)

參考文獻:

1.2.

元胞自動機

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

元胞自動機

這 幾個關於元胞自動機的問題 元胞自動機 森林火災模型 規則 1 正在燃燒的樹變成空格位 2 如果綠樹格位的最近鄰居中有乙個樹在燃燒,則它變成正在燃燒的樹 3 在空格位,樹以概率p生長 4 在最近的鄰居中沒有正在燃燒的樹的情況下樹在每一時步以概率f 閃 電 變為正在燃燒的樹。參考文獻 祝玉學,趙學龍...

元胞自動機

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