元胞自动机构成

元胞自动机由元胞元胞空间元胞邻居元胞规则四部分构成。

元胞可称为单元或基元,是元胞自动机最基本的部分。

元胞空间就是元胞在空间分布上的集合。

某一元胞状态更新时所要搜索的空间域就是该元胞的邻居。

三种常用邻居

边界条件

理论上, 元胞空间是无限的,实际应用中无法达到这一理想条件。 为了给元胞空间边界上的元胞拥有规则所需要的邻居,就需要构造出一一些虚拟的邻居。

常用的邻居边界条件类型有:固定型,周期型,绝热型和映射型这四种。

规则

根据元胞当前状态及邻居的状态来决定下一时刻该元胞状态。
元胞自动机根据规则进行局部元胞间的相互作用从而引起全局的变化。

奇偶规则

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)  % 可视化
axis square;  % 添加方形边框
Sd=zeros(n+2)  % 添加边界
while(1)Sd(2:n+1,2:n+1)=Se;  % 将边界镶给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);  %上下左右邻居和Se=mod(sum,2);set(Ch,'cdata',cat(3,Se,z,z))pause(0,03)  % 间隔0.03s
end

生命游戏

clc
clear;
n=200;
p=0.4;
z=zeros(n);
Se=rand(n)<p;  % 以0.4概率生成“生”
Sd=zeros(n+2);
Ph=image(cat(3,Se,z,z));  % 初始可视化
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)+Sd(1:n,1:n)+Sd(3:n+2,1:n)+Sd(1:n,3:n+2)+Sd(3:n+2,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;endend
end
set(Ph,'cdata',cat(3,Se,z,z))
drawnow
end

澳洲火灾



clc
clear
n=300;  %  定义表示森林的矩阵大小
Plight = 5e-6; Pgrowth = 1e-2;  % 定义闪电和生长的概率
UL = [n,1:n-1]; DR = [2:n,1];  % 定义上左,下右邻居
veg=zeros(n,n);  % 初始化表示森林的矩阵
imh = image(cat(3,veg,veg,veg));  % 可视化表示森林的矩阵
% veg = 空地为0 火为1 树为2
for i=1:3000sum = (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)))drawnow
end

考虑风向

传染性肺炎

clear
clcm = 500;n = 500;      % 元胞自动机的空间大小
% 用1, 2, 3, 4分别表示 S, E, I, R. 无人区用 0 表示
%    S = 易感   ;  E = 潜伏  ;   I = 感染   ;   R = 治愈[S, E, I, R] = deal(1,2,3,4);  %deal就是匹配输出 相互对应出来的 使其一一对应rhoS = 0.95;          %初始易感人群密度
rhoE = 2758/11000000; % 初始潜伏人群密度% X 为每一个元胞的状态
X = zeros(m,n);   % 先建立一个全零矩阵
X(rand(m,n)<rhoS) = S;   % 如果随机的一个是小于0.95的 那么就为1  也就是易感人群了
X(rand(m,n)<rhoE) = E;   %也是同上了    先定义上啊time = zeros(m,n);    %计时: 用于计算潜伏时间和治疗时间      从 0 开始吗 ?
% 邻居方位
d = {[1,0], [0,1], [-1,0], [0,-1]};T = 1;                % 平均潜伏时间
D = 3;                % 平均治愈时间
P = 3/(T*4);          % R0 = 3.6,潜伏期平均感染 3个  就是在7天的时间里面一个在四个人里面感染3个人% 每一个元胞的潜伏期和治愈时间服从均值为 T 和 D 的正态分布
Tmn = normrnd(T,T/2,m,n); Dmn = normrnd(D,D/2,m,n);     %正态分布的表示方法figure('position',[50,50,1200,400])     %表示画图的位置(position)    figure(只不过是创建一个画图窗口而已)subplot(1,2,1)  %(第一小部分)
h1 = imagesc(X);      %imagesc只不过是有丰富一点颜色而已
colormap(jet(5))     %colormap是颜色查询表   jet(5)是一个色彩的代号,一共有三层
labels = {'无人','易感','潜伏','发病','移除'};
lcolorbar(labels);     %  lcolorbar附加带有文本标签的颜色条subplot(1,2,2)   %第二部分
h2 = plot(0, [0,0,0,0]); axis([0,200,0,m*n])  ;
legend('易感','潜伏','发病','移除');for t = 1:200  %就是循环450    这个450就是以天为单位的计量% 邻居中潜伏和发病的元胞数量   N = zeros(size(X));for j = 1:length(d)    %跟森林的差不多的一个N = N + (circshift(X,d{j})==E|circshift(X,d{j})==I);  %潜伏的与感染的都是具有传染性的  所以都算在这里面了%end% 分别找出四种状态的元胞isS = (X==S); isE = (X==E); isI = (X==I); isR = (X==R);% 将四种状态的元胞数量存到 Y中  Y(t,:) = sum([isS(:) isE(:) isI(:) isR(:)]);   % 计算已经潜伏的时间和已经治疗的时间time(isE|isI) = time(isE|isI) + 1;    %循环一次就是一天,时间自然就要加1  如果这里不是加1,那么就不是这样的% 规则一:如果S邻居有N个染病的,则S以概率N*P变为E,否则保持EifS2E = rand(m,n)<(N*P);  Rule1 = E*(isS & ifS2E) + S*(isS & ~ifS2E);% 规则二:如果E达到潜伏期,则转变为I,否则保持为EifE2I = time>Tmn;Rule2 = I*(isE & ifE2I) + E*(isE & ~ifE2I);time(isE & ifE2I) = 0;%  规 则 三: 如 果I达 到 治 愈 时 间, 则 转 变 为R, 否 则 保 持 为I ifI2R = time>Dmn;Rule3 = I*(isI & ~ifI2R) + R*(isI & ifI2R);%  规 则 四: 已 经 治 愈R有 抗 体, 保 持 为R Rule4 = R*isR;% 叠 加 所 有 规 则, 更 新 所 有 元 胞 状 态 X = Rule1 + Rule2 + Rule3 + Rule4;set(h1, 'CData', X);for i = 1:4; set(h2(i), 'XData', 1:t, 'YData', Y(1:t,i)); enddrawnow
end

