... | ... | @@ -115,11 +115,66 @@ end |
|
|
Il nous faut maintenant modéliser la propagation de l'épidémie. La couleur de nos tortues va servir à coder l'état :
|
|
|
S blanche, I rouge et enfin R vert. Pour chaque tortue on calculera la durée de son infection, cette durée sera la
|
|
|
même pour toutes. Notre simulation se fera avec un pas de temps discret et la génération `i+1` sera déterminée en
|
|
|
fonction de la génération `i`. L'état des tortues sera donc modifié qu'en fin de calcul de chaque génération.
|
|
|
fonction de la génération `i`. L'état des tortues sera donc modifié qu'en fin de calcul de chaque génération. On fixe également au départ des tortues qui sont infectées.
|
|
|
|
|
|
```code
|
|
|
turtles-own[
|
|
|
futur-etat
|
|
|
duree-maladie
|
|
|
]
|
|
|
|
|
|
;======================================
|
|
|
; Initialisation de nos pauvres tortues
|
|
|
;======================================
|
|
|
|
|
|
turtles-own[
|
|
|
futur-etat
|
|
|
duree-maladie
|
|
|
]
|
|
|
|
|
|
;
|
|
|
; Initialisation des tortues
|
|
|
; - la couleur code l'état blanche = S, rouge = I, vert = R
|
|
|
; - position aléatoire
|
|
|
; - non infectée (blanche)
|
|
|
to initialisation-tortues
|
|
|
create-turtles population-initiale [
|
|
|
set futur-etat white
|
|
|
set size 0.5
|
|
|
set duree-maladie 0
|
|
|
setxy random-pxcor random-pycor
|
|
|
]
|
|
|
end
|
|
|
|
|
|
;
|
|
|
; On tire au hasard nb-premiere-infectee tortues.
|
|
|
; Leur état change donc.
|
|
|
;
|
|
|
to souche-infection
|
|
|
ask n-of nb-premiere-infectee turtles [
|
|
|
set futur-etat red
|
|
|
]
|
|
|
end
|
|
|
```
|
|
|
|
|
|
L'épidémie a donc maintenant démarrée, nous allons maintenant modéliser sa propagation avec un modèle SIR. Dans un premier temps modélisons `S -> I`, autrement dit la contamination. Chaque tortue `S` (blanche) va compter dans son voisinage le nombre de tortues `I`. Une tortue `S` sera alors contaminée en fonction de la probabilité de transmission et bien sur également aussi en fonction du nombre de tortues `I. Pour cela on réalise un tirage aléatoire. Une tortue nouvellement contaminée voit son `futur-etat` devenir `red`.
|
|
|
|
|
|
```code
|
|
|
;
|
|
|
; Contamination S -> I
|
|
|
; On compte le nombre de voisines infectées en fonction de la distance
|
|
|
; La contamination se fait en fonction d'une probabilité
|
|
|
;
|
|
|
to infection-des-saines
|
|
|
ask turtles with [color = white] [
|
|
|
let nombre-de-voisines-infectees (count other turtles with [color = red] in-radius distance-non-sociale)
|
|
|
if (random-float 1 < 1 - (((1 - proba-de-transmission) ^ nombre-de-voisines-infectees)))
|
|
|
[set futur-etat red]
|
|
|
]
|
|
|
end
|
|
|
```
|
|
|
|
|
|
```code
|
|
|
; Le variables globales
|
|
|
; max-infectes : on compte le nombre de malade
|
|
|
;
|
... | ... | @@ -277,6 +332,5 @@ to execute |
|
|
bouge
|
|
|
tick
|
|
|
end
|
|
|
|
|
|
```
|
|
|
|