• 元胞自动机


    元胞自动机是数学建模常用东西

    模拟森林火灾

    %0为空位
    %1为燃烧的树
    %2为正常的树
    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 = empty=0 burning=1 green=2
    for i=1:3000 %循环
        %观察每一个空位其上下左右邻居正在燃烧的树的个数(sum为300*300矩阵,每一个值对应森林的每一个空位)
        
        sum =            (veg(UL,:)==1) + ...
            (veg(:,UL)==1)     +      (veg(:,DR)==1) + ...
                         (veg(DR,:)==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
    

    结合博客中模拟森林火灾的例子,我们大概可以分析出,元胞自动机本质上来讲是一种仿真模拟。将现实生活中的现象数学化进行模拟(这让我相当了,疫情期间一位同学用java实现的疫情传染模拟的模型)掌握它的本质是掌握python或者matlab中的一些矩阵变换技巧。例如上面的森林火灾就是通过矩阵平移的方式判断其上下左右是否存在被烧毁的树,然后将其状态修改为烧毁。其中的set函数是作图函数,用于形象地表示火灾的模拟。

    关于元胞自动机部分持续更新......

    作者:LightAc
    出处:https://www.cnblogs.com/lightac/
    联系:
    Email: dzz@stu.ouc.edu.cn
    QQ: 1171613053
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    C#获取机器码
    页面延时跳转
    asp.net 删除文件夹,指定文件夹,删除文件夹和所有文件,删除权限设置,递归删除文件夹目录及文件
    c# 关闭程序
    Asp.net网站开发架构设计要求
    ASP.NET页面刷新方法总结
    一个不错的弹出窗口,修改了JS文件可多弹
    c# 实现应用程序重启
    ajax web页面复杂处理延时、客户交互问题
    C# 中关于汉字与16进制转换的代码
  • 原文地址:https://www.cnblogs.com/lightac/p/14347698.html
Copyright © 2020-2023  润新知