元胞自動機實現生命游戲

元胞自動機(CA)是一種新的研究復雜系統的模型,主要將連續系統離散化,方便研究具有相互作用系統的動力學及其時空演化過程。如雪花以及湍流等復雜現象的形成過程。

CA的關鍵在于規則的制定,在仿真模擬中,規則越趨近于現實,得到的結論一般來說越符合現實。但是越是趨近于實際的規則越是復雜。所以需要平衡規則與仿真實際之間的度。

生命游戲的構成及規則:

(1)元胞分布在規則劃分的網格上

(2)元胞具有0,1兩種狀態,0代表"死",1代表"生"

(3)元胞以相鄰的8個元胞為鄰居。即Moore鄰居形式;

實現:

先假設有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

然后開始進行生命游戲,設按規則進行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秒,體現出變化

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個細胞為生,則該細胞的生死狀態保持不變

elseif b(x,y)==3,c(x,y)=1;% 如果一個細胞周圍有3個細胞為生,該細胞若原先為死,則轉為生,若原先為生,則保持不變

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秒,體現出變化

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個細胞為生,則該細胞的生死狀態保持不變

elseif b(x,y)==3,c(x,y)=1;% 如果一個細胞周圍有3個細胞為生,該細胞若原先為死,則轉為生,若原先為生,則保持不變

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

效果如下:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、實驗目的 學習使用 weka 中的常用分類器,完成數據分類任務。 二、實驗內容 了解 weka 中 explo...
    yigoh閱讀 8,638評論 5 4
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • 剛才姥姥突然翻衣柜,倒騰一些老衣服出來,還把一本略顯破舊的同學錄扔給我,說我不在家了,還占她那么多地方。 好多年了...
    林鹿silence閱讀 839評論 6 13
  • 茱萸山上沒有茱萸,那個時候我也沒有喜歡的人,我喜歡的只是孤芳自賞的自己。 茱萸山上有一座茱萸峰,就像泰山有一座天燭...
    問杳閱讀 465評論 0 0
  • 時間:2017.6.5 13:00—15:00 人員:陳蕾 、劉芳、張丁、劉超、俞愛云 主題:繪本《我不知道我是誰...
    陳辣利閱讀 402評論 0 0