Bonjour !
Si aujourd'hui je viens vers vous c'est que je suis littéralement en train de me tirer les cheveux.
Je vous explique, je suis en train de faire un programme simulant un feu de forêt.
Après avoir défini le programme qui simule le feu et celui qui créé la foret, je créé ma boucle pour avoir les données de sorties.
Ce que je ne comprends absolument pas, c'est que du coup, j'utilise la variable "ini" pour créer ma forêt d'une taille donné et ensuite, je dis que ma "foret = ini" comme ça, je n'ai pas à recréer de forêt à chaque début de boucle.
Ma question est, du coup, on voit dans le programme que je mets le feu à foret, du coup, ça change les valeurs de ma variable foret ce qui est normal.
Mais, pourquoi AU GRAND DIEU, cela change les valeurs de "ini" ?? Je suis en train de méchamment péter un cable ...
Je dis bien que "foret = ini" mais après je ne touche plus jamais à ini et là, PAF, j'ai ini qui change aussi.
Quelqu'un peut m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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