Vous êtes sur la page 1sur 16

Rapport d’exposée

Simulation
de la Gestion de stocks et file
d’attente

Master spécialisé :

Gestion informatisée des entreprises

Réalisée par :
AMAJOUD Sarah Encadré par:
BOUGATA Loubna 1
Prof. El MEROUANI Mohamed
BOUSOUF Kamar
KERROUDI Mariam
Introduction

La simulation repose sur l’exploitation d’un ensemble de modèles et


méthodes permettant d’approcher, d’imiter, de simuler le comportement d’un
système physique réel (Law et Kelton, 1982). Shannon (Shannon, 1998)
considère que la simulation est à un modèle dynamique ce que l’expérimentation
est à un système réel. Dans cette perspective où le modèle représente une
certaine forme de compréhension d’un système de référence, la simulation est un
ensemble de tests grâce auxquels il est possible pour un scientifique de raffiner
cette compréhension et d’en tirer des connaissances nouvelles.

D’un point de vue plus informatique, Treuil et al. (Treuil, 2008)


définissent la simulation comme « l’activité au cours de laquelle, selon un
protocole et avec un objectif précis, on utilise un simulateur pour faire évoluer
les entrées d’un modèle dynamique, l’exécuter, et en recueillir les sorties. Tout
modèle écrit en respectant le métamodèle associé au simulateur et comportant
au moins un paramètre d’entrée peut se prêter à ce processus de simulation ».
Dans cet exposé on va essayer d’adopter cette définition ; afin de structurer
notre solution, qui porte sur deux exemples « la gestion du stock » et « fil
d’attente ».

2
I. Introduction à la simulation
Définition de la Simulation : méthode de mesure et d'étude consistant à remplacer un
phénomène, un système par un modèle plus simple mais ayant un comportement analogue
(Larousse). Le système ou phénomène analysé peut être schématisé sous forme d'un modèle
mécanique, électronique ou logico-mathématique. Nous nous intéresserons ici uniquement à
la représentation du système sous la forme d'un modèle informatisable.
L'objectif d'un modèle de simulation peut être simplement descriptif : étudier le
comportement d'un système sous différentes hypothèses d'évolution de l'environnement, ou
aussi normatif (décisionnel): en simulant plusieurs décisions envisagées choisir la meilleure
ou la moins mauvaise.

1. Typologie des modèles de simulation


Une première segmentation possible des modèles de simulation peut se faire en fonction du
type des connaissances que l'on a sur le système et son environnement. Si cette connaissance
est certaine, on parlera de simulation déterministe; s'il est possible (en fonction des
expériences passées ou de l'expérience) de probabilisé l'apparition de différents états, on
parlera alors de simulation probabiliste.
• La simulation déterministe : est fréquemment utilisée pour la création de scénarii.
L'utilisateur teste ainsi les conséquences de diverses hypothèses sur l'évolution du
système et de son environnement (cf. les exercices d'introduction à Excel).
La dynamique industrielle, inventée par Forrester, est un autre exemple de modèle de
simulation déterministe; elle s'intéresse essentiellement aux systèmes cybernétiques,
c'est-à dire aux systèmes avec boucle de feed-back.
La boucle de feed-back envoie au "décideur" des informations sur le système et son
environnement, qui lui permettent de modifier de façon automatique son action à
chaque instant. Par exemple un thermostat capte la température ambiante, ce qui lui
permet de régler le chauffage en fonction d'un objectif; une usine peut modifier sa

3
production en fonction de la demande constatée sur le marché et du niveau de ses
stocks.
• La simulation probabiliste : Dans ce cas, les événements qui apparaissent lors de
l'évolution du système ne sont pas connus avec certitude, mais on est capable de
probabilisé cette apparition: par exemple, dans une étude de files d'attente à un
guichet, on peut donner la loi de probabilité du temps séparant deux arrivées et
éventuellement aussi la loi de probabilité du temps de service.

Propriétés des modèles de simulation probabiliste


Un modèle de simulation probabiliste permet d’étudier le comportement temporel d’un
système dont certains paramètres structurels sont donnés sous forme de loi de probabilité. Les
caractéristiques des modèles de simulation probabiliste sont les suivantes :
- Environnement et le système : définis sur une période (jour, mois, année,..) divisée en
sous périodes, le nombre de sous périodes peut être fixe (heure, jour,..)ou non (arrivée
d’un client, fin de service,..) ; voir plus loin la différence entre simulation événement et
simulation temps.
- Les décisions sont en nombre fini, ce nombre est souvent assez faible.
- Les paramètres structurels sont pour certains définis par des lois de probabilité (arrivées
de clients à une caisse, temps de service, demande..), d’autres sont déterministes (coûts
de production, coût d’un spot).
- Les variables d’état sont des variables aléatoires, c’est à dire que leurs valeurs suivent des
lois de probabilités, qu’il n’est généralement pas possible de (ou que l’on ne sait pas)
calculer analytiquement. Ces variables d’états sont définies soit au niveau de la sous-
période (attente du dernier client arrivé, stock en début de sous période), puis sont
éventuellement agrégées au niveau de la période.
- Les équations de fonctionnement sont les équations définissant le passage de la valeur
d’une d’état d’une sous période à la sous période suivante.
- Le modèle d’évaluation porte donc sur des variables aléatoires (agrégation sur la période
des variables d’état), plus précisément sur des paramètres de ces variables (moyenne,
écart type, fractile).Il est donc nécessaire d’approcher la distribution des variables
aléatoires de façon empirique en itérant le modèle d’une période.

4
II. Simulation d’un système de file d’attente à deux serveurs
(Banks et al.)
Cet exemple va illustrer la procédure de simulation d’un système de file d’attente à
deux serveurs. On considère un service de restauration où deux serveurs au volant
enregistrent puis satisfont les commandes des automobilistes.

• Les voitures arrivent selon les données résumées au tableau 1.


• Le serveur I est plus rapide que le serveur II.
• Les distributions de leurs temps de service sont représentées par les tableaux 2 et 3

Distribution des inters arrivés :

nombre
temps inter probabilité
probabilité aléatoire
arrivées (minutes) cumulative
assigné
1 0,25 0,25 01---25
2 0,4 0,65 26---65
3 0,2 0,85 66---85
4 0,15 1 86---00
Distribution des temps de services du serveur I :

nombre
temps de services probabilité
probabilité aléatoire
(minutes) cumulative
assigné
2 0,30 0,30 01---30
3 0,28 0,58 31---58
4 0,25 0,83 59---83
5 0,17 1,00 84---00
Distribution des temps de services du serveur II :

nombre
temps der serivces probabilité
probabilité aléatoire
(minutes) cumulative
assigné
3 0,35 0,35 01---35
4 0,25 0,60 35---60
5 0,20 0,80 61---80
6 0,20 1,00 81---100

La règle d’allocation des serveurs aux clients stipule que si les deux serveurs sont libres au
même moment, c’est le serveur I qui a la priorité pour servir un nouveau client arrivant.

5
Maintenant, le problème est de voir si l’organisation actuelle fonctionne bien. Pour
estimer les mesures de performance, une simulation d’1 heure d’opération est effectuée.
Les évènements liés à ce système sont :

• Arrivée d’un client,


• Un client commence à être desservi par le serveur I,
• Un client finit d’être desservi par le serveur I,
• Un client commence à être desservi par le serveur II,
• Un client finit d’être desservi par le serveur II.

6
Les différentes étapes de la simulation sont données par le tableau suivant :

temps temps temps


temps temps de temps temps temps
de fin de début de fin
N des des serveur serveur début de de de d'attente
de de de
clients inter I II service service service dans la
service service service
arrivées (I) (I) (2) file
(I) (2) (2)
1 0 9 7 0 5 5 0
2 2 2 1 2 3 5 0
3 4 4 3 6 3 9 0
4 4 9 5 10 5 15 0
5 2 5 4 12 6 18 0
6 2 9 7 15 3 18 1
7 3 4 3 18 2 20 1
8 3 7 9 20 4 24 0
9 3 9 6 23 4 27 0
10 1 2 7 24 3 27 0
11 2 1 7 27 3 30 1
12 2 7 3 28 4 32 0
13 2 4 7 30 5 35 0
14 1 6 8 32 3 35 1
15 2 12 13 35 4 39 2
16 2 3 1 35 4 39 0
17 2 4 3 39 4 43 2
18 3 5 9 40 5 45 0
19 2 14 9 43 2 45 1
20 2 6 7 45 4 49 1
21 4 18 8 48 3 52 0
22 1 2 1 49 3 52 0
23 2 3 6 51 5 56 0
24 3 15 9 54 3 57 0
25 6 1 7 56 6 62 1
26 9 4 4 59 3 62 0
somme 56 530 43 371 11

7
L’analyse du tableau de simulation donne les résultats suivants :

1. Sur la période de 62 minutes, le serveur I était occupé 90% du temps (56/62=90%),

          56
é
   é    90%
é    62

2. Le serveur II était occupé seulement 69%. La règle de service donne une priorité au
serveur I,

          43
é
   é    69%
é    62

3. 9 des 26 arrivées de clients (35%) observent une attente en file. Le temps moyen
d’attente pour tous les clients est de 0.42 minutes, soit 25 secondes,

   ′     11


    ′     0,42 
     26

4. Les 9 clients en question ont attendu en moyenne 1.22 minutes (11/9=1.22), ce


qui est raisonnable,

   ′    


    ′      "    
    "   
11
  1,22 
9

5. temps moyen entre les arrivées est 2.36 minutes, il est déterminé ainsi :

8
         é 59
        é  
   é # 1 25
 2,36 

6. Le temps moyen de service est déterminé ainsi :

$%&&' (' )%*$ +'$ )'&,$ (' $'-./0' 45678


          3,80min
1%&2-' )%)3+ (' 0+/'1) 95

7. En résumé, ce système semble équilibré. Un seul serveur ne peut pas


satisfaire les arrivées de clients, et allouer trois serveurs est probablement
excessif. Ajouter un serveur va réduire sûrement le temps d’attente à presque
zéro. Cependant, le coût d’attente est généralement très grand, ce qui écarte la
possibilité d’un serveur supplémentaire.

III. Gestion de stocks


On considère une entreprise distribuant un produit A dont la demande mensuelle suit une
loi de probabilité uniforme sur l'intervalle de nombres entiers [400;1000] . Chaque mois
l'entreprise envisage de commander 700 unités (quantité appelée Commande) qui seront
disponibles le mois suivant. Le responsable commercial aimerait estimer les ruptures de
stocks sur une année.

1. Construction d'un modèle annuel


Le système et l’environnement que nous étudions est constitué du magasin, des
fournisseurs et des clients sur une année, divisée en mois puisque les commandes sont
mensualisées. La décision que nous avons à prendre est le niveau de commande (actuellement
700). Les paramètres structurels sont ici simplement la demande qui est probabilisée, on
pourrait aussi prendre en compte par exemple un coût unitaire de stockage mensuel moyen, un
coût unitaire de rupture.

9
Les variables d’état sont les éléments qui permettent de suivre mensuellement la
satisfaction de la demande, c’est à dire le stock initial, le stock final, le nombre de rupture et
le pourcentage de demandes non satisfaites.
Les équations de fonctionnement permettent de calculer au cours du temps l’évolution de ces
variables d’état.
Les conséquences retenues par le directeur sont les ruptures, c’est à dire le nombre total de
ruptures annuelles et peut-être aussi le pourcentage annuel de demandes non satisfaite.
La mise en équation est la suivante.
Nous allons étudier dans un premier temps le système sur une année soit une période de 12
mois, puisque la demande est mensuelle.
- Simulation de la demande sur une année. Chaque mois la demande sera donnée par la
formule : demande(m)=400+ENT(601*ALEA())
- Calcul des stocks initiaux et finaux du mois(m) :
Stock_initial(m)=Stock_final(m-1)+Commande
Stock_final(m)=Max(Stock_initial(m)-demande(m);0)
- Calcul de la quantité en rupture chaque mois :
rupture(m)=Max(demande(m)-Stock_initial(m);0)
%rupture(m)=rupture(m)/demande(m).

On peut alors écrire le modèle sous Excel, sur une feuille nommée Modèle. Les formules
entrées sont les suivantes :
Exemple de simulation sur une année :

10
Il nous reste à agréger sur l’année les variables d’état qui vont nous servir de conséquence, par
exemple ici le nombre total de rupture sur l’année, ou le pourcentage annuel de rupture :

Toutefois, comme il a été dit précédemment, à chaque recalcule de la feuille de calcul, les
valeurs changent, puisque l'aléa est recalculé. Pour obtenir des résultats utilisables pour la
décision, il nous faut donc obtenir des renseignements sur la loi de probabilité des ruptures :
par exemple la moyenne des ruptures par an, la fréquence des ruptures supérieures à 5% etc..
2. Itération du calcul
Il nous faut répéter
ter la simulation annuelle un certain nombre de fois, soit en utilisant des
tables pour stocker les résultats, soit en utilisant le mode itératif du tableur soit en
programmant une macro.
Utilisation des itérations
Indiquons par exemple le calcul de la moyenne
moy des ruptures annuelles.
Nous avons besoin de quatre cellules : une cellule drapeau, qui indiquera si les itérations sont
commencées, une cellule pour la somme des ruptures obtenues entre l'itération 1 et l'itération
N, une cellule contenant la moyenne des ruptures et enfin une cellule contenant le numéro de
l'itération en cours.

11
Pour calculer la somme des ruptures entre l'itération 1 et N, nous utiliserons la formule :
somme_ruptures(N)=somme_ruptures(N-1)+ ruptures(N)
soit, en ne tenant pas compte des indices,: somme_ruptures=somme_ruptures+ruptures
la cellule somme_ruptures fait référence à elle-même, il ne faut donc pas oublier de
l'initialiser à 0, avant que les itérations ne commencent. La formule contenue dans cette
cellule sera alors : somme_ruptures=si(drapeau=0;0;somme_ruptures+ruptures).
D'où la nécessité d'un indicateur de début d'itération, contenu dans la cellule drapeau.
De la même façon, pour obtenir le numéro de l'itération en cours, on écrit la formule :
itération_en_cours=si(drapeau=0;0;itération_en_cours+1).

Enfin la moyenne des ruptures sera donnée pour éviter le message d'erreur #DIV/0 (à
l'initialisation) par la formule :
moyenne_ruptures=si(drapeau=0;0;somme_ruptures/itération_en_cours).
Pour faire fonctionner le modèle, on choisit le mode de calcul manuel et le nombre d'itérations
que l'on désire effectuer. On initialise ensuite les valeurs en mettant 0 dans la cellule drapeau,
puis en appuyant sur F9. Pour effectuer les itérations on met 1 dans la cellule drapeau, puis on
appuiera sur F9.

On obtient alors un tableau semblable à:

12
Remarque importante : lors de l'utilisation d'itération dans Excel il faut faire très attention à
l'ordre de recalcule de la feuille, de façon à ce que les cellules soient bien mises à jour avec
les nouvelle valeurs de chaque itération. Ceci rend délicat l'utilisation de cette méthode si l'on
ne maîtrise pas bien l'ordre de recalcule des cellules.
3. Utilisation d'une macro
Tout d'abord il nous faut créer une feuille macro, pour cela nous passons dans le menu
Macros... du bandeau de l’onglet Développeur.
Nous obtenons alors une boite de dialogue :

13
Après avoir tapé un nouveau nom de macro le bouton Créer est actif, il suffit de cliquer sur ce
bouton pour se retrouver dans l’environnement de Visual Basic (VB) adapté à Excel.
L’utilisateur tape alors le corps de la procédure (Subroutine) là où se trouve le curseur :

Les instructions suivantes mettent dans une cellule nommée mamoyenne la moyenne des
ruptures de stocks obtenue pour un nombre d’itérations placé dans la cellule nommée iter. La
somme des ruptures d’une simulation annuelle est stockée dans la cellule nommée rupture

Sub itération()
REM TOTAL EST UNE VARIABLE LOCALE CONTENANT LA SOMME DES
RUPTURES
Dim total As Long
total = 0
Application.Calculation = xlCalculationManual
For i = 1 To Range("iter").Value
Application.Calculate
total = total + Range("rupture").Value
Next i
Range("mamoyenne").Value = total / Range("iter").Value
Application.Calculation = xlCalculationAutomatic
End Sub

Quelques remarques sur ce programme :


Les instructions commençant par Rem sont des commentaires non exécutés. Le langage est
un langage "objet", ici les objets que nous manipulons sont des zones de cellules.
Range("iter") désigne la zone de cellules ayant pour nom iter. Dans notre exemple cette zone
ne contient qu’une seule cellule, nous pouvons alors avoir accès à sa valeur par la propriété
Value (propriété en lecture, écriture).

Remarque : Si l’on voulait conserver les résultats de toutes les années simulées pour obtenir
14
différentes statistiques, il suffirait par exemple de définir une zone suffisamment grande
nommée résultat et d’utiliser la procédure suivante :

Sub iteration2()
Rem conserve dans résultat toutes les ruptures
Application.Calculation = xlCalculationManual
For i = 1 To Range("iter").Value
Application.Calculate
Range("résultat").Cells(i, 1).Value = i
Range("résultat").Cells(i, 2).Value = Range("rupture").Value
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

Ici Range("résultat") est une zone contenant deux colonnes et plusieurs lignes pour accéder à
une cellule particulière, on utilise la propriété Cells(i,j) qui désigne la cellule se trouvant à la
ième ligne et jème colonne à partir du coin supérieur gauche de la zone.
Il est aussi possible, après avoir calculé certaines caractéristiques de l’échantillon obtenu (la
moyenne par exemple) précédemment, d’écrire une macro permettant de tester différents
niveaux de commande. La cellule contenant la moyenne est appelle mamoyenne, comme dans
le premier cas. En pratique il serait judicieux de garder aussi un indicateur sur le stock moyen,
car en augmentant le niveau de commandes on diminue les ruptures mais on gonfle les stocks
Sans détailler les instructions, nous donnons ici la procédure permettant d’obtenir ce résultat,
il est laissé au lecteur le soin de modifier la procédure pour stocker aussi le niveau moyen de
stocks :

Sub compare()
Const commande_min = 550, commande_max = 850, pas = 50
Rem initialisation de la commande
Range("Commande").Value = commande_min
For i = 1 To (commande_max - commande_min) / pas + 1
Rem on appelle l'iteration
itération
Rem On stocke les resultats
Range("Titre").Cells(1, i) = Range("Commande")
Range("Rupmoy").Cells(1, i) = Range("mamoyenne")
Rem on peut se passer de préciser .valeur
Rem augmenter le niveau de commande
Range("Commande") = Range("Commande") + pas
Next i
End Sub

15
Conclusion

Il est assez simple avec Excel de faire de la simulation probabiliste, la plupart du


temps l’utilisation des tables est très suffisante, pour les modèles plus important
en taille et où les recalculs sont longs, les itérations peuvent être utilisées, si l’on
ne veut pas « programmer ».
Les macros offrent bien sur plus de souplesse et, pour qui veut bien investir dans
le langage de programmation, permet de construire des modèles plus
professionnels.
Signalons enfin qu’il existe aussi des addins permettant de réaliser des
simulations sans toujours bien comprendre ce qui est fait, ces addins permettent
le tirage au hasard et les itérations sans que l’utilisateur n’interviennent
autrement que par un choix de menu.

16

Vous aimerez peut-être aussi