Voilà, je suis étudiant en informatique, et je rencontre quelques difficultés a terminer un exercice dont voilà le sujet :
On souhaite simuler la gestion d'un port pétrolier où arrivent des tankers. Ces derniers arrivent au port selon la distribution de temps inter-arrivée suivante :
Temps inter-arrivée(jours) :1 probabilité : 0.2
Temps inter-arrivée(jours) :2 probabilité : 0.25
Temps inter-arrivée(jours) :3 probabilité : 0.35
Temps inter-arrivée(jours) :4 probabilité : 0.15
Temps inter-arrivée(jours) :5 probabilité : 0.0.5
Le port possède Deux terminaux A et B. Le terminal B est le plus récent donc plus efficace au niveau logistique que la terminal A. le temps pris pour décharger un tanker dépend de la taille de celui-ci. Un super-tanker prend 4 jours pour décharger au terminal A et 3 jours au terminal B. Un tanker de tailler moyenne est décharger en 3 jours au terminal A et 2 jours au terminal B.Finalement, un petit tanker prend 2 jours pour décharger au terminal A et 1 jour au terminal B.
Lorsque les tankers arrivent, ils attendent au large du port jusqu'à ce qu'un terminal devienne disponible. Les tankers sont déchargés selon la règle du premier arrivé-premier servis. Le type de tanker et la fréquence avec laquelle ils arrivent au port est donnée par la distribution suivante :
Type de tanker : super tanker probabilité :0.4
Type de tanker : tanker moyen probabilité :0.35
Type de tanker : petit tanker probabilité :0.25
Développer un modèle de simulation pour ce port.
Effectuer des simulations sur des périodes de 30,60.90 jours et calculer des statistiques telles que le nombre moyen de tankers dans le port, le nombre moyen de jour d'un tanker dans un port, le pourcentage de temps inoccupé de chacun des terminaux.
Dans ce problème on ne recherche pas à optimiser le temps de déchargement. L'attente au large du port correspond a une mise en file d'attente.
Voilà ce que j'ai fais pour l'instant, j'aimerai bien que l'on m'aide à terminer. MERCI
PS: voici quelques informations :
TH est le temps d'horloge
ESA=0 si le terminal A est libre, 1 sinon
ESB=0 si le terminal B est libre, 1 sinon
TA est le temps de la prochaine arrivée
TFA temps de fin d'exécution dans le terminal A
TFB temps de fin d'exécution dans le terminal B
TMX est la période maximale = nombre de jour de la simu
LF est la longueur de la file d'attente ( il s'agit ici d'une file d'attente simple représenté par un compteur, on n'utile pas de tableau)
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
main()
{int TH=0,ESA=0,ESB=0,TA=0,TFA=100,TFB=100,TMX=0,LF=0;
srand(100);
printf(" entrer la période en jours");
scanf("%d",&TMX);
while(TH<=TMX)
{ if(TA<=TFB)
if(TA<=TFA)
{ TH=TA;TFA=tps_arrive()+TH;
if(ESB==0)
{ESB=1;
TFB=TH+tps_decharge('b');}
else if(ESA==0)
{ESA=1;
TFA=TH+tps_decharge('a');}
else LF++;
}
else
{TH=TFA;
if(LF>0) {LF--;TFA=TH+tps_decharge('a');}
else {ESA=0;TFA=100;}
}
else{TH=TFB;
if(LF>0) {LF--;TFB=TH+tps_decharge('b');}
else{ ESB=0;TFB=100;}
}
}
}
int tps_arrive()
{float x;
x=(float)(rand()/RAND_MAX);
if(x<=0.2) return 1;
else if (x<=0.45) return 2;
else if(x<=0.80) return 3;
else if(x<=0.95) return 4;
else return 5;
}
int type_tanker()
{float x;
x=float(rand()/RAND_MAX);
if(x<=0.4) return 3;
else if (x<=0.75) return 2;
else return 1;
}
int tps_decharge(char terminal)
{int i=type_tanker();
if(terminal=='b') return i;
else return (i+1);
}