元胞自动机

元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状态。变化规则适用于每一个元胞并且同时进行。典型的变化规则,决定于元胞的状态,以及其( 4 或 8 )邻居的状态。
森林火灾元胞自动机模型:

一片森林由于自然或人为原因,有一处火,火情将由此扩散至整个森林。
1、用L*L个格子表示整个森林,一格子代表一棵树;
2、每个格子有三种状态:
0:已经燃烧完了,成为空地
1:有树木
2: 树木正在燃烧
3、 某一时刻只要一棵树的邻居有一个正在燃烧,则下一时刻它也会燃烧;
4、一棵树燃烧t2个时刻后成为空地
5、一个空地t0时刻后长成新的树木
6、每棵树自然着火的概率为P1
7、空地长出树木的概率为P2

Matlab代码:
P1=0.000004; % 树木自然着火概率
P2 =0.01; %空地长出树木概率
%假设空地长出树木,树木燃烧变成空地只需要1回合
size =400; %森林大小
trees =zeros(size,size);
d1 = [size , 1:size-1];
d2 = [2:size , 1];
result = image(cat(3, (trees == 2), (trees == 1), zeros(size)))
for i =1:2000
    neighbour = (trees(d1,:)==2)+(trees(d2,:)==2)+(trees(:,d1)==2)+(trees(:,d2)==2);%周围着火树木数量
    trees =trees+(trees==1 &(neighbour>0|rand(size,size)<=P1)) ...%自然着火,受周围影响着火
      + (neighbour==0 &rand(size,size)<=P2& trees==0) +(trees==2)*(-2); %周围无火焰的空地恢复成树木,燃烧树木变成空地
  set(result, 'cdata', cat(3, (trees == 2), (trees == 1), zeros(size)) );
  drawnow
  pause(0.01)
end
效果:

在这里插入图片描述
(绿色为森林,红色为燃烧树木,黑色为空地)

参考文献:
1.https://blog.csdn.net/qq_40527086/article/details/86798384
2.https://blog.csdn.net/qq_40287093/article/details/88095531

  • 23
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值