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

748 lines
44 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 森林火灾模拟
之前我们已经构建好了一些基础,但是还没有开始对火灾进行模拟。
## 随机生长
* 在原来的基础上,我们要先让树生长,即定义 `grow_trees()` 方法
* 定义方法之前,我们要先指定两个属性:
* 每个位置随机生长出树木的概率
* 每个位置随机被闪电击中的概率
* 为了方便,我们定义一个辅助函数来生成随机 `bool` 矩阵,大小与森林大小一致
* 按照给定的生长概率生成生长的位置,将 `trees` 中相应位置设为 `True`
In [1]:
```py
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]:
```py
forest = Forest()
print forest.tree_fraction
forest.grow_trees()
print forest.tree_fraction
```
```py
0.0
0.00293333333333
```
## 火灾模拟
* 定义 `start_fires()`
* 按照给定的概率生成被闪电击中的位置
* 如果闪电击中的位置有树,那么将其设为着火点
* 定义 `burn_trees()`
* 如果一棵树的上下左右有火,那么这棵树也会着火
* 定义 `advance_one_step()`
* 进行一次生长,起火,燃烧
In [3]:
```py
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]:
```py
forest = Forest()
for i in range(100):
forest.advance_one_step()
```
使用 `matshow()` 显示树木图像:
In [5]:
```py
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]:
```py
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==
)