1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| import sys
import numpy as np
import matplotlib.pyplot as plt
from numpy import exp
from matplotlib import colors
from scipy.optimize import curve_fit
from numpy import linspace
# Pour s'épargner des "RuntimeError"
sys.setrecursionlimit(50000000)
# Paramètres
taille = [(5,5),(10,10),(20,20),(50,50)]
# Constantes
CENDRE = 0
ARBRE = 1
# ALLUUUMEEEEEEER LE FEU !
def allumer_le_feu(foretjpp, position, probabilite_embrasement):
foretjpp[position] = CENDRE
decalages = [( 0,-1), ( 1, 0), ( 0, 1), (-1, 0)]
coord_voisins = [(position[0]+x, position[1]+y) for x, y in decalages]
for v in coord_voisins:
if (v[0] > 0 and v[0] < taille_zone[0] -1
and v[1] > 0 and v[1] < taille_zone[1] -1
and foret[v] == ARBRE
and np.random.rand(1) < probabilite_embrasement):
allumer_le_feu(foretjpp,v,probabilite_embrasement)
def planter_foret():
foretlol = np.zeros(taille_zone,dtype='int_')
foretlol.fill(ARBRE)
return foretlol
# Calcul point
nb_echantillons =25
proba_embrasement = [i/100 for i in range(100)]
differentes_tailles=[]
liste = 0
res_ratio_fin_simple=[]
res_proba_simple=[]
res_ratio_simple=[]
for taille_zone in [(50,50)]:
print(taille_zone)
for proba in proba_embrasement:
ini=planter_foret()
print(proba)
for i in range(2):
foret = ini
nb_arbres_total = np.count_nonzero(foret == ARBRE)
position_foyer = np.random.randint(0,taille_zone[0]), np.random.randint(0,taille_zone[1])
allumer_le_feu(foret, position_foyer, proba)
nb_arbres_restant = np.count_nonzero(foret == ARBRE)
a=(nb_arbres_total-nb_arbres_restant)/nb_arbres_total
res_proba_simple.append(proba)
res_ratio_simple.append(a) |
Partager