dimanche 26 octobre 2014

Mini-projet sur la simulation: l'élevage des lapins

Introduction :


La simulation a pour objet de reproduire la réalité du terrain. D’une part, les individus sont multiples et variés : la simulation doit prendre en compte la diversité des événements et des comportements, tant d'un point de vue cinématique que fonctionnel. D'autre part, la réalité du terrain est multiforme, instable et difficilement prévisible. C’est de ces contraintes qu’on devait prendre compte lors de la réalisation du projet sur  la simulation de l’élevage des lapins .

I- Enoncé :

Dans une ferme, on dispose de 4 lapins :
·         un male de 25 mois.
·         un male de 15 mois.
·         une femelle de 17 mois, enceinte de 2 mois.
·         une femelle de 26 mois, enceinte d’un mois


       Hypothèse d'étude:

è la période de grossesse d’une lapine est de 3 mois.
è La durée de vie d’un lapin suit une loi uniforme dans [0,100] mois.
è Un lapin male ou femelle atteint sa puberté à l’âge  de 12 mois
è le nombre de lapins bébés qu’une femelle peut avoir suit une loi uniforme dans  [0,6] lapins, dont 50% males et 50% femelles.
è Quand une lapine met bas, un mois après elle peut être enceinte.

La première partie:
  1-Utiliser la simulation pour estimer, après une période de 5 ans les paramètres  suivants :
·         Le nombre de lapins.
·         Le nombre de males
·         Le nombre de femelles.
·         Le nombre de femelles pubertés.
·         La durée de vie moyenne.
       
     
   2 - Faire la simulation de 40 expériences  pour calculer les intervalles de confiance à 95% pour les cinq  paramètres précités.
   3 - Estimer la taille d’échantillon n à étudier pour avoir une précision +/- de 3 mois au niveau de l’intervalle de confiance de durée de vie moyenne.

       La deuxième partie:
Faire la simulation en prévoyant une vaccination pour chaque lapin né.
Le coût d’une vaccination est de 10 DH. Avec vaccination, la durée de vie suit une loi uniforme entre [0,150] mois.
            Refaire toutes les questions de la première partie avec vaccination, avec en plus l’estimation du coût global des vaccinations pour une période de 5 ans.
Calculer son intervalle de confiance.

II- Structure :

           Pour résoudre ce problème, on a opté pour l’utilisation du langage java, qui est un langage orienté objet, assez puissant permettant de  paramétrer toutes les variables du problème.
            Ainsi, on a utilisé les listes chaînées, comme structure de données ayant les champs suivants : le sexe, la date de la mort, la date d’accouchement, la date de la puberté et enfin la durée de vie.    
NB : pour les males la date d’accouchement par défaut est zéro

         Logique:
La démarche qu’on a adoptée pour faire la simulation est la suivante :
Pour un mois x il faut tout d’abord
1   -      éliminer les lapins qui ont  la Date_Mort=X.
2   -      ensuite Chercher les lapines qui ont Date_Acouchement=X
     2-1-Pour chaque nouveaux né faire les étapes suivantes :
·         Déterminer le sexe à l’aide de la fonction alea.
·         Calculer la Date-Mort avec (X+durée de vie)
·         Date puberté (X+12)
·         Durée de vie (générée par alea)
·         Date d’accouchement(X+15)et 0 pour les males.
·          Coût vaccin=coût vaccin+10( Cas de vaccination)
      2-2 Date-Accouchement =X+4

3-incrémenter X.

III- Programme :

On a  commencé par définir  quatre  classes citées ci-dessous :
v  Aleas.java : On a définit une fonction aléatoire qui génère les différents variables aléatoires, à savoir :
o   Durée de vie
o   Nombre des lapin nés
o   Sexe des lapins : male ou femelle
   v  Link.java:  On a définit une liste chaînée qui contient les champs suivants :

o   Sexe
o   DatePuberte
o   DateMort;
o   DureeDeVie
o   DateAccouchement

                
v  FirstLastList: On définit les méthodes du traitement suivantes :

