Files
ailearning/docs/da/107.md
2020-10-19 21:08:55 +08:00

44 KiB
Raw Blame History

森林火灾模拟

之前我们已经构建好了一些基础,但是还没有开始对火灾进行模拟。

随机生长

  • 在原来的基础上,我们要先让树生长,即定义 grow_trees() 方法
  • 定义方法之前,我们要先指定两个属性:
    • 每个位置随机生长出树木的概率
    • 每个位置随机被闪电击中的概率
  • 为了方便,我们定义一个辅助函数来生成随机 bool 矩阵,大小与森林大小一致
  • 按照给定的生长概率生成生长的位置,将 trees 中相应位置设为 True

In [1]:

import numpy as np

class Forest(object):
    """ Forest can grow trees which eventually die."""
    def __init__(self, size=(150,150), p_sapling=0.0025, p_lightning=5.0e-6):
        self.size = size
        self.trees = np.zeros(self.size, dtype=bool)
        self.fires = np.zeros((self.size), dtype=bool)
        self.p_sapling = p_sapling
        self.p_lightning = p_lightning

    def __repr__(self):
        my_repr = "{}(size={})".format(self.__class__.__name__, self.size)
        return my_repr

    def __str__(self):
        return self.__class__.__name__

    @property
    def num_cells(self):
        """Number of cells available for growing trees"""
        return np.prod(self.size)

    @property
    def tree_fraction(self):
        """
 Fraction of trees
 """
        num_trees = self.trees.sum()
        return float(num_trees) / self.num_cells

    @property
    def fire_fraction(self):
        """
 Fraction of fires
 """
        num_fires = self.fires.sum()
        return float(num_fires) / self.num_cells

    def _rand_bool(self, p):
        """
 Random boolean distributed according to p, less than p will be True
 """
        return np.random.uniform(size=self.trees.shape) < p

    def grow_trees(self):
        """
 Growing trees.
 """
        growth_sites = self._rand_bool(self.p_sapling)
        self.trees[growth_sites] = True

测试:

In [2]:

forest = Forest()
print forest.tree_fraction

forest.grow_trees()
print forest.tree_fraction

0.0
0.00293333333333

火灾模拟

  • 定义 start_fires()
    • 按照给定的概率生成被闪电击中的位置
    • 如果闪电击中的位置有树,那么将其设为着火点
  • 定义 burn_trees()
    • 如果一棵树的上下左右有火,那么这棵树也会着火
  • 定义 advance_one_step()
    • 进行一次生长,起火,燃烧

In [3]:

import numpy as np

class Forest(object):
    """ Forest can grow trees which eventually die."""
    def __init__(self, size=(150,150), p_sapling=0.0025, p_lightning=5.0e-6):
        self.size = size
        self.trees = np.zeros(self.size, dtype=bool)
        self.fires = np.zeros((self.size), dtype=bool)
        self.p_sapling = p_sapling
        self.p_lightning = p_lightning

    def __repr__(self):
        my_repr = "{}(size={})".format(self.__class__.__name__, self.size)
        return my_repr

    def __str__(self):
        return self.__class__.__name__

    @property
    def num_cells(self):
        """Number of cells available for growing trees"""
        return np.prod(self.size)

    @property
    def tree_fraction(self):
        """
 Fraction of trees
 """
        num_trees = self.trees.sum()
        return float(num_trees) / self.num_cells

    @property
    def fire_fraction(self):
        """
 Fraction of fires
 """
        num_fires = self.fires.sum()
        return float(num_fires) / self.num_cells

    def _rand_bool(self, p):
        """
 Random boolean distributed according to p, less than p will be True
 """
        return np.random.uniform(size=self.trees.shape) < p

    def grow_trees(self):
        """
 Growing trees.
 """
        growth_sites = self._rand_bool(self.p_sapling)
        self.trees[growth_sites] = True

    def start_fires(self):
        """
 Start of fire.
 """
        lightning_strikes = (self._rand_bool(self.p_lightning) & 
            self.trees)
        self.fires[lightning_strikes] = True

    def burn_trees(self):
        """
 Burn trees.
 """
        fires = np.zeros((self.size[0] + 2, self.size[1] + 2), dtype=bool)
        fires[1:-1, 1:-1] = self.fires
        north = fires[:-2, 1:-1]
        south = fires[2:, 1:-1]
        east = fires[1:-1, :-2]
        west = fires[1:-1, 2:]
        new_fires = (north | south | east | west) & self.trees
        self.trees[self.fires] = False
        self.fires = new_fires

    def advance_one_step(self):
        """
 Advance one step
 """
        self.grow_trees()
        self.start_fires()
        self.burn_trees()

In [4]:

forest = Forest()

for i in range(100):
    forest.advance_one_step()

使用 matshow() 显示树木图像:

In [5]:

import matplotlib.pyplot as plt
from matplotlib import cm

%matplotlib inline

plt.matshow(forest.trees, cmap=cm.Greens)

plt.show()

![](data:image/png;base64,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 )

查看不同着火概率下的森林覆盖率趋势变化:

In [6]:

forest = Forest()
forest2 = Forest(p_lightning=5e-4)

tree_fractions = []

for i in range(2500):
    forest.advance_one_step()
    forest2.advance_one_step()
    tree_fractions.append((forest.tree_fraction, forest2.tree_fraction))

plt.plot(tree_fractions)

plt.show()

![](data:image/png;base64,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 RU5ErkJggg== )