数学建模美赛 元胞自动机相关推荐

  1. 澳洲森林火灾蔓延数学建模,基于元胞自动机模拟多模式下火灾蔓延(附部分源码)

    前言 本文篇幅较长,希望各位小伙伴能够耐心看完. 元胞自动机模型可以用来模拟交通流.火灾蔓延情况.高速收费站交通情况,有利于我们更好地改善交通状况,更好地控制火灾蔓延,合理地设置收费站的数量等. 关于 ...

  2. 数学建模模型11——元胞自动机

    模拟森林火灾 代码 clc; clear; close;%0为空地 1为燃烧的树 2为正常的树 %初始情况是森林数目有一定的覆盖率 某些树木着火 length=300; % 森林长 width=500 ...

  3. 2014年数学建模美赛题目原文及翻译

    2014年数学建模美赛题目原文及翻译 PROBLEM A: The Keep-Right-Except-To-Pass Rule In countries where driving automobi ...

  4. 2108889队2021年数学建模美赛C题花絮视频!

    2108889队2021年数学建模美赛C题花絮视频

  5. 数学建模美赛写作技巧

    数学建模美赛写作技巧 一.科技英语写作要求以及特点 1.标题: 英文标题一般十个左右单词,中文标题在二十个字以内.原则:确切.简明.醒目. 标题的书写格式:第一个词和每一个实词首字母大写,虚词首字母小 ...

  6. 【Python爬虫】2022年数学建模美赛B题数据爬取

    2022年数学建模美赛B题数据爬取 背景 2022年的美赛刚刚落下帷幕,该题的一个主要难点在于数据的获取.很多人无法找到有效的数据,或者是无法获取数据. 比如找到了如下米德湖的水文数据,但是发现并没有 ...

  7. 数学建模美赛特等奖提名、国赛国一队伍经验分享

    数学建模美赛特等奖提名.国赛国一队伍经验分享 奖状证书 赛前准备 团队分工 实用软件与链接准备 学习方法 资源推荐(详细学习线路与资源将整理至本专栏其他文章) 算法储备 赛中策略 模拟复盘 评委解读 ...

  8. 写于数学建模美赛准备期间

    这学期稀里糊涂的与同学组队参与了数学建模美赛,原本是没有打算去参加的,后来大致是考虑到拿奖后可以加分而且拿奖的概率挺高,这对当代大学生(至少是我)来说非常具有吸引力.由于当时已经过了学院报名组队时间, ...

  9. 2023数学建模美赛赛题思路分析 2023美赛 美国大学生数学建模数模

    将在本帖更新2023美国大学生数学建模数模美赛各个赛题思路,大家可以点赞收藏! 一.参赛报名 组队参赛(每队人数3人,专业不限). 二.赛题思路及资料 会在本帖更新思路分析,Q群可领取模型代码/赛题思 ...

最新文章

  1. 关于如何在Nomad中保护工作部署的工作流的简要历史
  2. JVM:GC日志解读
  3. linux内核配置与编译
  4. 面向对象(封装对象private关键字)
  5. c高级语言程序设计B试题,高级语言程序设计试题(B)卷.doc
  6. Bootstrap3基础 clearfix pull-left/right 辅助类样式 快速左右浮动
  7. ubuntu 12安装oracle,Ubuntu12.04(32位)安装Oracle 11g(32位)全过程
  8. 30岁的你,目标工资是多少?
  9. Android开发——联系人中几种常见的mimetype、几张常见表的Uri
  10. MySQL数据库中,将一个字段的值分割成多条数据显示
  11. 苹果x翻新机序列号开头_Android翻新电话每隔X秒
  12. 推荐一款很好用的小说APP——追书神器
  13. 能否去大厂的关键内功!
  14. 第十章:动态组件,插槽,自定义指令
  15. MATLAB笔记之wordcloud文字云(lib)的基本使用
  16. 一个悲观主义者的积极思考——职业篇[待续2021/06/27]
  17. 解决Win10搜索框不能使用
  18. 【newman】postman生成漂亮的测试报告
  19. 【UACME】在Win11上的发展
  20. 金融量化分析【day112】:量化平台的使用-初始化函数

热门文章

  1. Cookie 攻防世界
  2. “空头”突袭瑞幸 浑水再次折戟?
  3. C++实现求小于n的所有素数
  4. kiscore sys丢失_Win7旗舰版64位上提示无法正常运行金蝶专业版的解决方法
  5. OpenCV_05图像变换
  6. java开发视频服务器
  7. PHPCMS problems set
  8. 航测空三用的软件_干货 16个倾斜摄影航测业内软件的常见问题 这样解决
  9. matlab 机床,基于MATLAB的数控机床控制系统的设计及仿真
  10. iOS Xcode Git 如何忽略UserInterface.xcuserstate文件