o   long getNbreLapins()     :  Calcule le nombre de lapins total 
o   long getNbreMales()      :  Calcule  Le nombre de males
o   long getNbreFemelles()   : Calcule le nombre de femelles
o   long getNbreFemellesPuberte(long mois) :Calcule le nombre de femelles pubertes
o   void insertLast(char sexe,long datepuberte,long datemort,long dureedevie,long dateaccouchement): C’est une méthode qui inserre un nouveau élément dans la liste chaînée et qui reçoit comme paramètres :Le sexe du lapin,sa date de puberté,sa date de mort,sa durée de vie,et sa date d’accouchement s’il s’agit d’une femelle.
o   void remove(double datemort)   :  Cette méthode supprime l’élement dont la date de mort est arrivée, de la liste
o   long chercherAccouchement(long mois,double probaBebe) : Cette méthode cherche les lapins qui doivent accoucher dans un mois donnée et avec un nombre de bébé qui est generé par la méthode alea.
o   double getcoutVaccination()    : Elle calcule le coût de Vaccination
v  Start.java : c’est la méthode  Main qui appelle  les méthodes  précitées.





samedi 11 octobre 2014

Mini-projet sur la simulation

Introduction :

La simulation est une technique qui sert à approcher des phénomènes  d’une manière scientifique.
Les problèmes pratiques où la simulation est utilisée, sont relatifs à tous les aspects de la vie réelle. On peut citer:
§  La stratégie ou tactique de guerre.
§  Les problèmes industriels tels que la gestion des stocks, les systèmes de distribution,  de maintenance ou de file d'attente.
§  Les problèmes économiques comme l'étude de la demande, les fluctuations du marché, les plans de développement, la gestion d'un portefeuille d'actions.
§  Les systèmes biomédicaux tels que les équilibres de fluide et la distribution électrolyte dans le corps humain, la prolifération de cellules infectées.
§  Les simulations de vols d'avion ou de fusée.

Ainsi, la simulation se voit  fournir au gestionnaire des informations quantitatives de toute nature, afin de faciliter sa prise de décision.
En effet, et à partir d'une série d'essais, on construit un modèle servant à reproduire aussi exactement que possible un système ou une partie de système à évaluer. Ce modèle doit regrouper des informations jugées pertinentes à la compréhension du fonctionnement du système existant ou à l'étude.
Outre que ces fonctionnalités, la simulation sert aussi à déterminer le comportement du système dans de diverses  conditions.
A travers  ce travail, on se propose d’utiliser cette technique pour récolter un certain nombre d’information concernant un système d’information et ce pour une période déterminée.

 I-         PROBLEMATIQUE:


Dans un système informatique, les programmes sont lancés à partir du terminal. Le temps qui sépare les émissions  des  programmes est distribué uniformément entre 5s et 40s.
La mémoire centrale disponible pour le chargement des programmes émis est de 1000 pages.
La taille d’un programme est distribuée uniformément entre 10 et 80 pages.
La durée d’exécution d’un programme est distribuée uniformément entre 13 et 50 secondes.
Les programmes en mémoire centrale se partagent le processeur avec un quantum de 3 secondes.
Le nombre de programmes en mémoire n’est limité que par la taille mémoire.
On se propose de mesurer les cinq paramètres suivants :
ü    Le nombre des programmes exécutés par le système.
ü    Le temps moyen d’attente pour le chargement en mémoire.
ü    Le temps moyen de résidence des travaux dans le système.
ü    Le taux d’utilisation du processeur central.
ü    Le taux d’utilisation (remplissage) de la mémoire.

    II-      TRAVAIL A REALISER :

 En utilisant la simulation, on doit :
1)   Estimer les 5 paramètres précédents pour une journée
2)   Calculer les intervalles de confiance à 95% relatifs aux cinq paramètres précédents pour un échantillon de 40 jours
3)   Calculer la taille qu’il faut étudier afin d’avoir une largeur de 10 secondes pour l’intervalle de confiance concernant le temps moyen de résidence des travaux dans le système.
4)   on envisage une extension de la mémoire de 500 pages et on aimerait avoir une idée de l'influence de cette opération sur les paramètres précédents, pour cela reprendre les questions 1,2 et 3.


    III-    SYSTEME ET SIMULATION :

