コード例 #1
0
def simulate_fire(grid_size, prob_tree, prob_burning, prob_lightning,
                  prob_immune, t):
    grids = []
    grid = init_grid(grid_size, prob_tree, prob_burning)
    grids.append(grid)
    for i in range(t):
        new_grid = np.zeros_like(grid)
        ndimage.generic_filter(grids[-1], spread, size=3, mode="constant",
                               output=new_grid,
                               # these are passed to spread
                               extra_arguments=(prob_immune,
                                                prob_lightning))
        grids.append(new_grid.copy())
    return grids
コード例 #2
0
    return padded_grid


if __name__ == "__main__":

    grid_size = 50
    prob_tree = .8
    prob_burning = .0005
    prob_immune = .25
    prob_lightning = .00001

    # Optionally, set a *seed* to make the random numbers reproducible.

    np.random.seed(123)

    grid = init_grid(grid_size, prob_tree, prob_burning)

    # Run the simulation

    t = 50
    grids = [grid.copy()]

    for i in range(t):
        padded_grid = pad_grid(grids[-1], grid_size)
        new_grid = np.zeros_like(grid)
        for j in range(1, grid_size + 1):
            for k in range(1, grid_size + 1):
                new_grid[j-1, k-1] = spread(padded_grid[j-1:j+2,
                                                        k-1:k+2].flatten(),
                                            prob_immune,
                                            prob_lightning)