元胞自動機(CA)是一種新的研究復(fù)雜系統(tǒng)的模型,主要將連續(xù)系統(tǒng)離散化,方便研究具有相互作用系統(tǒng)的動力學及其時空演化過程。如雪花以及湍流等復(fù)雜現(xiàn)象的形成過程。
CA的關(guān)鍵在于規(guī)則的制定,在仿真模擬中,規(guī)則越趨近于現(xiàn)實,得到的結(jié)論一般來說越符合現(xiàn)實。但是越是趨近于實際的規(guī)則越是復(fù)雜。所以需要平衡規(guī)則與仿真實際之間的度。
生命游戲的構(gòu)成及規(guī)則:
(1)元胞分布在規(guī)則劃分的網(wǎng)格上
(2)元胞具有0,1兩種狀態(tài),0代表"死",1代表"生"
(3)元胞以相鄰的8個元胞為鄰居。即Moore鄰居形式;
實現(xiàn):
先假設(shè)有30*30的棋盤,每個格子有50%的概率為“生”和50%概率為“死”。
m=30;n=30;p=0.5;
for x=1:m
for y=1:n
r=rand(1);
if r>p
a(x,y)=1;
else a(x,y)=0;
end
end
end
for x=1:m
for y=1:n
if a(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
然后開始進行生命游戲,設(shè)按規(guī)則進行100次。
h=100;
for k=1:h
fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on%把畫面弄成全黑的0.5秒,體現(xiàn)出變化
for x=2:m-1
for y=2:n-1
b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);
if b(x,y)==2,c(x,y)=a(x,y);%如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態(tài)保持不變
elseif b(x,y)==3,c(x,y)=1;% 如果一個細胞周圍有3個細胞為生,該細胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變
else c(x,y)=0;%否則為死
end
end
end
c(1:m,1)=a(1:m,1);c(1:m,n)=a(1:m,n);%邊緣保持不變
for x=1:m
for y=1:n
if c(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
pause(0.05)
a=c;
end
匯總一下:
m=30;n=30;p=0.7;h=100;
for x=1:m
for y=1:n
r=rand(1);
if r>p
a(x,y)=1;
else a(x,y)=0;
end
end
end
for x=1:m
for y=1:n
if a(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
for k=1:h
fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on%把畫面弄成全黑的0.5秒,體現(xiàn)出變化
for x=2:m-1
for y=2:n-1
b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);
if b(x,y)==2,c(x,y)=a(x,y);%如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態(tài)保持不變
elseif b(x,y)==3,c(x,y)=1;% 如果一個細胞周圍有3個細胞為生,該細胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變
else c(x,y)=0;%否則為死
end
end
end
c(1:m,1)=a(1:m,1);c(1:m,n)=a(1:m,n);%邊緣保持不變
for x=1:m
for y=1:n
if c(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
pause(0.05)
a=c;
end
效果如下: