5.6.2 Modèle avec file

5.6.3 Modèle sans file

5.6.4 Déroulement de l'algorithme de simulation
(modèle avec file)
Notre modèle de simulation repr'esent'e par
l'organigramme pr'ec'edent, r'esume les principales tâches et proc'edures
suivantes :
1) Initialisation : C'est une 'etape n'ecessaire a` tout
programme informatique. Les variables les plus importantes a` initialiser dans
notre simulateur sont :
· Pour i allant de 0 a` Nbrc-1 faire: Camion[i] :=0.
· Pour i allant de 0 a` Nbrch-1 faire : Chauffeur[i]
:=(0,0,0).
· Initialiser la taille du tableau Etatfile a` 0.
· Initialiser le compteur temps : t :=0.
· Initialiser le nombre de clients servis : Nbrs :=0.
· Initialiser le cumule des temps d'attente dans la file et
dans le système :
- Ctf :=0; - Cts :=0.
· Initialiser le cumule des nombres de clients dans la file
et dans le système :
- CNf :=0; - CNs :=0.
· Initialiser le cumule des nombres de camions et de
chauffeurs inoccup'es par unit'e de temps : - CNbrcI :=0;
- CNbrchI :=0.
2) Pour t allant de 0 a` T ex'ecuter les 'etapes 3 a` 6.
3) Actualisation : c'est une proc'edure qui serve a` actualiser
les tableaux Camion, Chauffeur et Etatfile a` chaque d'ebut de journ'ee comme
suit :
a) Pour les camions non pas encore rentr'es : Camion[i]6=0,
faire d'ecr'ementer la dur'ee restante de leurs trajets d'une unit'e de temps
Camion[i] :=Camion[i]-1.
b) Pour les chauffeurs:
· qui sont encore au repos : Chauffeur[i,0]6=0, faire
d'ecr'ementer la dur'ee restante de leurs repos d'une unit'e de temps
Chauffeur[i,0] :=Chauffeur[i,0]-1.
· qui sont en service : Chauffeur[i,1]6=0 :
- faire d'ecr'ementer la dur'ee restante de leurs services d'une
unit'e de temps Chauffeur[i,1] :=Chauffeur[i,1]-1.
- faire inc'ementer la dur'ee de service cumul'ee après
leurs dernier repos d'une unit'e de temps Chauffeur[i,2] :=Chauffeur[i,2]+1.
· qui sont rentr'es et ont cumul'e une dur'ee de service
sup'erieure ou 'egale a` la dur'ee de service exig'ee : Chauffeur[i,1]=0 et
Chauffeur[i,2]= Dserv :
- leurs donner une dur'ee de repos 'egale a` Drep :
Chauffeur[i,0] := Drep.
- mettre a` z'ero leurs dur'ees de service cumul'ees :
Chauffeur[i,2] := 0.
c) Pour la file on incr'emente la dur'ee de s'ejour des clients
dans la file d'une unit'e de temps : Etatfile[i,1] := Etatfile[i,1] + 1;
4) Générer D poissonnienne : Avec l'algorithme
5.1, on génère une demande poissonnienne D et la mettre en fin du
tableau Etafile avec un temps de séjour égale a` 0.
5) Calculer les disponibilités :
· en camions NbrcD =
|
Nbrc--1 >2
i=0
|
I[Camion[i]=0].
|
· en chauffeurs NbrchD =
|
Nbrch--1 >2
i=0
|
I[Chauffeur[i,0]=0 et Chauffeur[i,1]=0].
|
|
Long Etatfile--1
· nombre de clients dans la file Nbrf =
|
|
Etafile[i, 0].
|
i=0
· calculer le nombre de clients a` servir S
:=min(NbrcD,NbrchD,Nbrf).
6) Servir les clients : Pour i allant de 1 a` S, exécuter
les étapes suivantes :
· générer DS exponentielle : Avec
l'algorithme 5.3, on génère une durée de service
exponentielle DS.
· attribuer DS au premier camion disponible (Camion[i]=0) :
Camion[i] :=DS.
· attribuer DS au premier chauffeur disponible
(Chauffeur[i,0]=0 et Chauffeur[i,1]=0) : Chauffeur[i,1] :=DS.
· actualiser la file :
- si Etatfile[0,0]=0 alors pour i allant de 0 a`
long(Etatfile)-1 faire Etatfile[i] :=Etatfile[i+1].
- on soustrait un client de la file : Etatfile[0,0]
:=Etatfile[0,0]-1.
· actualiser le cumul du temps dans la file : Ctf
:=Ctf+Etafile[0,1].
· actualiser le cumul du temps dans le système : Cts
:=Cts+Etafile[0,1]+DS.
· actualiser le nombre de clients servis : NbrS
:=NbrS+1.
7) Cumuls des caractéristiques : Actualisation des cumuls
suivants :
· CNf :=CNf+Nbrf-S.
· CNs :=CNs+Nbrc-NbrcD+Nbrf.
· CNbrcI :=CNbrcI+NbrcD-S.
· CNbrchI :=CNbrchI+NbrchD-S.
8) Sortie des caractéristiques : En utilisant les cumuls
calculés, on aura les paramètres caractéristiques de notre
simulateur :
V Tf :=CTf/NbrS.
V Ts :=CTs/NbrS.
V Nf :=CNf/T.
V Ns :=CNs/T.
V NbrcI :=CNbrcI/T.
V NbrchI :=CNbrchI/T.
|