日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

元胞自动机学习笔记

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 元胞自动机学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?元胞自動機學習筆記

2021.7.19


一、簡介:

元胞自動機(cellular automata,CA):是一種時間,空間,狀態都離散,空間相互作用和時間因果關系為局部的網格動力學模型,具有模擬復雜系統時空演化過程的能力。?

二、構成:

?

  • 元胞:可稱為單元或基元,是元胞自動機最基本的部分
  • 元胞狀態:在最簡單情況下,元胞有兩種可能的狀態;較復雜情況下,具有多種狀態;元胞的狀態都按照元胞動力機的動力規則不斷更新。
  • 元胞空間:元胞在空間分布上的集合
  • 元胞鄰居:某一元胞狀態更新時所要搜索的空間域(能夠影響該元胞下一時刻狀態的元胞)

?

最常用的三種鄰居

  • 邊界條件:理論上,元胞空間是無限的,實際應用中無法達到這一理想條件,為了給元胞空間邊界上的元胞擁有規則所需要的鄰居,就需要構建出一些虛擬鄰居,常用的鄰居邊界條件類型有:固定型,周期型,絕熱型和映射型。
  • 固定型邊界:虛擬鄰居的狀態自擬且固定
  • 周期型邊界:元胞空間的右邊界作為左邊界左邊的虛擬鄰居,左邊界作為右邊界右邊的虛擬鄰居
  • 絕熱型邊界:虛擬鄰居的狀態為元胞本身
  • 映射型邊界:左邊界上元胞的虛擬左鄰居為該元胞的右鄰居的狀態
    • 元胞規則:根據元胞當前的狀態及鄰居的狀態來決定下一時刻該元胞的狀態,元胞自動機根據規則進行局部元胞間的相互作用而引起全局變化

    元胞自動機的特性:

    • 離散性:空間、時間及狀態都是離散的
    • 同質性:服從相同的規律分布方式相同
    • 并行性:元胞的狀態更新規則變化時同步進行的
    • 高維度:元胞自動機時一類無窮維動力系統

    初等元胞自動機:

  • 一維元胞自動機的元胞鄰居半徑為1
  • 元胞有且只有兩種狀態
  • 初等元胞自動機只有這八種狀態

    因為每種狀態的元胞的下一狀態都有兩種情況:0 or 1,每種情況對應一種規則,所以共有種規則

    三、實例

    實例1:奇偶規則

    元胞有兩種狀態{ 0,1 };

    鄰居之和為奇數,中心元胞變為1;

    鄰居之和為偶數,中心元胞變為0;

    MATLAB代碼實現:

    clc;clear; n=200; %元胞空間大小 %元胞自動機的實現本質是矩陣的變化 Se=zeros(n); z=zeros(n); Se(n/2-2:n/2+2,n/2-2:n/2+2)=1; %設置初始狀態Ch=imagesc(Se) %用紅藍色顯示目前元胞狀態Ch=imagesc(cat(3,Se,z,z)) %用紅黑色顯示目前元胞狀態 axis square; %加方形邊框Sd=zeros(n+2); %邊界條件(上下左右各加一全為0的行/列)while(1)Sd(2:n+1,2:n+1)=Se; %相當于給Se加了一個全為0的框%邊界條件sum=Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2); %上鄰居+下鄰居+左鄰居+右鄰居%注意:Se和sum都是矩陣Se=mod(sum,2); %判斷奇偶并賦值set(Ch,'cdata',cat(3,Se,z,z)) %控制性質(形狀、顏色)的變化 %矩陣的更新pause(0.03) %每隔0.03秒變一次end

    實例2:生命游戲

    在一個正方形的棋盤中,每個小格有兩種狀態,“生”或“死”,每個小格有八個鄰居:

    ① 對于“生”的格子,若他的8個鄰居中有兩個或者三個為“生”,則該格繼續保持“生”,否則就變為“死”;

    ②對于“死”的格子,若他的8個鄰居中有3個“生”,則該格變為“生”,否則繼續保持“死”。

    MATLAB代碼實現:

    clc;clear; n=200; p=0.4 %初始化,以0.4"生"的概率生成 z=zeros(n); Se=rand(n)<p; Sd=zeros(n+2); Ph=imagesc(cat(3,Se,z,z)) axis square; while(1)Sd(2:n+1,2:n+1)=Se;sum=Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2);%元胞規則for i=1:nfor j=1:nif sum(i,j)==3||(sum(i,j)==2&&Se(i,j)==1)Se(i,j)=1;elseSe(i,j)=0;endendendset(Ph,'cdata',cat(3,Se,z,z)) %控制性質(形狀、顏色)的變化 %矩陣的更新pause(0.03) %每隔0.03秒變一次 end

    實例3:澳洲森林火災

    在正方形網絡上,有三種狀態:樹,火,空地。

    MATLAB代碼:

    clc;clear; n=300; %定義森林矩陣的大小 Plight=5e-6; Pgrowth=1e-2; %定義閃電和生長的概率 UL=[n,1:n-1];DR=[2:n,1]; %定義上左、下右鄰居???(周期型)veg=zeros(n); %初始化森林矩陣 veg= 0:空地 1:著火 2:樹imh=imagesc(cat(3,veg,veg,veg)) axis square; for i=1:3000%計算所有格子著火的數量sum=(veg(UL,:)==1)+(veg(:,UL)==1)+(veg(:,DR)==1)+(veg(DR,:)==1);%根據規則更新森林矩陣:是否樹=是否著火的樹+是否新生的樹(0-1運算)veg=2*(veg==2)-((veg==2)&(sum>0|(rand(n,n)<Plight)))+2*((veg==0)&rand(n,n)<Pgrowth);set(imh,'cdata',cat(3,(veg==1),(veg==2),zeros(n)))pause(0.05);end

    ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    總結

    以上是生活随笔為你收集整理的元胞自动机学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。