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

59 KiB

使用 OOP 对森林火灾建模

In [1]:

%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np

对森林建模

In [2]:

class Forest(object):
    def __init__(self, size=(150, 150), p_sapling=0.0025, p_lightning=5.e-6, name=None):
        self.size = size
        self.trees = np.zeros(self.size, dtype=bool)
        self.forest_fires = np.zeros(self.size, dtype=bool)
        self.p_sapling = p_sapling
        self.p_lightning = p_lightning
        if name is not None:
            self.name = name
        else:
            self.name = self.__class__.__name__

    @property
    def num_cells(self):
        return self.size[0] * self.size[1]

    @property
    def tree_fraction(self):
        return self.trees.sum() / float(self.num_cells)

    @property
    def fire_fraction(self):
        return self.forest_fires.sum() / float(self.num_cells)

    def advance_one_step(self):
        self.grow_trees()
        self.start_fires()
        self.burn_trees()

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

    def start_fires(self):
        lightning_strikes = (self._rand_bool(self.p_lightning) & 
            self.trees)
        self.forest_fires[lightning_strikes] = True

    def burn_trees(self):
        fires = np.zeros((self.size[0] + 2, self.size[1] + 2), dtype=bool)
        fires[1:-1, 1:-1] = self.forest_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.forest_fires] = False
        self.forest_fires = new_fires

    def _rand_bool(self, p):
        return np.random.uniform(size=self.trees.shape) < p

定义一个森林类之后,我们创建一个新的森林类对象:

In [3]:

forest = Forest()

显示当前的状态:

In [4]:

print forest.trees

[[False False False ..., False False False]
 [False False False ..., False False False]
 [False False False ..., False False False]
 ..., 
 [False False False ..., False False False]
 [False False False ..., False False False]
 [False False False ..., False False False]]

In [5]:

print forest.forest_fires

[[False False False ..., False False False]
 [False False False ..., False False False]
 [False False False ..., False False False]
 ..., 
 [False False False ..., False False False]
 [False False False ..., False False False]
 [False False False ..., False False False]]

使用 matshow 进行可视化:

In [6]:

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

plt.show()

