Transcript TP PERCOLATION – Feu de forêt
Informatique pour tous TP Percolation
TP PERCOLATION – Feu de forêt
La percolation (du latin voisins.
percolare
: couler à travers) désigne le passage d’un fluide à travers un solide poreux. Ce terme fait bien entendu référence au café produit par le passage de l’eau à travers une poudre de café comprimée, mais dans un sens plus large peut aussi bien s’appliquer à l’infiltration des eaux de pluie jusqu’aux nappes phréatiques ou encore à la propagation des feux de forêt par contact entre les feuillages des arbres L’étude scientifique des modèles de percolation s’est développée à partir du milieu du XXe siècle et touche aujourd’hui de nombreuses disciplines, allant des mathématiques à l’économie en passant par la physique et la géologie.
Choix d’un modèle
Nous allons aborder ce phénomène de la percolation via la propagation d’un feu de forêt. Une forêt est représentée une grille carrée
n
n
, chaque case pouvant correspondre à un arbre (avec une probabilité
p
) ou une zone vierge (avec une probabilité 1 -
p
). La question à laquelle nous allons essayer de répondre est la suivante : comment se propage un feu allumé au centre de la forêt , en particulier dans quel cas toute la forêt est détruite par l’incendie. On conçoit aisément que la propagation à toute la forêt ou non dépend beaucoup de
p
: plus celle-ci est grande, plus les chances de « réussite » sont importantes. Nous aurons l’occasion d’observer l’existence pour de grandes valeurs de
n
d’un seuil critique
p
0 en delà duquel la percolation a toutes les chances de réussir et en deçà duquel la percolation échoue presque à chaque fois.
Création et visualisation de la grille
Nous allons représenter la grille par le type
array
du module
numpy
, bien adapté à la manipulation de tableaux multidimensionnels. La fonction
zeros((n, p))
renvoie un tableau de
n
lignes et
p
colonnes contenant le nombre flottant 0.0 dans chacune de ses cases. La fonction
copy(t)
permet de faire une copie du tableau
t.
Une fois un tableau
Foret
créé, la case d’indice (
i,j
) est référencée par
Foret[i][j]
et peut être lue et modifiée (comme d’habitude, les indices débutent à 0). On notera que si
Foret
est un tableau, la méthode
n,p = Foret.shape
permet d’obtenir le nombre de lignes et de colonnes de ce dernier. 1.
Écrire une fonction
CreerForet
qui prend en paramètres un entier
n
(la dimension de la forêt) et un réel
p
compris entre 0 et 1 qui représente le pourcentage d'occupation de la forêt. Cette fonction retourne un tableau de flottants de taille
n
n
dont les éléments sont égaux à 0.0 ou à 1.0 et valent 1.0 avec une probabilité
p
.
P. CHATEL 1 sur 2 2014-04-13 Informatique pour tous TP Percolation
Pour visualiser simplement la forêt (fonction fournie :
AfficherForet
), nous utilisons la fonction
imshow
du module
matplotlib.pyplot
: appliquée à un tableau, celle-ci présente ce dernier sous forme d’une image de cases colorées en fonction de leur valeur. Puisque nos grilles ne contiennent pour l’instant que les valeurs 0.0 ou 1.0, les cases contenant un arbre en vert, et les cases non boisées en marron.
Propagation d'un incendie
2.
Écrivez une fonction
MettreLeFeu
qui prend un tableau en paramètre, qui inscrit la valeur 2 dans une case centrale de ce tableau et renvoie le nouveau tableau ainsi obtenu. 3.
Créez une fonction
PeutBruler
qui prend en paramètre une forêt ainsi que deux entiers
i
et
j
et qui renvoie
True
ou
False
suivant que l'emplacement d'indice (
i;j
) est à proximité d'un arbre en feu. Attention à bien traiter les bords du domaine. 4.
Créez une fonction
PropageFeu
qui prend en paramètre une forêt et qui en retourne une nouvelle, dans laquelle les arbres qui peuvent brûler sont en feu. 5.
Écrivez une fonction
AuFeu
qui prend en paramètre une forêt et qui renvoie
True
si au moins un arbre non en feu peut brûler. 6.
Créez une fonction
MetFeuForet
qui prend en paramètre une forêt, y met le feu et propage l'incendie jusqu'à ce que tous les arbres qui peuvent brûler soient en feu. La fonction retourne la forêt à la fin de ce processus. 7.
Créez une fonction
SuivreFeu
qui prend en paramètre une forêt, y met le feu et propage l'incendie jusqu'à ce que tous les arbres qui peuvent brûler soient en feu et renvoie la liste de l’évolution de l’état de la forêt. Pour visualiser simplement la forêt (fonction fournie :
VideoIncendie
), nous utilisons le mode animation en exécutant l’instruction
ion()
(pour « interactive mode on »). On utilise aussi les fonctions,
clf()
pour effacer la figure avant de la mettre à jour et correspondant au nombre de secondes de cette temporisation.
pause()
pour temporiser avant une modification ultérieure. La fonction pause demande un argument qui est un nombre positif Faire simulations pour
p
∈ {0.2 ; 0.3 ;0.4 ;0.5 ;0.6 ;0.7 ;0.8 ;0.9}. Que remarquez-vous ?
Mise en évidence du seuil de percolation
8.
Écrivez une fonction
EtendueDegats
qui prend une forêt en argument et renvoie le rapport entre la surface brûlée et la surface boisée initiale. 9.
Tracez cette proportion en fonction de la densité initiale de la forêt. On effectuera une moyenne sur un nombre significatif d'expériences pour lisser les fluctuations dues au hasard. On dit que la percolation est réussie lorsqu’à la fin de l’incendie toute la forêt est détruite. Vous devriez constater qu’il semble exister un seuil
p
0 en deçà duquel la percolation échoue presque à chaque fois, et au-delà duquel celle-ci réussit presque à chaque fois.