Pour étudier un système complexe, on est le plus souvent amenés à simplifier certaines propriétés des phénomènes en mettant un certain nombre d'hypothèses sur son fonctionnement. Ces hypothèses qui revêtent le plus souvent, la forme de relations mathématiques ou logiques, constituent un modèle.
            Un modèle est donc une description d'un processus d'intérêt que on appelons généralement système et qui a pour objectif de prédire ce qui arrive si certaines conditions sont remplies. Un modèle est souvent une simplification de la réalité.
En d'autres termes, la simulation est une technique de modélisation permettant de construire une abstraction de la réalité c'est à dire, un modèle et de le faire évoluer en fonction du temps.
On peut résumer par l'organigramme suivant les différentes façons d'étudier un système:


IV-      LA SIMULATION A EVENEMENTS DISCRETS:

Dans une simulation à événements discrets, les variables qui déterminent l'état du système appelées, variables d'état du système et que l'on désire connaître à tout instant sont discrètes.
L'ensemble des valeurs que peut prendre ces variables est appelé espace d'état du système.
C'est donc, un espace dénombrable ou fini. Donc les changements d'état ou événements se produisent d'une manière discrète dans le temps. Les instants de changements d'état sont appelés dates d'événements ou dates d'occurrence.
Il s'ensuit, pour que la simulation soit possible, on devons être capables de décrire les changements d'état ou événements par des algorithmes. Les événements arrivant d'une manière discrète, doivent être ordonnés chronologiquement et donc simulés l'un après l'autre sur une machine séquentielle.
Avant de fermer ce paragraphe, on dit un mot sur la simulation continue. On désigne par simulation continue l'utilisation des ordinateurs dans la résolution des modèles ayant des états qui changent de façon continue dans le temps. De tels modèles sont généralement, composés d'équations différentielles. Et donc on doit faire appel à des méthodes mathématiques plus élaborées.

V-     MECANISME D'AVANCEMENT DU TEMPS:

 En raison de la nature dynamique des modèles de simulation à événements discrets, on devons connaître la valeur actuelle du temps de simulation et disposer d'un moyen de faire avancer ce temps de simulation d'un point à l'autre.
  On appellera horloge de simulation la variable qui nous donne la valeur courante du temps de simulation.
  Selon la façon de gérer le temps dans la simulation à événements discrets, on distingue:
§  la simulation dirigée par événements.
§  la simulation dirigée par une horloge.
§  La simulation dirigée par activités.
La plupart des langages de simulation utilisent la première approche. Dans une simulation dirigée par événements, les seuls temps accessibles lors de la simulation sont les dates d'événements et l'incrémentation du temps, se fait d'une date d'événement à l'autre.
 L'horloge est initialisée à zéro et le temps des prochains événements est déterminé. L'horloge est alors avancée à la date du premier événement. L'état du système est alors mis à jour, tenant compte de l'événement qui vient de se produire. La liste des dates des événements futurs est mise à jour, l'événement qui vient de se produire est supprimé de la liste des événements, tous les autres événements sont translatés d'une position dans cette liste. L'horloge est ensuite, avancée à la date de l'événement suivant et ainsi de suite, jusqu'à ce qu'une condition d'arrêt soit rencontrée.          

