Professional Documents
Culture Documents
Niveau : TS.
Anne : 2010.
Introduction :
La Recherche oprationnelle est une science dont les fondements de bases et les
premires applications datent de la deuxime guerre mondiale. Elle traite des
problmes rsolus mathmatiquement lpoque afin de rpondre certaines
exigences des responsables militaires. A la fin de la guerre les scientifiques se sont
retrouv avec une armada de mthodes qui permettent de rsoudre certains problmes,
cest partir de l quils ont pens dvelopper cet acquis mais cette fois ci pour
lexploiter dans la vie quotidienne,
scientifique.
La recherche oprationnelle en tant que science se partage en plusieurs filires suivant
le type dapplications, ainsi elle est compose de : la Thorie des graphes,
loptimisation dans les rseaux, la programmation linaire, la programmation non
linaire, loptimisation combinatoire, La Modlisation, la simulation et laide la
dcision monocritre et multicritre.
Dans ce cours nous allons essayer de prsenter quelques domaines de la recherche
oprationnelle, nous commencerons dans un premier temps par la prsentation des
dfinitions de bases de la thorie des graphes, afin de vous familiariser avec le Jargon
de ce domaine, ensuite nous entamerons la partie optimisation dans les rseaux dans
laquelle on verra en dtail les problmes de cheminements leurs applications et leurs
rsolutions. Ensuite on passera aux principes de la programmation dynamique quon
expliquera avec les mthodes de recherche des plus courts chemins dans les graphes.
La gestion scientifique des stocks est un domaine trs apprci en recherche
oprationnelle, de la nous prsenterons les dfinitions de bases ainsi que les principes
dominants.
Lhistoire veut que Lonard Euler, en visite dans cette ville, ait eu rsoudre le
problme qui proccupait fortement ses habitants : Est-il possible de trouver un
chemin qui emprunte une fois et une seule chacun des sept ponts de la ville et revenir
au point de dpart? Pour cela, lide est de commencer par traduire lnonc du
problme par un schma :
Chaque lieu de la ville est repr par sa position gographique : N pour le nord de la
ville ; S pour le sud de la ville, O pour louest et I pour le. Chaque pont sera alors
reprsent par un trait reliant ces lieux entre eux.
Cette modlisation sappelle un graphe : Quest-ce quun graphe ? Cest un
ensemble de sommets et de liens entre 2 sommets que lon appelle artes.
La traduction du problme de dpart en termes de proprits du graphe est alors :
Peut-on circuler sur le graphe partir dun sommet en empruntant une fois et une
seule chaque arte ? . Mais la thorie des graphes a rellement pris son dpart
pendant la seconde guerre mondiale, plus prcisment en Angleterre en 1940, sous le
nom d Operation Research . Ltat Major alli, qui devait accrotre lefficacit de
ses oprations, en confia le travail au physicien Blackett. Il sagissait de rechercher la
meilleure rotation des quipages dans les avions1, limplantation optimale des radars,
plus tard lorganisation des convois transatlantiques
Dfinitions de base.
1) Gnralits sur les graphes
Dfinition1:
Un Graphe est un ensemble de points (appels Sommets du graphe) ventuellement
relis par un ou plusieurs segment(s) appels Artes.
Dfinition2: Un modle mathmatique est une traduction de la ralit pour pouvoir lui
appliquer les outils, les techniques et les thories mathmatiques, puis gnralement, en sens
inverse, la traduction des rsultats mathmatiques obtenus en prdictions ou oprations dans
le monde rel.
Ainsi la thorie des graphes sintresse aux modles mathmatiques dfinit par des graphes
selon la dfinition1.
3
Exemple :
On sintresse un tournoi de football. Supposant que nous voulons organiser un tournoi de
football avec 05 quipes. Nous cherchons voir quel est le nombre de matchs de football
programmer ?
Dans un premier temps en commence par la modlisation mathmatiques et la on suppose que
les sommets reprsentent les diffrentes quipes et les artes reprsentent les rencontres de
football. Donc il existe un arte relient deux sommets (x,y)X2.
E5
E2
E4
E3
G=(X,E)
Degr dun sommet : On appel degr dun sommet x, dans un graphe, G not d(x), le nombre
dartes de G ayant x comme extrmit. Ou bien on dit que cest le nombre dartes incidentes
au sommet x.
Dans le graphe prcdant tous les sommets ont le mme degr est gal 4.
Remarque : Pour un graphe G dordre n ; le degr dun sommet est un entier compris entre 0
et n-1.
Graphe rgulier : Un graphe G est dit rgulier de degr r si tous les sommets sont de degr r.
Le graphe prcdant est rgulier de degr 5.
Thorme1 : Dans un graphe quelconque on toujours la somme des degrs est gale deux
fois le nombre dartes m :
d(x)=2m xX.
Proposition1 : Dans un graphe le nombre de sommets de degr impair est toujours pair.
Proposition 2 : Soit G=(X,E) un graphe dordre n >=2. Alors au moins deux sommets
diffrents qui ont le mme degr.
Graphe complet : Un graphe G est dit complet si et seulement si tous les sommets sont relis
deux deux.
Une boucle : est une arte dont les deux extrmits concident.
Artes parallles : Soit G un graphe. On appel artes parallle des artes diffrentes de G
ayant les mmes extrmits.
Multi graphe : est un graphe admettant des artes parallles.
Graphe simple : Soit G=(X,E) un graphe. G est simple sil nadmet pas de boucles et darcs
parallles.
E1
E1
E5
E5
E2
E4
E2
E4
E3
E3
Chaine:
Une chaine est une suite fini de sommets et dartes Ch=[X0,e0,X1,e1X2,.., Xm-1,em-1,Xm].
Tel que : X0 et Xm reprsentent les extrmits de la chaine Ch, et m sa longueur l(ch)=m.
Une chaine simple est une chaine dont toutes les artes sont distinctes.
Une chaine lmentaire est une chaine dont tous les sommets sont distincts.
Exemple :
x1
e4
e1
x5
x2
e3
e2
x4
x3
G=(X,E)
Exemples :
Graphe partiel de G
Sous-graphe de G
Sous-graphe partiel de G
X'=X
E'={e1, e4, e5}
Une clique de G
Un stable de G
X'={x1,x2,x3}
E'={e1, e2, e3}
X'={x1,x4,x5}
E'={}
Le graphe G
Soit G=(X, E)
X={x1, x2, x3, x4, x5}
E={e1=(x1,x2),
e2=(x2,x3), e3=(x1,x3),
e4=(x3,x4), e5=(x3,x5)}
Graphe orient : En donnant un sens aux artes d'un graphe, on obtient un graphe orient.
Dans ce cas lensemble des sommets X reste le mme, mais lensemble des artes E sera
appel lensemble des arcs U qui est dfini par des paires ordonnes de sommets, car
lorientation des arcs est importante. Ainsi dans le cas non orient larte e1=[x1 x2] est la
mme que larte e1=[x2 x1], par contre, dans le cas orient larc u1=(x1,x2) est diffrent de
larc u2=(x2,x1).
Exemple :
x1
u5
u1
x5
x2
u3
x4
x3
G=(X,U)
u2
Chemin : Dans un graphe orient, un chemin d'origine x et d'extrmit y est dfini par une
suite finie d'arcs conscutifs emprunts dans le bon sens, reliant x y. La notion
correspondante dans les graphes non orients est celle de chane.
Un chemin lmentaire est un chemin ne passant pas deux fois par un mme sommet, c'est-dire dont tous les sommets sont distincts.
Un chemin simple est un chemin ne passant pas deux fois par un mme arc, c'est--dire dont
tous les arcs sont distincts.
La longueur d'un chemin est le nombre d'arcs le constituant, ou bien, dans le cas d'un graphe
pondr, la somme des poids des artes.
Circuit : Un circuit est un chemin dont les deux extrmits sont identiques. Si le chemin est
lmentaire, c'est--dire ne passe pas deux fois par un mme sommet, on parle de circuit
lmentaire. Dans un circuit lmentaire, le degr des sommets est deux. Dans les graphes
pondrs, le poids d'un circuit est la somme des poids des arcs qu'il contient. Si cette somme
est ngative, on parle de circuit absorbant.
Dfinition : Un graphe orient est dit fortement connexe ssi il ralise la relation R suivante :
pour tout couple de sommets (xi,xj)X2 , un chemin permettant de joindre xi xj et un autre
chemin permettant de joindre xj xi dans G.
Nous pouvons dmontrer facilement que la relation R est une relation dquivalence, ainsi elle
admet des classes dquivalences. Ces classes sont appeles des composantes fortement
connexes.
Remarque :
1/On ne parle pas de forte connexit dans le cas non orient.
2/ il existe des algorithmes permettant de vrifier si un graphe est fortement connexe ou pas.
3/ Un graphe G est fortement connexe sil admet une seule composante fortement connexe.
En dautres termes un graphe est fortement connexe si il admet un circuit passant par tous les
sommets de G.
Exemple :
G1 nest pas fortement connexe car il existe un chemin entre x4 et x3 par contre il nexiste pas
de chemin reliant x3 et x4.
La composante {x1, x2, x3, x5} est une composante fortement connexe.
x1
x5
x2
x4
x3
G1=(X,U
Graphe rduit :
G : graphe orient admettant p composantes fortementconnexes : C1, C2, , Cp
On dfinit le graphe rduit de G (not GR) par :
GR=(XR,UR) avec : XR={C1,C2,,Cp} et (Ci ,Cj) UR si Il existe au moins un arc dans G
ayant son extrmit initiale dans la composante fortement connexe Ci et son extrmit
terminale dans la composante fortement connexe Cj.
X1
X2
M= X
3
X4
X5
X1
X2
X3 X4 X5
0
x1
x5
x2
x4
x3
Dictionnaire des successeurs: Dans cette reprsentation, on dfinit le graphe par le dtail des
successeurs de chaque sommet.
Dictionnaire des prdcesseurs: Dans cette reprsentation, on dfinit le graphe par le dtail
des prdcesseurs de chaque sommet.
10
Chemin: Un chemin Ch est une suite darcs adjacents parcouru dans le mme sens. La
longueur de ce chemin l(Ch) peut tre dfinit de deux manires diffrentes:
1/ La longueur en termes darcs, et la on donne le nombre darcs constituants ce
chemin. l(Ch)=nombre darcs de ch.
2/ La longueur en termes de pondrations, et la on donne la somme des pondrations
des arcs constituants ce chemin.l(Ch)=
Circuit : Un circuit est un chemin simple dont les deux extrmits concident. Ainsi on dfini
la longueur dun circuit de la mme manire, par la longueur en terme darcs et la longueur en
termes de pondrations.
Circuit absorbant : Un circuit C est dit absorbant ssi,
Plus court chemin : On appel plus court chemin dans un rseau R, le chemin reliant S P
dans R, ayant la somme des pondrations minimales de tous les chemins reliant S P dans R.
Le Problme du plus court chemin : Le problme du plus court chemin est un problme
ancien, prsent dans de nombreux domaines (trafics autoroutiers, ferroviaires, maritimes,
investissement et gestion des stocks, optimisation dun rseau, intelligence artificielle, etc).
11
Le problme est simple : Comment, en partant dun point, arriver un autre point en faisant le
moins de chemin possible ?
Pour vous aider, prenons un exemple : Une voiture partant de Paris souhaite se rendre
Toulouse. Mais lautoroute entre Paris et Toulouse est bouche. Le conducteur aimerait savoir
si, en passant par Bordeaux, il mettra plus ou moins de temps que pour aller Toulouse par
lautoroute. Sachant que le conducteur mettra 7 heures en passant par lautoroute, et quil
mettra 5 heures pour aller Bordeaux, et 3 heures pour relier Bordeaux Toulouse. Le graphe
ci-dessous rsume le problme.
Chaque arc possde une pondration reprsentant le temps ncessaire de dplacement dun
sommet vers un autre. On dit que ce graphe est un graphe orient , car les arcs ont un sens.
Pour dterminer le plus court chemin entre Paris et Toulouse, il suffit dadditionner les
longueurs darcs des diffrents passages pour aller de Paris Toulouse, et de les comparer.
Ici, on a l (P => T) = 7 et l (P => B) + l (B => T) = 5 + 3 = 8
On peut donc voir que lautomobiliste ferait mieux de passer par lautoroute Paris-Toulouse,
plutt que de faire un dtour par Bordeaux, o il perdrait une heure !
Existence un plus court chemin : Soit R=(X,U,d) un rseau, on dit que R admet un plus court
chemin, si et seulement si, R nadmet pas de circuit absorbant.
Exemple :
12
Dans le graphe ci-dessous, le plus court chemin nexiste pas, car ce graphe admet un circuit
absorbant (3,4,5,6,3). La somme des pondrations de ce circuit est gale (-3), chaque fois
quand fait un passage sur ce circuit absorbant la valeur du plus court chemin diminue jusqua
-.
1
4
6
-8
-2
5
Il existe plusieurs algorithmes de recherche de plus cours chemin, on peut citer titre
dexemple : lalgorithme de Bellmann, lalgorithme de Disjktra, lalgorithme de BellmannFordetc.
Algorithmes de recherche de plus court chemin :
1/ Algorithme de Bellman :
Lalgorithme de Bellman sapplique sur les
pondrations quelconques. Ainsi nous devons assurer linexistence de circuit dans le graphe
en question, pour cela nous dcrivons dans ce qui suit un algorithme simple permettant de
vrifier si un graphe G est sans circuit ou non. Lalgorithme sappel algorithme de mise
niveau.
1.1.
13
de G donc le graphe est sans circuit, par contre, si on bloque quelque part dans G, cela
veut dire que le graphe contient un circuit.
Algorithme mise niveau
1- Soit un graphe quelconque G=(X,U), et k=1. V=X.
2- Choisir tous les sommets x nayant aucun prdcesseurs (c d dg-(x)=0).
Si ses sommets existent alors les mettre
dans le niveau k, N(k)=N(k){x} et V=V{x}.
Si non Si V= alors le graphe est sans circuit
Si non le graphe contient un circuit.
3- Supprimer tous les arcs sortants de tous les sommets du niveau k. Mettre k=k+1 et
aller (2).
1
Exemple1:
Soit le graphe suivant, contient il un circuit ?
Appliquons lalgorithme, nous remarquons que les deux sommets 1 et 8 nont pas de
prdcesseurs, car dg-(1)=0 et dg-(8)=0. Ainsi : N(1)={1,8}.
On va supprimer tous les arcs sortant de 1 et 8, ont aura ainsi le graphe suivant :
A cette tape nous constatons quil nya que les sommets 4,5 et 6 ayants dg-(4)=0, dg(5)=0 et dg-(6)=0. Ainsi on aura : N(2)={4,5,6}, de la mme manire on va supprimer les
arcs sortant de 4,5 et 6, on aura le graphe suivant :
1
14
De la mme manire on aura N(4)=3 et N(5)=7. Puis que nous avons russi classer tous
les sommets de G, alors G nadmet pas de circuit. Et le graphe mis niveau aura lallure
suivante:
4
6
1
2
8
5
Niveau 1
Niveau 2
Niveau 3
Niveau 4
Exemple2 :
Soit le graphe suivant, admet il un circuit ?
1
15
Niveau 5
Et le V={2,3,4,5,6,7} et non vide et il nexiste aucun sommet x avec les dg-(x)=0, donc ce
graphe contient un circuit.
i=1..p}
lensemble des
prdcesseurs direct de x. Une seule condition doit tre respecte cest que (yi) sont dj
calcul i, i=1..p. De la nous calculons (x) par la formule suivante :
(x)=min((yi)+d(yi,x))
Tel que : d(yi,x) reprsente la pondration de larc (yi,x).
16
i, i=1..p
Algorithme
Soit R un rseau ayant une source S et un puit P.
1. Initialiser (S)=0 et (x)= + xX. T=.
2. Choisir les sommets x ayant seulement S pour
prdcesseurs, et calculer (x)= (S)+d(S,x). T=T{x}.
3. Tantque (XT)
Faire
Choisir un sommet Z de X ayant pour Wi prdcesseurs,
tel que (Wi) sont dj calcul.
(Z)=min((Wi)+d(Wi,Z) pour tous Wi prdcesseurs de Z.
T=T{Z}.
Fait.
Fin de lalgorithme
Exemple :
On considre le graphe orient G = (X, U) ci-dessous pondr par des longueurs
darcs. On cherche dterminer les plus courts chemins de a tout autre sommet.
17
On peut appliquer lalgorithme de Bellman parce que le graphe est sans circuit, ce quon peut
vrifier en effectuant la numrotation topologique (la mise niveau du graphe) qui a t fait
ci-dessous. Les numros topologiques sont encadrs.
Aprs avoir pos distance(a) = 0, on calcule les distances par numros topologiques croissants
en appliquant la formule :
distance(x) = MIN prdcesseurs de x (distance(y)+ longueur(y,x)) .
Les distances sont indiques en gras ct des sommets et les plus courts chemins sont
indiqus par les arcs en gras.
2. Algorithme de Dijsktra :
Lalgorithme de Dijkstra est un autre algorithme de recherche de distance et de plus court
chemin. Il est plus efficace que Bellman, mais ne fonctionne que dans le cas o toutes les
pondrations des arcs sont positives.
Principe :
On construit petit petit, partir de {S}, un ensemble M de sommets marqus. Pour tout
sommet marqu x, lestimation d(x) est gale la distance d(S,x).
A chaque tape, on slectionne un sommet non marqu y dont la distance estim d(y) est la
plus petite parmi tous les sommets non marqu. On marque alors y (on rajoute y M), puis on
met jour partir de y les distances estimes des successeurs non marqus de y.
18
Algorithme de Disjktra :
Initialisation de l'algorithme :
tape 1 : On affecte le poids 0 au sommet origine (S) et on attribue provisoirement un poids
aux autres sommets. Rpter les oprations suivantes tant que le sommet de sortie (P) n'est
pas affect d'un poids dfinitif.
tape 2 : Parmi les sommets dont le poids n'est pas dfinitivement fix, choisir le sommet x
de poids p minimal. Marquer dfinitivement ce sommet x affect du poids p(x).
tape 3 : Pour tous les sommets y qui ne sont pas dfinitivement marqus, adjacents au
dernier sommet fix x :
3.1 Calculer la somme som du poids de x et du poids de l'arte reliant x y.
3.2 Si la somme som est infrieure au poids provisoirement affect au sommet y,
affecter provisoirement y le nouveau poids som et indiquer entre parenthses le
sommet x pour se souvenir de sa provenance.
Quand le sommet P est dfinitivement marqu, le plus court chemin de S P s'obtient en
crivant de gauche droite le parcours en partant de la fin P.
Exemple :
Dans le graphe orient, pondr G = (X, U) ci-dessous par des longueurs darcs, utiliser
lalgorithme de Dijkstra pour dterminer une arborescence de plus cours chemins depuis le
sommet a jusqu tous les autres sommets.
On pourra utiliser un tableau pour indiquer les valeurs initiales des champs d (ou distance) et
pre (ou antrieur) puis, pour chaque tape, les actualisations de ces valeurs effectues par
lalgorithme; on indiquera aussi les pivots successifs.
Par manque de temps, on peut aussi indiquer la succession des pivots et ajouter, ct de
chaque sommet, les valeurs successives obtenues pour les champs d (ou dist) et pre (ou
ant); le graphe de cet exercice est un peu gros pour permettre cela. On surlignera les arcs
dune arborescence de plus courts chemins.
19
20
21
3. Algorithme de Ford-Bellamn
L'algorithme de Bellman-Ford (Bell-End-Ford) (Richard Bellman, Samuel End et Lester
Ford) est un algorithme de programmation dynamique qui permet de trouver des plus courts
chemins, depuis un sommet source donn, dans un graphe orient pondr. Contrairement
l'algorithme de Dijkstra, qui ne peut tre utilis que lorsque tous les arcs ont des poids positifs
ou nuls, l'algorithme de Bellman-Ford autorise la prsence de certains arcs de poids ngatif et
permet de dtecter l'existence d'un circuit absorbant, sil nen existe pas, lalgorithme donne
les plus courts chemins ainsi que leurs poids.
Les notations sont les suivantes : (v) contient le prdcesseur de v sur le chemin (NIL sil
ny en a pas), (u,v) est le poids du plus court chemin de u vers v ( sil nexiste pas), d[v]
est une variable qui est une borne suprieure du poids du plus court chemin de s vers v.
Algorthme Ford-Bellman
Step1: pour tout sommet xX faire
Step 2: d[x]= et [x]=NIL.
Step 3: d[S]=0
Step 4: pour i=1 |X|-1 faire
Step 5: pour tout arc (x,y)U faire
Step 6: si d[y]>d[x]+ w(x,y) alors
Step 7: d[y]=d[x] + w(x,y) ; [y]=x.
Step 8: pour tout arc (x,y)U faire // dtection des circuits ngatifs
Step 9: si d[y] > d[x] + w(x,y) alors retourner Faux
Step 10: retourner Vrai
Fin algorithme
22
Programmation dynamique
La programmation dynamique est une mthode doptimisation des systmes ou de leur
reprsentation mathmatique, dans laquelle on opre par phases ou squences. Le point de
dpart de cette mthode est le thorme dit Thorme doptimalit. Ce thorme, mis en
valeur, il ya quelques annes, par le mathmaticien amricain R. Bellman, est simple quil
parat presque trivial lorsquon la bien compris. Son importance et lefficacit des mthodes
doptimisation squentielles auxquelles il a donnes naissance saccentuent au fur et mesure
que lon saperoit que la vraie nature de nombreux problmes est squentielles c d, autorise
la dcomposition en phases, chacune ne dpendant que de ses voisine les plus proches et
souvent, dans le cas favorable, seulement de lantrieure ou la postrieure.
Sagissant de recherche oprationnelle, donc dune politique conomique optimale, Bellman
exprime, en bref, ceci : Toute politique optimale ne peut tre forme que de sous politiques
optimales.
La programmation est un outil gnral de rsolution de problmes. Toutefois, il ny pas de
rgle pour affirmer que la programmation dynamique peut ou ne peut tre utilise pour
rsoudre tel ou tel problme.
Le gros du travail, si on veut utiliser cette mthode, rside tout dabord dans lobtention de
lexpression rcursive de la solution en fonction de celle des sous-problmes (de taille plus
petite). Notons que dans les problmes doptimisation, cette manire dobtenir la solution
optimale partir des solutions optimales des sous problmes sappelle le principe doptimalit
de Bellman. Il est important de souligner que ce principe, bien que naturel, nest pas toujours
applicable.
Une fois cette expression obtenue, on analyse ce qui se passe dans une implantation rcursive
nave : si on se rend compte que la solution de mmes problmes est calcule plusieurs fois,
on est alors dans le cadre de la programmation dynamique. Le dcoupage du problme devrait
naturellement conduire la dfinition de la table (qui peut tre de dimension 1,2,3, ).
Remarquez quune case de la table correspond un sous-problme. Par ailleurs, le nombre de
sous-problmes peut tre trs grand. La complexit obtenue, de lalgorithme de
programmation dynamique, nest pas forcment polynomial.
Si on est dans le cadre de la mthode de la programmation dynamique, les tapes suivies
peuvent tre rsumes comme suit :
23
Expliquons ce principe par exemple, et commenons par la dtection dun plus court chemin
dans un graphe. Soit un graphe G = (X,U ) ayant X comme ensemble de sommets et U comme
ensemble d'arcs.
Le poids de larc a est un entier naturel not l(a). La longueur d'un chemin est gale la
somme des longueurs des arcs qui le composent. Le problme consiste dterminer pour
chaque couple (x,y) de sommets, le plus court chemin, s'il existe, qui joint x y.
Nous commenons par donner un algorithme qui dtermine les longueurs des plus courts
chemins notes (x,y). Par convention, on note (x,y)= s'il n'existe pas de chemin entre x et
y. (en fait il suffit dans la suite de remplacer par un nombre suffisamment grand par
exemple la somme des longueurs de tous les arcs du graphe).
La construction effective des chemins sera examine ensuite. On suppose qu'entre deux
sommets il y a au plus un arc. En effet, s'il en existe plusieurs, il suffit de ne retenir que le
plus court.
Les algorithmes de recherche de chemins les plus courts reposent sur l'observation trs simple
(mais combien importante) suivante: Si f est un chemin de longueur minimale joignant x y
et qui passe par z, alors il se dcompose en deux chemins de longueur minimale l'un qui joint
x z et l'autre qui joint z y .
24
Dans la suite, on suppose les sommets numrots x1, x2,..., xn et, pour tout k > 0, on considre
la proprit Pk suivante pour un chemin f ; Pk( f ) : Tous les sommets de f, autres que son
origine et son extrmit, ont un indice strictement infrieur k.
On peut remarquer dune part qu'un chemin vrifie P1 si, et seulement si, il se compose d'un
unique arc. Dautre part la condition Pn+1 est satisfaite par tous les chemins du graphe. Notons
par k(x,y) la longueur du plus court chemin vrifiant la proprit Pk et qui a pour origine x et
pour extrmit y. Cette valeur est si aucun tel chemin n'existe. Ainsi 1(x,y)= s'il n'y a pas
d'arc a entre x et y qui vaut l(a). D'autre part n-1=.
Le lemme suivant permet de calculer les k+1 connaissant les k(x,y). On en dduira un
algorithme itratif.
Lemme : Les relations suivantes sont satisfaites par les k :
D := L;
Pour k := 1 , n
Pour i := 1 , n
Pour j := 1 , n
Fpour
Fpour
2. A la dernire tape : remplir au mieux un sac de capacit xN avec des objets de type N.
3. Calculons lutilit maximale JN(xN) = max{cN*uN} avec xN aN*uN 0 et uN entier positif.
4. On en dduit une dcision optimale uN* = [xN /aN].
5. A ltape k < N, calculer pour tout xk = 1 b :
6. Jk(xk) = max{ck*uk + Jk+1(xk+1)}, avec les contraintes : xk+1 = xk ak*uk 0 et uk entier
positif.
A ltape k=1, on connat x1 (gal b) donc nul besoin de rsoudre le problme pour tout
x1 possible. Lorsque lalgorithme est arriv son terme, la quantit J1(b) calcule donne le
profit maximal (solution du problme) et on peut lire la suite de dcisions prendre en
parcourant les tables optimales (les fonctions Jk) calcules chaque tape.
Illustration 1: On dbute nos exemples par celui du calcul des nombres de Fibonacci. Le
problme est de calculer le n premiers nombres de Fibonacci donns par la formule suivante :
F(0)=1; F(1)= 1;
F(n)= F(n-1)+ F(n-2)
Nous avons vu que la complexit de cet algorithme est en exponentielle. La raison de cette
inefficacit est due la multiplicit de calcul dun mme nombre, comme le montre la figure
ci-dessous sur n =4.
27
La clef une solution plus efficace est dviter la multiplicit de rsolution du mme sousproblme. On amliore de loin la complexit temporelle si, une fois calcul, on sauvegarde un
rsultat, par exemple dans une table. Et au besoin, on le prend de cette table. Cette remarque
nous amne la solution suivante :
Cette approche de rsolution est connue sous le nom de fonctions mmoire, qui est trs lie
la programmation dynamique. En supprimant la rcursivit, nous crivons cet algorithme
dans une forme typique de la programmation dynamique.
Illustration 2 : Avanons un peu plus dans ce concept en prenant un autre exemple qui est
celui du calcul du coefficient binomial.
28
Si on implante directement cette expression sous cette forme, on obtient la fonction suivante :
est calcul.
Pour viter de calculer plusieurs fois un nombre, lide est de crer un tableau o on calcule
tous les nombres de petites tailles, ensuite, de tailles de plus en plus grandes avant darriver au
nombre dsir. Pour ce faire, on procde comme suit :
Remarque : Il est intressant de constater que seule la moiti de la matrice B est utilise pour
calculer B[n,k]. Autrement dit, un tableau une dimension suffirait pour faire ces calculs.
30
:
.
:
.
.
.
.
.
.
.
.
.
31
)( :
.
.
.
.
.
.
.
.
.
. .
:
( :
.
32
( : .
( : .
( : .
.
.
. Simulation
.
2.2) INVENTAIRE
La lgislation prvoit un inventaire par an obligatoire pour dresser le bilan; ce qui
pose deux questions:
quantit
valeur
o
o
Cet outil est un des outils de base en qualit, en maintenance, elle permet de
manire simple de mettre en vidence les liens de cause effet. On s'apperoit souvent en
gestion des stocks, que moins de 20% des rfrences en stock reprsentent elles seules
l'essentiel de la valeur de ce stock, c'est la classe A qui ncessite une gestion particulirement
efficace.
Dans les mthodes que nous allons tudier, nous supposerons rsolus les problmes
relatifs aux caractristiques physiques des stocks (volume, place...).
3.1) LES PRINCIPAUX SYSTEMES
Les commandes peuvent tre passes selon quatre possibilits:
3.1.1) En quantits fixes intervalles fixes
Concerne la classe C uniquement : commandes en rafales mensuelles, bisannuelles ou
annuelles. La gestion informatique ou trop rigide de la quincaillerie amne gnralement
au rsultat inverse de celui recherch, savoir, perte de productivit, dmotivation des
techniciens de maintenance...
La technique du double bac convient particulirement bien ce type d'article.
3.1.2) En quantits variables priodes fixes
Concerne les classes B,A
Les priodes T sont constantes.
d: dlai d'approvisionnement
P1, P2, P3: points de commande
Cette mthode fut de loin la plus utilise avant lavnement des systmes
informatiques de gestion, cette mthode permet dviter linventaire permanent, mais elle
montre videmment rapidement ses limites en cas de forte fluctuation de
consommation.
3.1.3) Quantits fixes intervalles variables.
Concerne galement les classes B,A, mais ce modle ncessite un support
de la part dun outil informatique.
36
:
,
.
,
.
, ,
,
. :
.
- : :
.
, ,
, .
-1 : :
:N
:P
:CL
:Cs
Q / 2
:Cp .
:T .
-2 : :
37
* :Q
:TL
:Ts .
-3 :
, :
= + + .
T = P . N + (TL + Ts) + Tp :
:
Cp = 0 === Tp = 0
TL = (N / Q ) . CL
)(Q) = (N / Q) . CL + Q . P . Cs ===- MIN T (Q
Q:
T (Q) / d (Q) = (- NCL / Q2 ) + PCs
:
T (Q) / d (Q) = ( - NCL / Q) +1/2 PCs
:
NCL / Q = PCs ==== NCL = Q PCs
)Q* = Q = 2 NCL / PCs (1
,
:
:
*n * = N / Q
t* = Q* / N
38
.
- )( :
.
:
,
* Q:
Cp + Cs / Cp
Q* = 2 N .CL / TCs
:
:Cp
:T
:Cs .
S*s = (Cp / Cs + Cp) . Q* :
,
.
- :
,
,
,
.
(F E ) Q / F :
:
:Q / F
:N
:F
39
:E
:F E .
1 :)Q = 2 N . CL / P. Cs ( 1 E / F
-2 :
) Q = 2N . CL / ( 1 E / F
.
* Q Q* = Nr Sd :
:
:Nr
:Sd .
:
:Cm
:P ) (
:D .
Nr = ( P + d) x Cs
Nr :
Nr = ( P + d ) . Cm + Cs
,
,
40
,
,
.
,
.
:
, ,
,
: .
:
,
, ) ( , :
.
" "
M ,C ,d
.
d
, M = Cm . d :
:Cm
:d
:M .
.Ss
:
41
SA :
: :
* + Q = .
,Sa
M = C m . d + Ss :
:
Q
M
Sa
C
Ss
d
: :
d
d
d.
, :
.
.
42
,
.
.
= + :
M = C + Ss
M = C d +
:C
:A
:
: .
4) MODELE DE WILSON
4.1) PRINCIPE
HYPOTHESES:
)La demande est constante (linaire
Les dlais d'approvisionnement sont nuls.
o
o
partir des hypothses de Wilson on peut dduire que le stock moyen = Q/2 :
Soit CT = u*D + a*D/Q + u*r*Q/2
On cherche dterminer la quantit de rapprovisionnement (Q) qui minimise le cot total :
On va donc dterminer quand CT = f(Q) passe par un minimum, on va driver cette fonction
et touver la valeur de Q qui annule cette drive.
dCT(Q)/dQ=0-aD/Q+u*r/2
la drive sannule pour ur/2=aD/Q
do Q=2aD/ur et enfin
45
46
1er cas: Le dlai de livraison est constant mais la consommation est suprieure la
consommation moyenne.
A partir d'un historique sur plusieurs priodes T, si la loi de distribution des sorties est une loi
normale, alors on peut calculer la consommation moyenne sur cette priode xm et l'cart type
x.
Il faut alors ramener cet cart type la priode lie au dlai d'approvisionnement d, d'aprs la
rgle de proportionnalit des variances on peut crire
x,d = Racine(d) *
x
Attention T et d doivent tre exprims dans la mme unit !
On obtient alors :
Ss = u*x,d
Avec u choisi selon le taux de service souhait et le cot de pnurie.
2me cas: La consommation est normale, mais le dlai de livraison est plus grand que prvu.
Soit pj l'cart type en jours sur le dlai d'approvisionnement, il faut ramener l'cart
type en "pices", il suffit pour cela de multiplier pj par la consommation journalire pour
obtenir pp = pj * conso journalire.
On obtient alors :
Ss = u*pp
Si les deux paramtres varient, la loi d'additiv des variances nous donne :
=Racine( x,d2+
pp2 )
Avec Ss = u*
47
Techniques Simulation :
) (systmes
. ) (systme
) (modle
.
) (
.
.
.
.
) (Systme
.
) .(environnement Simulation
.
.
48
.
.
.
.
.
.
:
. 10
.
.
.
.
.
- .
49
.
.
.
.
.
.
. ) (
.
.
.
:
:ProModel
.
50
:ARENA
.
.
.
.
.
.
.
.
.. :
.
.
.
.
51
.
.
.
.
)
(.
.
.
.
.
.
52
.
.
) (modele
.
.
. " " )(Que faire si
.
.
.
53
.
. .
)(Statique
)(Dynamique
:1
) (statique )(dynamique
) (Monte Carlo
. :
.1 .
.2 .
.3 .
.4 .
54
.5 ) (
.
) (stochastique )(dterministe
.
.
) (continue ).(discret
: )
:
.
Dfinitions de base:
A fin de simplifier la description des systmes, on dfinit :
Client : lobjet lmentaire se dplaant dans le systme. Il peut sagir de pices, de
personnes physiques, de paquets dinformations...
Serveur : une unit de traitement o des clients subissent une opration de traitement. Il sagit
dune machine, dun bureau, dun cabinet de consultation, dun ordinateur
Ressource : un composant consommable ou non, ncessaire au droulement correct du
service : fort, papier, palette, mmoire disponible
55
Unit de stockage : une unit dans laquelle des clients sont stocks et sont extraits
conformment une politique de gestion. Dans le cas du bureau de poste, lunit de stockage
est une file dont la politique de gestion est premier arriv, premier servi. Dans un stock de
pices usiner on peut, au contraire utiliser une pile, base sur la politique dernier arriv,
premier servi.
Station : lensemble constitu dun ou plusieurs serveurs de une ou plusieurs units de
stockage et dont le fonctionnement est autonome sans ncessairement tre indpendant des
autres units. Par exemple, lensemble caissire-caisse-tapis roulant peut tre une station de
lensemble de traitement qui permet aux clients dun supermarch de rgler leurs achats.
Unit de transport : elle permet le transport dun lieu lautre. En fait, les units de transport
relient une station une autre, ou un serveur une unit de stockage, ou inversement. Une
unit de transport peut tre un tapis roulant, ou bien un robot prenant des pices dans un stock
et les dposants sur une machine commande numrique.
La perception du fonctionnement de beaucoup de systmes dpend troitement de la raison
pour laquelle on sintresse lui et, en particulier de lobjectif poursuivi en tentant danalyser
ce systme. Considrons par exemple le fonctionnement dun bureau de poste. Il est facile
didentifier les lments physiques de ce systme (figure2):
les postiers ;
les automates ;
les files dattente ;
les clients ;
et enfin le bureau de poste lui-mme.
Chacune de ces entits juges pertinentes peut tre dcrite simplement en donnant la liste des
informations qui la concernent et sont estimes intressantes par rapport aux objectifs de
ltude.
Noublions pas quil peut apparatre ncessaire de simplifier le modle envisag pour
permettre la mise en uvre dune simulation ou dune rsolution de modle mathmatique.
Supposons que ltude vise valuer louverture dun deuxime guichet et que le taux
dutilisation du postier soit considr comme le seul lment reprsentatif, en ngligeant, par
exemple, le temps dattente des clients. Dans ce cas :
On peut ngliger les automates et les files dattente qui leur correspondent.
Pour le postier, il faut valuer le temps de traitement dun client ; en particulier, on devra
choisir entre un modle dterministe ou stochastique suivant le caractre constant ou alatoire
de cette dure. Dans ce dernier cas, il faut dterminer la loi de probabilit de ce temps de
service.
Pour les clients, on peut introduire la dure qui spare les arrives de deux clients successifs,
ce qui, dans le cas stochastique, peut ncessiter de prciser la loi de probabilit, constate ou
estime, de cette dure.
Pour le bureau de poste, on doit dterminer la longueur maximale que peut avoir la file
dattente des clients. Il est parfois ncessaire, pour simplifier, de considrer que la file
dattente peut tre de longueur infinie.
Pour estimer la dure de service au guichet, on observera le systme durant une priode
suffisamment longue et pendant des priodes de fonctionnement typique . Ainsi, on
tudiera le systme pendant une priode qui ne sera ni 11h-12h30, ni 16h-18h, priodes
traditionnellement trs charges qui ne sont pas reprsentatives dune journe de travail. Au
contraire, on pourra se restreindre ces priodes si lon projette de ne doubler leffectif de
postiers que dans les priodes charges. Il faudra aussi dterminer sil est opportun de dfinir
plusieurs classes de clients partir des dures de service constates.
En ralisant ltude, on ne prend pas en considration une multitude dlments, tels que:
Le fait que certains clients peuvent se dcourager avant datteindre le guichet et quitter la
file dattente.
Le fait que le postier peut tre, pendant de courtes priodes de temps, indisponible pour le
traitement des demandes des clients car il rpond au tlphone ou ses collgues
57
Le fait que certains clients peuvent ne pas respecter la politique de gestion de la file
dattente qui voudrait normalement que les clients soient traits selon leur ordre darrive
(clients prioritaires).
Le fait quun client dsigne indiffremment une pice dans un systme de production ou une
personne physique peut paratre tonnant ; nanmoins, si ces deux lments ont peu de points
communs dans la ralit, ils sont identiques du point de vue du modle. De mme on
considrera la guichetire comme un serveur !
La file dattente de pices devant une machine dusinage, la file des achats dune mnagre
sur le tapis de la caisse du supermarch, et une file dattente de clients devant un guichet de
poste, sont aussi, du point de vue du modle, identiques.
58
Elever A au carr.
Elever A1 au carr.
Exemple :
Soit A=3278, C=4.
On lve A au carr : A2=10745284, on prend le tranche du milieu: A1=7452.
On lve A au carr : A12=55532304, on prend le tranche du milieu: A2=5323.
Et ainsi de suite
59
Remarque :
-
2/ Mthode de linverse
Soit x un nombre rel tel que x]0,1[, on veut obtenir partir de x une suite de Q nombres
alatoires de lintervalle ]0,1[.
Soit donc x]0,1[ :
-
ces fonctions utilises sont elles mme bases sur ces mthodes ou
60