![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAD7CAYAAACBpZo1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAALEgAACxIB0t1+/AAADMhJREFUeJzt3X+s3fVdx/Hnay0gP7S1MSmDdmlFCLBsuGpGXQZlCBPJ pPOfgXELA7d/phnTCbSg4pItwS1z8x/+cGME0aKMkaY1gBQFu2QG2Cilo9RSgY2OUJYhOokTSN/+ 8f1eOJzd29Jzv99ze3Kfj6ThnM/5nvP+3su5r/P9nntyX6kqJM1vb5nrHZA09wwCSQaBJINAEgaB JAwCScxBECS5IMmuJE8kubqnGcuT3JfksSTfTfLJdn1Jki1Jdie5J8ninuYvSLItyeZxzU2yOMnt SR5PsjPJmWOau779Pu9IsiHJUV3PTfK1JPuS7BhYm3FGu09PtM+z93c89wvt93h7kjuSLBrH3IHb Pp1kf5Ilnc6tqrH9AxYAe4AVwBHAI8BpPcw5Hvjl9vJxwL8DpwGfB65q168Gru/p6/wj4O+ATe31 3ucCNwOXt5cXAov6ntv+f3wSOKq9/g/ApV3PBc4C3gXsGFibdgZwevu8OqLdvz3AWzqce/7U4wHX j2tuu74cuBt4CljS5dzOfwgO8gX+GnD3wPV1wLoxzN0InAfsApa2a8cDu3qYtQy4F3gfsLld63Vu +0P/5DTrfc9dQhOyP9+Gz+b2B6Xzue2TfPAHctoZwHrg6oHt7gZWdzV36LbfBv52XHOBrwPvHAqC TuaO+9TgROCZget727XeJFlBk64P0Dxx9rU37QOW9jDyS8CVwP6Btb7nrgR+mOSmJA8n+UqSY/ue W1UvAF8Evg88C7xYVVv6ntuaacYJNM+rKX0+xy4H7hzH3CRrgb1V9ejQTZ3MHXcQjPXzzEmOA74B XFFVP37DjjTx2en+JPkA8HxVbQMy3TZ9zKV5NV4F3FBVq4CXaI62ep2b5CTgUzSvXicAxyX5cN9z h72JGZ3PT3It8HJVbeh7bpJjgGuA6waXu5w77iD4Ac15zpTlvDHNOpPkCJoQuKWqNrbL+5Ic397+ VuD5jse+B7goyVPArcC5SW4Zw9y9NK8WD7XXb6cJhud6nvurwLeq6kdV9SpwB83pX99zYebv6fBz bFm71pkkHwUuBH53YLnPuSfRhO329rm1DPhOkqVdzR13EHwbODnJiiRHAhcDm7oekiTAjcDOqvry wE2baN7Mov3vxuH7zkZVXVNVy6tqJXAJ8C9V9ZExzH0OeCbJKe3SecBjNOfsvc2lOU9fneTo9nt+ HrBzDHNh5u/pJuCSJEcmWQmcDDzY1dAkF9Cc+q2tqp8M7U8vc6tqR1UtraqV7XNrL7CqPTXqZu5s 38QZ4U2Q36R5g2kPsL6nGe+lOUd/BNjW/ruA5s2te4HdwD3A4h6/zjW8/luD3ucCZwAPAdtpXpkX jWnuVTShs4PmNxdHdD2X5ujqWeBlmveYLjvQDJrD6D00QfUbHc69HHgC+N7A8+qGHuf+39TXO3T7 k7RvFnY1N+0DSZrH/GShpO6DYByfHJTUrU5PDZIsoDn/P4/mncuHgN+pqsc7GyKpc10fEbwb2FNV T1fVK8DfA2s7niGpY10Hwdg/OShp9hZ2/HgHPc9I4q8ppDlUVT/1qcSug+BNfXLw2j+9hj+57tqO Rx/cZz/zuXkzdz59rc59845eeOy0612fGozlk4OSutXpEUFVvZrkD4B/ovnbAzf6GwPp8Nf1qQFV dRdw14G2OXvNWV2PfVPm09z59LU6d/bG/hHjJPW/r7401pmSGkcvPHbaNwv9iLEkg0CSQSAJg0AS BoEkDAJJGASSMAgkYRBIwiCQhEEgCYNAEgaBJAwCSRgEkjAIJGEQSMIgkIRBIAmDQBIjBkGS5Unu S/JYku8m+WS7viTJliS7k9yTZHG3uyupD6MeEbwC/GFVvR1YDfx+ktOAdcCWqjoF+Of2uqTD3EhB UFXPVdUj7eX/AR6nKTu9CLi53exm4INd7KSkfs36PYIkK4B3AQ8AS6tqX3vTPmDpbB9fUv9m1XSU 5DjgG8AVVfXj5PXehKqqmZqPP/uZz712+ew1Z3H2OWfPZjckzWDr/VvZ+q/fPOh2IzcdJTkC+Efg rqr6cru2Czinqp5L8lbgvqo6deh+Nh1Jc6TTpqM0L/03AjunQqC1Cbi0vXwpsHGUx5c0XiMdESR5 L7AVeBSYeoD1wIPAbcDbgKeBD1XVi0P39YhAmiMzHRFYgirNI5agSpqRQSDJIJBkEEjCIJCEQSAJ g0ASBoEkDAJJGASSMAgkYRBIwiCQhEEgCYNAEgaBJAwCSRgEkjAIJGEQSGKWQZBkQZJtSTa31y1B lSbQbI8IrgB28vqfNLcEVZpAIwdBkmXAhcBXgak/j2wJqjSBZnNE8CXgSmD/wJolqNIEGrXy7APA 81W1jdePBt6gmuaU8banSBrJqG3I7wEuSnIh8DPAzyW5BdiX5PiBEtTnp7uzbcjSePTehvzaAyRr gD+uqt9K8nngR1X1F0nWAYurat3Q9laeSXOk78qzqTS5Hjg/yW7g3Pa6pMOcJajSPGIJqqQZGQSS DAJJBoEkDAJJGASSMAgkYRBIwiCQhEEgCYNAEgaBJAwCSRgEkjAIJGEQSMIgkIRBIAmDQBIGgSQM AknMrvtwcZLbkzyeZGeSM21DlibTbI4I/gq4s6pOA94J7MI2ZGkijdRrkGQRsK2qfnFofRewpqr2 JTkeuL+qTh3axl4DaY503WuwEvhhkpuSPJzkK0mOxTZkaSKNGgQLgVXADVW1CniJodMA25ClyTFq G/JeYG9VPdRevx1YDzxnG7J0+Oi9DTnJVuBjVbU7yZ8Dx7Q32YYsHaZmeo9gNkFwBvBV4EjgP4DL gAXAbcDbgKeBD1XVi0P3MwikOdJ5EIzKIJDmjm3IkmZkEEgyCCQZBJIwCCRhEEjCIJCEQSAJg0AS BoEkDAJJGASSMAgkYRBIwiCQhEEgCYNAEgaBJAwCSRgEkjAIJDG7NuT1SR5LsiPJhiRH2YYsTaaR giDJCuDjwKqqegdNn8El2IYsTaRRjwj+G3gFOCbJQpqWo2eBi4Cb221uBj446z2U1LuRgqCqXgC+ CHyfJgBerKot2IYsTaSRSlCTnAR8ClgB/Bfw9SQfHtymqirJtDVKlqBK49FrCWqSi4Hzq+pj7fWP AKuBc4H3DbQh31dVpw7d18ozaY50XXm2C1id5OgkAc4DdgKbgUvbbS4FNo74+JLGaKRTg6ranuRv gG8D+4GHgb8Gfha4Lcnv0bYhd7SfknpkG7I0j9iGLGlGBoEkg0CSQSAJg0ASBoEkDAJJGASSMAgk YRBIwiCQhEEgCYNAEgaBJAwCSRgEkjAIJGEQSMIgkIRBIAmDQBIHCYIkX0uyL8mOgbUZG4/bhuQn kuxK8v4+d1xSdw52RHATcMHQ2rSNx0lOBy4GTm/vc0MSjzikCXDAH9Sq+ibwn0PLMzUerwVurapX quppYA/w7u52VVJfRnnFnqnx+ARg78B2e4ETZ7FvksZkpMqzKQdqPJ7aZLpF25Cl8eisDTnJCmBz Vb2jvb4LOGe48TjJOoCqur7d7m7guqp6YOjxrDyT5kiXlWebmL7xeBNwSZIjk6wETgYeHGVnJY3X AU8NktwKrAF+IckzwJ8B1zNN43FV7UxyG009+qvAJ2rcDauSRmIbsjSP2IYsaUYGgSSDQJJBIAmD QBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0ASBoEkDAJJGASSMAgkYRBIwiCQhEEgCYNAEqO1IX8h yeNJtie5I8migdtsQ5Ym0ChtyPcAb6+qM4DdwHqwDVmaZIfchlxVW6pqf3v1AWBZe9k2ZGlCzfYV +3LgzvaybcjShBq5DTnJtcDLVbXhAJvZhizNod7akNu1jwIfB369qn7SrtmGLB3mOqs8S3IBcCWw dioEWrYhSxPqUNuQr6P5LcGRwJYkAP9WVZ+wDVmaXLYhS/OIbciSZmQQSDIIJBkEkjAIJGEQSMIg kIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0ASBoEkDAJJGASSGKEEdeC2TyfZn2TJwJol qNIEGqUElSTLgfOB7w2sWYIqTahDLkFt/SVw1dCaJajShBql6WgtsLeqHh26yRJUaUIdUglqkmOA a2hOC15bPsBdbDqSJsChtiGfBKwAtrd1Z8uA7yQ5E/gBsHxg22Xt2k+xDVkaj17bkAduewr4lap6 oX2zcAPN+wInAvcCvzTcf2jlmTR3Rqo8a0tQvwWckuSZJJcNbfLaD3lV7QSmSlDvwhJUaWJYgirN I5agSpqRQSDJIJBkEEjCIJCEQSCJOQqCrfdvnYux82rufPpanTt7cxMEb+Ijj86dvJnOndy5nhpI MggkzdFHjMc6UNIbTPcR47EHgaTDj6cGkgwCSQaBJAwCSRgEkoD/BzPHb1J/+hNHAAAAAElFTkSu QmCC )

模拟森林生长和火灾的过程

经过一段时间:

In [7]:

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

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

循环很长时间:

In [8]:

for i in range(500):
    forest.advance_one_step()
plt.matshow(forest.trees, cmap=plt.cm.Greens)
print forest.tree_fraction

0.253111111111

![](data:image/png;base64,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 4HA4APx/JL/m/4qA3IAAAAAASUVORK5CYII= )

迭代更长时间:

In [9]:

forest = Forest()
tree_fractions = []
for i in range(5000):
    forest.advance_one_step()
    tree_fractions.append(forest.tree_fraction)
fig = plt.figure()
ax0 = fig.add_subplot(1,2,1)
ax0.matshow(forest.trees, cmap=plt.cm.Greens)
ax1 = fig.add_subplot(1,2,2)
ax1.plot(tree_fractions)

plt.show()

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