VI-    SIMULATION PAR UN LANGAGE DE LA POO (C#):

Cet essai consistait à formuler un code qui sera d’une part adapté à la fonctionnalité du langage c#, et d’autre part pouvoir approcher notre problème par un modèle représentant le mieux possible la réalité
Le code est basé sur les deux structures suivantes :
ü  Calendrier qui trace la succession des programmes depuis l’émission jusqu’à la fin d’exécution.
ü  Programme qui permet de compter le nombre des programmes émis.

Données à saisir :
ix, iy, iz : germes de la fonction alea.
tmiep : temps minimum inter émission de programmes (défaut : 5s)
tmxiep : temps maximum  inter émission de programmes (défaut : 40s)
tm : taille mémoire (défaut : 1000 pages)
tmp : taille minimum d’un programme (défaut : 10)
tmxp : taille maximum d’un programme (défaut : 80)
dme : durée minimum d’exécution d’un programme (défaut : 13)
dmxe : durée maximum d’exécution d’un programme (défaut : 50)
dq : durée d’un quantum (défaut : 3 s)
ds ; durée d’un scénario (défaut : 12*3600)

Données à calculer
Np : nombre de programmes exécutés dans le système (calculé à l’aide d’un compteur d’entrée des programmes)
Tma : temps moyen d’attente pour le chargement en mémoire (calculé en divisant la durée séparant le temps d’émission de chaque programme et le temps de chargement du programme)
Tmr : temps moyen de résidence dans le système (calculé en additionnant les durées séparant le temps d’émission de chaque programme à  sa fin d’exécution et en divisant par le nombre de programmes émis)
Tup : taux d’utilisation du processeur central (calculé en comptabilisant toutes les durées d’inactivité du processeur, en le détectant à chaque début de quantum, et en divisant leur total par ds et prendre son complémentaire à 1)
Tum : taux d’utilisation de la mémoire (calculé en comptabilisant le taux de remplissage à chaque top de quantum et en divisant par ds/3)
Variables intermédiaires
H : temps courant
Prog[tp,tep,tcp,tfe] : tableau dynamique  qui trace chaque programme en enregistrant sa taille, sa date d’entrée, sa date de chargement et sa date de fin d’exécution.
Ttp : taille totale des programmes en mémoire
FileC[num_prog] : file d’attente des programmes à charger en mémoire.
FileE[num_prog, nb_quantum, reste] : file d’attente des programmes à exécuter.
Calendrier[H,evenement,Programme ] : calendrier des événements à prévoir.

Evénements
1-      Emission_pg()
2-      Chargement_pg()
3-      Fin_execution()
4-      Top_quantum()


Emission_pg()
ü  Calcul de la prochaine émission de programme tant que H<dsàcalendrier(,« émission »,)
ü  Calcul de la taille du programme tp
ü  Enregistrer sa taille tp, sa date d’entrée tep dans Prog[]
ü  Incrémentation de Np
ü  Vérification si le premier programme dans la file peut être chargé en mémoire (tp<=(tm-Ttp) ), si oui àcalendrier(,« chargement »,) sinon  Mettre le programme dans la file d’attente
Chargement_pg()
ü  Vérification si le premier programme dans la file peut être chargé en mémoire (tp<=(tm-Ttp) ), si oui charger en mémoire (enregistrer le temps de chargement dans le tableau Prog , sinon passer au prochain dans la file jusqu’à la fin de la file.
ü  Enregistrer le temps d’exécution du programme.
ü  Calcul progressif du temps moyen d’attente Tma.
ü  Calculer sa durée d’exécution tex
ü  Calcul du nombre de quantums nécessaires à l’exécution du programme (Nq=tex/tq) ainsi que le reste (reste=Nq-tex/tq) et son enregistrement
ü  Mettre le programme dans la file d’exécution FileE[].
Fin_execution()
ü  Libération mémoire du programme. (Ttp=Ttp-tp)
ü  Enregistrement du temps de fin d’exécution tfe.
ü  Calcul progressif du temps moyen de résidence Tmr.
ü  Appeler  Chargement_pg()

Top_quantum()
ü  Se positionner sur le programme suivant (en gérant une file d’attente circulaire, chaque élément contient le N° du programme, son temps d’exécution tex)
ü  tex=tex-3
Si      tex>3--->calendrier(H+3, « top_quantum »,)
Sinon --à calendrier(H+tex, « fin_execution»,)

Algorithme :




VII- Présentation du programme de simulation:



 


Conclusion :

A travers ce travail, on déduiT clairement  que les résultats d'une simulation sont des observations statistiques sujettes à des erreurs expérimentales. Elle permet en outre de se rapprocher de la réalité par des calculs statistiques.