| Previous topic :: Next topic |
| Author |
Message |
TimEco
Offline
Joined: 14 Jan 2011 Posts: 1
Localisation: Paris
|
Posted: Sat 15 Jan 2011 - 20:14 Post subject: Aide pour la simulation d'une diffusion épidémique |
|
|
Bonjour à tous,
Je suis étudiant, et on me demande de de réaliser une application permettant à l'utilisateur de faire des simulation de ce modèle en choisissant les valeurs des 3 paramètres (pourcentage de malade initial, txContamination et duréeContagion).
Voilà l'idée générale : La population est répartie en 3 catégories S les personnes saines et susceptibles de devenir infectées, I : les personnes infectées, malades, R : les personnes guéries et qui sont immunisées.
Une maladie est caractérisée par : txContamination : la probabilité qu'une personne saine rencontrant une personne infectée contracte la maladie, duréeContagion : la durée (en pas de temps) pendant laquelle une personne infectée est contagieuse. Chaque personne est entourée de 8 voisins et, initialement, un certain pourcentage de la population est infectée, les autres personnes étant saines (personne n'est guéri).
La simulation se déroule de la façon suivante : A chaque pas de temps, chaque personne rencontre l'un de ses voisins, choisi au hasard. Si cette personne est saine et ce voisin est malade, alors la personne devient infectée avec une probabilité txContamination. A chaque pas de temps, une personne qui est malade depuis duréeContagion devient guérie.
La simulation permettra de voir : combien de temps va durer l'épidémie, i.e. le nombre de pas de temps nécessaire pour que plus personne ne soit infecté, quelle pourcentage de la population aura été infecté, les courbes indiquant le nombre de personnes (en ordonnée) qui deviennent malades ou guéries à chaque pas de temps (en abscisse).
J'éprouve quelques difficultés pour la réalisation des méthodes "rencontrer" & "simuler" :
package Modele; import Interface.ObservateurIndividu;
public class Individu { int col; //colonne occupée par cet individu int lig; int colV ; //colonne et ligne du voisin int ligV ; static Territoire territoire; Etat etat ; ObservateurIndividu observateur;
public Individu (int c, int l, Etat e){ etat = e; col = c; lig = l; observateur = new ObservateurIndividu(c, l); observateur.changeEtat(etat); }
public void rencontrer(){ // A COMPLÉTER }
void choisirVoisin (){ colV = col; //colonne et ligne du voisin ligV = lig; int voisinN, voisinE, voisinS, voisinO; //adresse des voisins nord et est voisinN= (lig+ (territoire.nbLig)-1)%territoire.nbLig; voisinO = (col + (territoire.nbCol)-1)%territoire.nbCol; voisinE = (col+1)%territoire.nbCol; voisinS = (lig+1)%territoire.nbLig;
int direction = (int) (Math.random()* ; switch (direction){ //dans le sens des aiguilles d'une montre case 1 : ligV=voisinN; break; case 2 : colV=voisinE; ligV=voisinN; break; case 3 : colV=voisinE; break; case 4 : colV=voisinE; ligV=voisinS; break; case 5 : ligV=voisinS; break; case 6 : colV = voisinE; ligV=voisinS; break; case 7 : colV = voisinE; break; case 8 : colV = voisinE; ligV=voisinN; break; } }
}
package Modele; import java.util.ArrayList; import Interface.ObservateurTerritoire;
public class Territoire { public int nbCol; //nb colonnes du terain public int nbLig; //nb lignes du terrain public Individu [] []population; //[colonne] [ligne] private ObservateurTerritoire observateur; int nbIndividu;
public Territoire (int nc, int nl, double to){ //initialisation Individu.territoire = this; observateur =new ObservateurTerritoire(); nbCol = nc; nbLig = nl; population = new Individu[nbCol][nbLig]; //créer les population Etat e; for (int l=0; l<nbLig; l++) for (int c=0; c<nbCol;c++){ if (Math.random()<to) e = Etat.malade; else e=Etat.sain; population [c] [l]= new Individu(c,l, e); } }
public void simuler(int nbP){ //A COMPLÉTER } }
Mes problèmes sont d'ordre technique, je pourrais vous expliquer plus en détail l'objectif de la méthode si besoin est.
Merci d'avance. A bientôt. _________________ Bonjour, Je suis étudiant, et novice en programmation. |
|
| Back to top |
|
 |
|
|