Bac III GRH.Techniques Quantitatives de Gestion · Réponse avec la technique vue dans le chapitre...
Transcript of Bac III GRH.Techniques Quantitatives de Gestion · Réponse avec la technique vue dans le chapitre...
Bac III GRH.Techniques Quantitatives de Gestion
COURS DE TECHNIQUE QUANTITATIVE DE GESTION
Table des matières
INTRODUCTION v
Organiser .............................................................................................................. v
Minimiser des coûts, des temps ........................................................................... vi
Gérer la logistique ............................................................................................... vi
Optimiser une vente, une production ................................................................. vii
La vraie problématique ....................................................................................... vii
I Théorie des graphes 1
1 Graphes orientés : définitions et généralités 3
Introduction .......................................................................................................... 3
Graphes orientés ................................................................................................... 3
2 Les problèmes d’ordonnancement 5
Introduction .......................................................................................................... 5
L’analyse ................................................................................................................... 5
Le diagramme de GANTT ................................................................................... 6
La méthode potentiel-tâches ................................................................................. 8
3 Graphes non orientés : définitions et généralités 15
Introduction ........................................................................................................ 15
Graphes non orientés .......................................................................................... 15
Matrice d’adjacence ........................................................................................... 17
4 Les Arbres 19
Introduction ........................................................................................................ 19
Définitions et propriétés ..................................................................................... 19
L’algorithme de Kruskal ..................................................................................... 20
L’algorithme de Prim .......................................................................................... 21
5 Recherche du plus court chemin 27
Introduction ........................................................................................................ 27
Définitions .......................................................................................................... 27
Exemples de problèmes ...................................................................................... 27
Algorithme de Ford-Moore ................................................................................ 28
Bac III GRH.Techniques Quantitatives de Gestion
Modélisation des problèmes de plus court chemin ................................................. 31
6 Flot Maximal 35
Introduction ............................................................................................................ 35
Description du problème ........................................................................................ 35
Exemple de problème ............................................................................................. 36
L’algorithme de Ford-Fulkerson ............................................................................. 37
Fin de l’exemple ..................................................................................................... 42
Flot au jugé, seconde version ................................................................................. 43
Coupe minimale ...................................................................................................... 45
II Programmation linéaire 47
7 La programmation linéaire 49
Introduction ............................................................................................................ 49
La forme canonique ................................................................................................ 49
Exemple .................................................................................................................. 50
8 La méthode géométrique 53
8.1
Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.
2
La
méthode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.3
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9 Le simplexe 57
Introduction ............................................................................................................ 57
La forme standard et son tableau associé ............................................................... 57
L’algorithme du simplexe ....................................................................................... 59
Interprétation du tableau final ................................................................................. 60
Exemple .................................................................................................................. 61
Plus loin au sujet des valeurs marginales ............................................................... 63
Unités et simplifications ......................................................................................... 64
III Modélisation 67
10 Modélisation 69
Chemin de la question à la réponse ........................................................................ 69
Les erreurs à ne pas faire ........................................................................................ 70
v
Alice et Hugo sont employés dans une agence événementielle. Ils doivent organiser un spectacle
pour un client.
Alice doit s’occuper de l’organisation du spectacle et Hugo de son financement.
Alice se donne 2 semaines de prospection afin de faire une liste de lieux possibles. Ensuite elle
aura besoin de 4 semaines pour établir une liste d’intervenants pour le spectacle.
Hugo se donne 5 semaines pour trouver des sponsors prêts à associer leur image à cet événement.
Une fois tout cela trouvé, Hugo et Alice devront proposer un créneau d’une semaine pour fixer
une réunion avec leur client pour qu’il décide parmi tous les choix possibles.
Après cette réunion Alice aura besoin de deux semaines pour préparer le lieu retenu, et une autre
semaine pour organiser toutes les répétitions.
Après la réunion, Hugo aura besoin d’une semaine pour réunir tous les fonds promis par les
sponsors. Une fois les lieux de spectacle préparés, il se donne une semaine faire les affiches et
les tracts pour annoncer l’événement. Pour finir, il veut encore une semaine pour distribuer tous
ces tracts.
Dans combien de temps au plus tôt pourra avoir lieu cet événement ? Est-ce grave si les répéti-
tions prennent plus de temps que prévu ?
Réponse avec les techniques vues dans le chapitre «Les problèmes d’ordonnancement» page 5.
INTRODUCTION
À quoi servent les techniques quantitatives de gestion ? A répondre à ce genre de questions :
Combien d’hommes et en combien de temps une armée peut-elle emmener sur tel ou
tel terrain d’opé- ration en cas de besoin ?
Existe-t-il des cas où une entreprise doit produire moins pour
gagner plus ? Quel est le coût minimal pour installer un réseau
? et par où le faire passer ?
Quelles sont les tâches d’un projet sur lesquelles il ne faut pas prendre de retard sous
peine de pénaliser tout le projet ?
Voici quelques problèmes pour illustrer ces questions :
Organiser
Les TQG permettent de s’organiser, calculer le temps d’un projet, trouver les tâches
«critiques» d’un projet.
Voici un mini-exemple de problème :
Bac III GRH.Techniques Quantitatives de Gestion
Il a été décidé de relier les 6 bâtiments d’un site industriel avec de la fibre optique. Le but est que
le coût des travaux soit minimal. Mais il y a plein de façons des relier les bâtiments entre-eux.
Voici le coût (en kilo euro) de l’établissement d’une fibre entre deux bâtiments quelconques du
site (par exemple, poser une fibre entre le Bat 4 et le Bat 6 coûte 7 k euros).
Quelles liaisons établir pour que tous les bâtiments soient reliés à coût minimal ?
Réponse avec les techniques vues dans le chapitre «Les Arbres» page 19.
Une usine d’assemblage smart-phone a reçu la commande pour 200 000 appareils à livrer dans
quatre mois. Chaque mois l’usine peut produire jusqu’à 80 000 appareils. Tous les appareils
construits à l’avance devront être stockés, avec un certain coût.
Le coût de production unitaire pour le mois 1 est de 50 écus, pour le mois 2 de 60 écus, pour le
mois 3 de 60 écus et pour le mois 4 de 75 écus.
Le coût de stockage par appareil des productions terminées les mois précédents est de 5 écus
pour le mois 2, 5 écus pour le mois 3 et 10 écus pour le mois 4.
Comment l’usine doit organiser la production pour obtenir un coût minimal pour les 200 000 appareils ?
Réponse avec la technique vue dans le chapitre «Recherche du plus court chemin» page 27.
Fontaine Bleue est une entreprise qui gère un parc de fontaines d’eau de bureau dans trois zones
différentes : en région parisienne, en région lyonnaise et en bourgogne. Elle possède deux grands
entrepôts : un à coté de Paris, l’autre à coté de Lyon. Elle obtient son eau déjà conditionnée en
bidons compatibles avec ses fontaines, de trois fournisseurs : le premier est en Val de Loire, le
second en Auvergne et le troisième dans la région stéphanoise.
Le fournisseur de Val de Loire peut produire et livrer dans l’entrepôt parisien 40m3 d’eau par
mois. Le fournisseur auvergnat peut produire 70m3 d’eau par mois. Il à la capacité d’en livrer 40
dans l’entrepôt parisien, et 50 dans l’entrepôt lyonnais. Le fournisseur stéphanois peut produire
et livrer dans l’entrepôt lyonnais 30m3 par mois.
L’entrepôt parisien peut recevoir 100m3 par mois, et l’entrepôt lyonnais 50m3. Depuis l’entrepôt
parisien, Fontaine Bleue sait livrer 50m3 d’eau par mois en région parisienne et 40 en bourgogne.
Depuis l’entrepôt lyonnais elle sait livrer 30m3 d’eau par mois en région lyonnaise et 10 en
bourgogne.
Combien de m3 d’eau au maximum sait fournir Fontaine Bleue ?
Réponse avec les techniques vues dans le chapitre «Flot maximal» page 35.
Minimiser des coûts, des temps
Les TQG vont permette de faire des choix pour minimiser des coûts,
des temps. . . Voici deux mini-exemples de problèmes :
Bat 1
Bat 2
Bat 3
Bat 4
Bat 5
Bat 6
Bat 1
Bat 2
2
Bat 3
2 3
Bat 4
4 5 3
Bat 5
4 3 3 4
Bat 6
6 4 5 7 2
Gérer la logistique
Les TQG vont permettre de gérer la logistique : où et combien produire, où et
combien stocker, où et combien vendre. . .
Voici un mini-exemple de problème :
v
vi
Bac III GRH.Techniques Quantitatives de Gestion
Un atelier d’ébénisterie a obtenu un contrat de sous-traitance de meubles pour deux modèles de
bibliothèques. Ces deux modèles utilisent du chêne et du hêtre pour être fabriqués. Le modèle
«petit chêne» utilise 2 stères de chêne et 4 stères de hêtre. Le modèle «grand hêtre» utilise 8 stères de hêtre et 1 stère de chêne. La construction des 2 modèles nécessite 10 heures de travail
chacun. La marge obtenu sur le modèle «petit chêne» est de 600 euros, et celle sur le modèle
«grand hêtre» de 400 euros.
Sachant que cet atelier dispose chaque année d’un stock de 8.000 stères de hêtre et 2.000 stères
de chêne, et qu’il peut fournir 12.500 heures de travail, quelle quantité de chaque modèle doit-il
produire pour optimiser sa marge ?
Sachant qu’en heure supplémentaire les ouvriers coûtent 25 euros de l’heure. Est-il rentable
d’avoir recours à des heures supplémentaires pour produire plus ?
Réponse avec les techniques vues dans la partie «Programmation linéaire» page 49.
Optimiser une vente, une production
Les TQG vont permettre de trouver l’optimum de nombreux de problèmes, comme
maximiser un béné- fice, une production, etc. . .
Voici un mini-exemple de problème :
La vraie problématique
Tôt ou tard le directeur d’une entreprise, d’une équipe ou d’un projet devra répondre
à des questions du même type que vu ci-dessus. Évidemment il lui faudra réunir
diverses informations et paramètres pour pouvoir le faire. Mais une fois toutes les cartes
en main il devra mettre en œuvre des techniques de calcul pour trouver la bonne
réponse.
Ce sont ces «techniques quantitatives de gestion» qui vont être présentées dans ce
cours. Elles utilisent des algorithmes issus de deux types de théories différents : certains
reposent sur la théorie des graphes, et d’autres sur la programmation linéaire.
Cependant ce cours n’est ni un cours de théorie des graphes, ni un cours de
programmation linéaire. Il va présenter les bases nécessaires à la compréhension des
algorithmes utilisés par les différentes techniques, mais il n’en fera pas une présentation
formelle ou complète. Ainsi les algorithmes seront décrits, mais les théories sous-
jacentes ne seront effleurées, leurs preuves ne seront pas faites.
Ne pensez pas pour autant qu’il faille laisser votre intelligence au vestiaire. Certes, une
fois l’algorithme compris, il devient vite une technique «automatique» et assez facile à
appliquer, mais la vraie difficulté n’est pas ici. Le véritable problème à résoudre est de
trouver comment modéliser votre question et donc quelle technique appliquer pour avoir
la réponse. Ainsi l’enjeu de ce cours n’est pas tant de savoir comment marchent les
techniques (même si vous allez effectivement devoir le savoir !), mais plutôt de savoir à
quelles questions et à quels types de problèmes elles répondent.
Eric LALLET, Jean-Luc RAFFY vii
Bac III GRH.Techniques Quantitatives de Gestion
viii
1
Bac III GRH.Techniques Quantitatives de Gestion
Première partie
Théorie des graphes
Eric LALLET, Jean-Luc RAFFY vii
3
Bac III GRH.Techniques Quantitatives de Gestion
Chapitre 1
Graphes orientés : définitions et généralités
Introduction
Beaucoup d’algorithmes d’optimisation, d’ordonnancement, de recherche d’optimum
reposent sur des graphes. Un bon dessin valant souvent plus qu’un long discours, les
gens formalisent naturellement beau- coup de leur problèmes avec des graphes.
Il existe deux grandes familles de graphes : les graphes orientés, et les graphes non
orientés. Dans ce premier chapitre nous allons décrire le minimum à savoir pour les
diverses techniques utilisant les graphes orientés.
Graphes orientés
Un graphe orienté est composé de sommets et d’arcs allant d’un sommet vers un autre
(éventuellement le même).
Un graphe fini orienté (G) se définit grâce deux ensembles finis : un ensemble de
sommets (X), et un ensemble d’arc (U ).
xj.
G = [X, U ] avec X = {x1, x2, x3, . . . , xn} et U = {u1, u2,
u3, . . . , um}
Un arc uk de U est défini par une paire ordonnée de sommets (xi, xj). On dit que l’arc uk va de xi
à
FIG. 1.1 – Exemples de graphe orienté
Sur la figure 1.1 G = [X, U ] avec X = {1, 2, 3, 4, 5, 6, } et U = {u1, u2, u3, u4, u5, u6, u7, u8}. L’arc
u1 va de 1 vers 2 et l’arc u3 va de 2 vers 2.
Définition 1.1 (extrémité initiale) Soit un arc uk = (xi, xt). xi est dite l’extrémité
initiale de uk. On définit aussi une fonction I(uk) = xi qui donne l’extrémité
4
initiale d’un arc.
5
Bac III GRH.Techniques Quantitatives de Gestion
2
2
Définition 1.2 (extrémité terminale) Soit un arc uk = (xi, xt). xt est dite l’extrémité
terminale de uk. On définit aussi une fonction T (uk) = xt qui donne l’extrémité
terminale d’un arc. On nomme aussi cette extrémité, l’extrémité finale.
Définition 1.3 (successeur) On dit que le sommet xt est successeur du sommet xi s’il
existe au moins un arc ayant xi comme extrémité initiale, et xt comme extrémité
terminale.
Définition 1.4 (prédécesseur) On dit que le sommet xi est prédécesseur du sommet xt
s’il existe au moins un arc ayant xi comme extrémité initiale, et xt comme extrémité
terminale.
Sur l’exemple le sommet 2 a 2 , 3 et 4 pour successeurs. Le sommet 2 a 1 et 2 pour prédécesseurs
Définition 1.5 (application multivoque Γ+) Soit un graphe G = [X, U ]. On définit Γ+
comme l’applica- tion qui à tout sommet x de X associe l’ensemble des sommets
successeurs de x.
Sur l’exemple de la figure 1.1 Γ+(2) =
{2, 3, 4}. Γ+(2) peut se noter Γ+.
Définition 1.6 (application multivoque Γ−) Soit un graphe G = [X, U ]. On définit Γ− comme l’applica- tion qui à tout sommet x de X associe l’ensemble des sommets prédécesseurs de x.
Sur l’exemple Γ−(2) =
{1, 2}. Γ−(2) peut se
noter Γ−.
Définition 1.7 (Graphe simple) Un graphe simple est un graphe dans lequel il n’y pas
deux arcs ayant la même extreminité initiale et la même extréminité terminal.
FIG. 1.2 – Exemples de graphe orienté
Le graphe 1.1 n’est pas un graphe simple (u1 et u2 ont les même extrémités), mais le
graphe 1.2 est un graphe simple.
Dans le cas d’un graphe simple la connaissance de l’ensemble des sommets X et
de l’application Γ+ définit totalement le graphe. Voila pourquoi dans ce cas, il est
4
possible de définir un graphe G comme G = [X, Γ+].
De plus dans un graphe simple il est possible de désigner les arcs par leurs extrémités
sans la moindre ambigüité. Sur le graphe 1.2 l’arc u1 peut aussi être nomé l’arc (1, 2).
Définition 1.8 (chemin) Un chemin est une suite d’arcs (u0, u1, . . . , un) avec T (ui) = I(ui+1) pour i
allant de 0 à n − 1.
(u1, u3, u6) est un chemin allant de 1 à 4. Sur un graphe simple on peut noter le
chemin en indiquant les sommets parcourus. (1, 2, 2, 4) désigne le même chemin.
7
Bac III GRH.Techniques Quantitatives de Gestion
Pour mieux rentabiliser ses cours, un organisme de formation mutualise ses modules dans divers
cursus différents. Ainsi avec 8 modules de cours il arrive à proposer les trois cursus suivants :
– Le premier cursus commence par le modules A, puis le D, suivi du F, et enfin se termine par
le H.
– Le deuxième cursus commence au choix par le module A ou B, puis le E, suivi du G, et enfin
se termine par le H.
– Le troisième cursus commence par le module C, puis le G et enfin se termine par le H.
Pour chacun des cursus, on ne peut commencer un module que si le précédent est terminé.
Voici la durée des divers modules :
Quelle va être le temps minimum pour terminer toutes les formations ?
Chapitre 2
Les problèmes d’ordonnancement
Introduction
On se pose des problèmes d’ordonnancement lorsque l’on est confronté à un problème
d’organisation. Il faut accomplir de multiples tâches qui demandent un certain temps
d’exécution et qui doivent être exécutées dans un certain ordre. Il est donc nécessaire
d’identifier les tâches prioritaires en fonction de l’objectif à atteindre et, lors de leur
exécution, il faut détecter les retards et les dépassements de moyens.
Les nombreuses méthodes d’ordonnancement peuvent se regrouper en deux grandes
familles selon le principe de base qu’elles utilisent. On distingue :
– les méthodes du type diagramme à barres : GANTT
– les méthodes à chemin critique : potentiel-tâches, potentiel-étapes
(PERT). Dans ce cours nous allons traiter les diagrammes de
GANTT et le potentiel-tâches.
L’analyse
La première étape d’un problème d’ordonnancement consiste à obtenir une liste de
tâches, leur du- rée, et les contraintes de temps les unes par rapport aux autres (quelles
tâches doivent être finies pour en commencer une autre).
Voici un petit exemple d’ordonnancement pour illustrer ce chapitre :
Modules A B C D E F G H Durée
(semaine
s)
3
2
5
3
3
5
2
2
L’analyse des divers cursus nous apprend :
– Les modules A, B, C peuvent commencer dès le début.
– Le module D commence après la fin de A (à cause du premier cursus)
– le module E commence après la fin de A et de B (à cause du deuxième cursus)
4
– le module F commence après la fin de D (à cause du premier cursus)
– le module G commence après la fin de E (à cause du deuxième cursus) et après la
fin de C (à cause du troisième cursus).
6
– le module H commence après la fin de F (à cause du deuxième cursus) et après la
fin de G (à cause du deuxième et du troisième cursus). On obtient donc le tableau des tâches, durées et contraintes suivant :
Tâche
s Durées Contraintes
A 3 semaines
B 2 semaines
C 5 semaines
D 3 semaines
A achevée
E 3 semaines
A, B achevées
F 5 semaines
D achevée
G 2 semaines
C, E achevées
H 2 semaines
F, G achevées
Le diagramme de GANTT
Un diagramme de GANTT se présente sous la forme d’un tableau à deux dimensions.
Les colonnes re- présentent l’avancement du temps (par exemple chaque colonne pourra
symboliser la durée d’une semaine), et les lignes contiennent les différentes tâches à
accomplir. En face de chaque tâche on va dessiner une barre allant du temps début de la
tâche à son temps de fin.
On va dessiner le diagramme de GANTT des divers cursus de formations en utilisant
le tableau obtenu après analyse dans la section précédente.
Les trois premières tâches (A, B et C) n’ont aucune contrainte. Elles peuvent
commencer au temps 0. On peut donc les représenter dans notre table en traçant une
barre partant du temps 0, et parcourant la durée de la tâche : 3 semaines pour A, 2 pour
B, et 6 semaines pour C :
Tâches
1 2 3 4 5 6 7 8 9 10 11 12 13
A
B
C
Par contre la tâche D ne peut commencer qu’après la tâche A et E ne peut
commencer qu’après les tâches A et B. Comme ces tâches sont déjà dans notre
diagramme, on connaît leurs temps de fin (après la semaine 3 et 2), il est donc possible
de tracer la barre ces deux tâches :
Tâches
1 2 3 4 5 6 7 8 9 10 11 12 13
7
Bac III GRH.Techniques Quantitatives de Gestion
A
B
C
D
E
Les contraintes de F et G sont maintenant résolues. F commence après D donc après la
sixième semaine. G ne peut commencer qu’après C et E, c’est le temps de fin de E (6) la
plus grande contrainte qui va imposer le début de G :
8
Tâches
1 2 3 4 5 6 7 8 9 10 11 12 13
A
B
C
D
E
F
G
Il ne reste plus que H à placer. Cette tâche commence après F et G. De ces deux
tâches, c’est F qui termine en dernier, c’est donc après la semaine 11, que H va
commencer.
Tâches
1 2 3 4 5 6 7 8 9 10 11 12 13
A
B
C
D
E
F
G
H
Ce diagramme nous apprend déjà qu’il faudra au minimum 13 semaines pour achever
toutes les forma- tions. Comme il est très visuel il pourra aussi servir de planning. Il
permet aussi de voir facilement quelles tâches se déroulent en parallèle.
Sur ce graphe, les tâches D et E sont très similaires. Elles semblent devoir commencer
et finir en même temps. Pourtant on va voir dans la section suivante qu’il est tout à fait
possible de reporter la tâche E de trois semaine sans que cela ne change la durée du
projet, alors que le moindre report de la tâche D allongera la durée du projet. Cette notion
importante de tâche «critique» n’apparaît pas sur le diagramme de GANTT.
9
Bac III GRH.Techniques Quantitatives de Gestion
De plus les contraintes n’apparaissent plus sur cette version du graphe. Par exemple
on voit bien que la tâche F commence après la semaine 6, mais on ne peut pas savoir si
c’est à cause de la tâche D ou de la tâche
E. On ne peut pas immédiatement déduire les conséquences d’un retard d’une tâche sur
les autres. Voila pourquoi certains logiciels proposent une version améliorée de GANTT
qui fait ressortir ces dépendances.
En résumé ce diagramme présente les avantages suivants :
– clarté et simplicité de la méthode
– information très condensée et très lisible.
– facilité de visualisation des tâches parallèles.
Par contre il a des inconvénients :
– les tâches critiques ne sont pas mises en évidence
10
– l’élaboration d’un plan d’action se révèle malaisé car cette méthode ne fait pas
apparaître les liaisons entre les tâches.
La mise en évidence de ces tâches critiques et de l’enchaînement des tâches est au
contraire le point fort de la méthode «potentiel-tâches» présentée dans la section
suivante.
La méthode potentiel-tâches
Construction du graphe
Le but de cette méthode est de mettre en valeur l’enchaînement des tâches, de
déterminer les dates de début et de fin de chaque tâche, de connaître les marges de
manœuvre possibles sur ces dates. Pour cela on va construire un graphe dont les
sommets seront les tâches du projet et les arcs les contraintes qui les lient. Ces arcs
seront étiquetés (valués) par la durée de la tâche dont ils sont issus.
La première étape de cette méthode va être de dessiner le graphe des tâches.
Reprenons l’exemple de la section précédente :
Tâche
s Durées Contraintes
A 3 semaines
B 2 semaines
C 5 semaines
D 3 semaines
A achevée
E 3 semaines
A, B achevée
F 5 semaines
D achevée
G 2 semaines
C, E achevées
H 2 semaines
F, G achevées
On commence le graphe en plaçant un sommet pour toutes les tâches n’ayant aucune
contrainte. Pour l’exemple, on place donc les sommets A, B et C (cf l’étape 1 sur la
figure 2.1). Ensuite on ajoute étape par étape les sommets qui ne dépendent que des
sommets déjà placés. On ajoute un arc entre les sommets des étapes pré-requises et le
sommet ajouté. Sur cet arc on indique la durée de la tâche pré-requise. Donc pour
l’exemple, après les tâches A, B et C, on peut placer les tâches D et E. On trace aussi les
arcs partant de A et B vers ces deux tâches, en indiquant dessus leur durée. Donc la
valeur 3 pour la tâche A et 2 pour la tâche B (cf l’étape 2 de la figure 2.1).
A A 3
D
3
B 2
E
1
1
Bac III GRH.Techniques Quantitatives de Gestion
C C
Etape 1 Etape 2
FIG. 2.1 – Début de la construction du graphe
On continue ainsi à placer les autres tâches et les arcs qui indiquent les dépendances jusqu’à la
dernière.
On arrive alors au graphe de la figure 2.2.
Il nous reste à finaliser ce graphe. Pour cela il faut ajouter une ou deux tâches fictives
de durée nulle. Si le projet débute par plusieurs tâches en parallèle, on ajoute avant
celles-ci une tâche α qui va symboliser le début du projet. On va la relier à toutes les
tâches qui débutent le projet (les tâches sans dépendance, donc
B
12
FIG. 2.2 – Graphe avec toutes les tâches
qui n’ont pas de prédécesseur). Enfin une tâche ω va symboliser la fin du projet. Tous
les sommets sans successeur vont y être reliés. Il faut bien sûr penser à placer sur les arcs
la durée des tâches correspondantes. On arrive alors au graphe finalisé de la figure 2.3.
FIG. 2.3 – Graphe finalisé
Pour appliquer l’algorithme du potentiel-tâches on va calculer pour chaque tâche
trois valeurs (la date au plus tôt, la date au plus tard, et la marge totale). Pour pouvoir
faire ces calculs directement sur le graphe on transforme chaque sommet en une case
divisée en trois sections pour recevoir ces trois valeurs.
3 A D
3 F
3 5
B 2
E 3
H 2
5 G
C
1
3
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 2.4 – Préparation du potentiel-tâches pour les calculs
14
Calcul des dates au plus tôt
Pour qu’une tâche puisse commencer il faut que toutes les tâches qui la relient au
début du projet soient réalisées.
Définition 2.1 (date au plus tôt) On définit donc ti, la date au plus tôt de la tâche i
comme la date au plus tôt de l’exécution de la tâche i.
Par exemple, pour commencer la tâche E, il faut avoir finit la tâche A et B. Comme A
dure 3 semaines et B 2 semaines, ce sont les 3 semaines de A qui sont la véritable
contrainte pour E. La tâche E ne pourra donc commencer au plus tôt que 3 semaines
après le début du projet. En fait pour retrouver ce temps on a cherché le plus long
chemin sur le graphe entre α et E.
Définition 2.2 (durée du projet) On définit la durée du projet comme la date au plus tôt de la tâche
ω.
Cette date va donc se calculer en trouvant le plus long chemin de α à ω.
Pour trouver les dates au plus tôt des différentes tâches, il suffit d’appliquer
l’algorithme de recherche du plus long chemin sur le graphe du potentiel-tâches.
Pour cela on commence par fixer la date au plus tôt de tâche α à 0. Ensuite on traite
étape après étape toutes tâches dont la date au plus tôt des prédécesseurs est connue.
Pour chaque prédécesseur on fait la somme de sa date au plus tôt et de sa durée. On
conserve la plus grande valeur qui devient la date au plus tôt de la tâche.
On débute avec un graphe avec des cases vides, sauf pour le tα qu’on initialise à 0 (voir figure
2.5).
FIG. 2.5 – Calcul de la date au plus tôt : état initial
Ensuite on traite tous les sommets dont les prédécesseurs sont déjà traités. Pour
chaque arc arrivant sur le sommet, on calcule la somme la valeur du ti du sommet
initial de l’arc et de la valeur de l’arc. On met le maximum sur le sommet terminal.
Pour la première étape, on peut remplir les sommets A, B et C. Ils n’ont qu’un seul
prédécesseur chacun, et donc la maximum est vite trouvé (voir figure 2.6).
1
5
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 2.6 – Calcul de date au plus tôt : première étape A, B et C
Pour la seconde étape, le calcul est simple pour D. Il n’y a qu’un seul prédécesseur, il
suffit donc de faire la somme du sommet initial (A=0) et de l’arc (3).Par contre E à 2
prédécesseurs. La somme en partant A est plus grande, c’est donc cette valeur (3) que
l’on prend (voir figure 2.7).
16
FIG. 2.7 – Calcul de la date au plus tôt : seconde étape D et E
La troisième étape permet de remplir la date au plus tôt de F et G. Pour F il n’y a que l’arc venant
de D
à prendre en compte, mais pour G il y a deux choix. La plus grande valeur vient par E (voir figure 2.8).
FIG. 2.8 – Calcul de la date au plus tôt : troisième étape F, et G
En continuant avec la même logique on remplit la date au plus tôt de H (un maximum
à choisir parmi 2 arcs) et de ω (voir figure 2.9).
FIG. 2.9 – Calcul de la date au plus tôt : fin
Recherche de la date au plus tard
On sait maintenant quand une tâche pourra commencer au plus tôt. On va maintenant
calculer quand il sera possible de commencer au plus tard une tâche sans que cela ne
retarde la fin du projet.
Définition 2.3 (date au plus tard) On définit donc Ti, la date au plus tard de la tâche i
1
7
Bac III GRH.Techniques Quantitatives de Gestion
comme la date au plus tard où l’on puisse commencer i sans augmenter la durée du
projet.
Par exemple, prenons la tâche G. Cette tâche dure 2 semaines et doit être faite pour commencer la tâche
H. La tâche H commence la 11me semaine. Donc on peut décider de commencer la tâche
G que 2 semaines avant c’est à dire la 9me semaine sans que le projet ne prenne de
retard. En résumé on peut commencer au plus tôt G la 6me semaine et au plus tard la 9me
semaine (TG = 9).
18
Pour calculer la date au tard de chaque tâche, on va remonter le graphe depuis la tâche
ω jusqu’à la tâche α. On initialise Tω, la date au plus tard d’ω avec la valeur de sa date
au plus tôt que l’on vient de calculer. On obtient le graphe initial de la figure 2.10.
FIG. 2.10 – Calcul de la date au plus tard : état initial
Ensuite on déroule l’algorithme du calcul de la date au plus tard : on regarde tous les
sommets dont les successeurs sont déjà traités. On choisit parmi les successeurs celui
qui à le plus petit Ti, et on lui retire la valeur de l’arc.
Pour la première étape, on peut remplir le sommet H. Il n’a qu’un seul successeur et
donc la minimum est vite trouvé (voir figure 2.11).
FIG. 2.11 – Calcul de date au plus tard : première étape H
Le seconde étape permet de trouver la date au plus tard pour F et G. Ces deux
sommets n’ont qu’un seul successeur, donc il suffit de retirer la valeur de l’arc au Ti du
successeur. On arrive au graphe de la figure 2.12
FIG. 2.12 – Calcul de la date au plus tard : seconde étape (F et G)
Les tâches D et E se traitent exactement de la même façon. Par contre la tâche A a
1
9
Bac III GRH.Techniques Quantitatives de Gestion
deux successeurs. On retient la date au plus tard la plus petite (TD = 3) et on rejette la
plus grande (TE = 6). On obtient le graphe de la figure 2.13.
Pour la dernière étape, lorsque les dates au plus tard de A, B et C sont calculées, on
peut trouver celle de α. Il a trois successeur, et c’est A qui avec TA = 0 a le Ti minimum
alors que B avec TB = 4 et C avec TC = 3 sont rejetés.
20
FIG. 2.13 – Calcul de la date au plus tard de la tâche A
FIG. 2.14 – Calcul de la date au plus tard : fin
On finit par le sommet initial du graphe (ici α). Sa date au plus tard est
obligatoirement 0. Trouver une autre valeur prouve qu’il y a des erreurs dans les calculs.
Calcul des marges
Définition 2.4 (marge totale) La marge totale Mi d’une tâche i est le délai dont on peut
retarder cette tâche sans affecter l’achèvement du projet.
Cette marge est donnée par la différence entre la date au plus tard et la date au plus
tôt : Mi = Ti − ti. Les tâches critiques sont celles qui ont une marge totale nulle. Il est
impossible de prendre du retard dessus sans retarder tout le projet. Le chemin critique
passe par les tâches critiques. On le visualise sur le
graphe en doublant les arcs de ce chemin : les arcs doublés sont ceux dont les deux
extrémités ont une marge totale nulle. Sur notre exemple (voir figure 2.15) il n’y qu’un
seul chemin critique, mais il est possible d’en obtenir plusieurs. Ce chemin critique va de
α à ω en passant part A, D, F et H qui sont donc les quatre tâches critiques sur lesquelles
aucun retard n’est permis.
2
1
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 2.15 – Calcul des marges et du chemin critique
22
2
3
Bac III GRH.Techniques Quantitatives de Gestion
Chapitre 3
Graphes non orientés : définitions et généralités
Introduction
Les graphes orientés ont été décrits dans le premier chapitre de cette documentation.
Pour certains modèles l’orientation des arcs n’apporte rien. Seule la liaison entre deux
sommets est interessante, peu importe le sens de cette liaison. Dans ce cas on n’oriente
plus cette liaison, les arcs deviennent des arêtes, et on parle alors de graphe non-orienté.
Graphes non orientés
FIG. 3.1 – Exemple de graphe non orienté
Un graphe fini non orienté (G) se définit grâce deux ensembles finis : un ensemble de
sommets (X), et un ensemble d’arêtes (U ).
G = [X, U ] avec X = {x1, x2, x3, . . . , xn} et U = {u1, u2, u3, . . . , um}
Une arête uk de U est définie par une paire non-ordonnée de sommets (xi, xj).
Sur la figure 3.1 G = [X, U ] avec X = {1, 2, 3, 4, 5, 6, 7} et U = {u1, u2, u3, u4,
u5, u6, u7, u8, u9, u10, u11}.
Définition 3.1 (extrémité) xi et xj sont appelés les extrémités de uk.
Sur la figure 3.1 les sommets 6 et 7 sont les extrémités de u9.
24
Définition 3.2 (adjacent) Deux sommets reliés par une arête sont adjacents
Sur la figure 3.1 les sommets 6 et 7 sont adjacents.
Définition 3.3 (incident) Une arête est incidente aux sommets qu’elle relie. On dit aussi
qu’un sommet est incident aux arêtes qui l’ont pour extrémité.
Sur la figure 3.1 u9 est une arête incidente à 6 et 7.
Définition 3.4 (boucle) Une arête u = (xi, xi) dont les extrémités coïncident est appelée une boucle.
Définition 3.5 (graphe simple) Un graphe est dit simple s’il ne contient aucune boucle
et si aucun couple de sommet n’est relié par deux arêtes ou plus. Un graphe qui n’est
pas simple est appelé un multigraphe.
L’exemple de la figure 3.1 est un multigraphe : il y a par exemple deux arêtes entre
les sommets 1 et 2, et une boucle sur le sommet 7.
Définition 3.6 (ordre) L’ordre N d’un graphe est son nombre de sommets. N = |X|
Le graphe de la figure 3.1 est d’ordre 7.
Définition 3.7 (degré) Le degré d(xi) d’un sommet est le nombre d’arêtes incidentes. Les
arêtes qui bouclent comptent pour 2. Le degré D(G) d’un graphe est le degré maximum de tous ses sommets.
Sur la figure 3.1 d(7) = 4, d(2) = 5, et D(G) = 5.
Définition 3.8 (cocycle) Soit A un sous ensemble de sommets de X. Le cocycle de A
(noté ω(A)) est l’ensemble des arêtes ayant une extrémité dans A et l’autre dans X − A.
FIG. 3.2 – Cocycle
Sur la figure 3.2 on a ω(A) = {u1, u2, u4, u7, u9, u11}
Définition 3.9 (chaîne) Une chaîne joignant x1 à xn est une suite de la forme (x1, u1, x2, u2, x3,
u3 . . . un−1, xn) qui commence par x1, se finit par xn et qui alterne sommets et arêtes incidents.
2
5
Bac III GRH.Techniques Quantitatives de Gestion
Les sommets étant implicites, la chaîne est souvent notée qu’avec ses arêtes : (u1, u2, u3,
. . . un−1). Lorsque le graphe est simple, la chaîne peut aussi être notée uniquement qu’avec ses sommets (x1, x2, . . . xn).
Définition 3.10 (chaîne élémentaire) Une chaîne est élémentaire si tous les sommets
qui la composent sont différents.
Définition 3.11 (chaîne simple) Une chaîne est simple si elle ne contient pas deux fois la même arête.
Définition 3.12 (chaîne fermée) Une chaîne est fermée si elle termine sur le sommet où
elle a commencé (x1 = xn).
26
Définition 3.13 (cycle) Un cycle est une chaîne fermée simple qui n’a aucun sommet en
double mis à part le premier qui est identique au dernier.
(u8, u4, u6) est une chaîne élémentaire simple allant de 5 à 4.
(u9, u10) est une chaîne simple qui va de 6 à 7. Elle n’est pas élémentaire car elle
passe deux fois par 7 (5, u8, 2, u2, 1, u1, 2, u8, 5) est une chaîne fermée allant de 5 à
5, mais n’est pas un cycle.
(1, u2, 2, u7, 4, u5, 1) est un cycle.
Définition 3.14 (connexité) Un graphe est dit connexe si pour tout couple de sommets
xi et xj soit il existe une chaîne allant de xi à xj, soit on a xi = xj.
Pour exprimer cette définition autrement, utilisons la relation R suivante :
xi = xj
xiRxj ⇔ ou Il existe une chaîne allant de xi a xj
Cette relation R définit une relation d’équivalence (relation réflexive, symétrique, et transitive). Elle forme ainsi des classes d’équivalence qui divisent le graphe en plusieurs partitions. Par exemple, le graphe
de la figure 3.1 est divisé en deux classes d’équivalence avec dans une classe les
sommets 1, 2, 3, 4 et 5 et dans l’autre les sommets 6 et 7.
Définition 3.15 (nombre de connexité) Le nombre p de classes d’équivalence distinctes de la
relation R est appelé le nombre de connexité du graphe.
Il existe alors une deuxième façon de définir la connexité :
Définition 3.16 (connexité (2e)) Un graphe est dit connexe si et seulement si son nombre de connexité
p
vaut 1
Matrice d’adjacence
Dans les cas réels, le dessin d’un graphe peut être fastidieux (car trop grand, trop
complexe), et tota- lement illisible (trop d’arètes ou d’arcs qui se croisent dans tous les
sens). Il faut alors choisir une autre réprésentation. Il en existe plusieurs et dans ce cours
on aura l’occasion d’utiliser les «matrices d’adja- cence».
Une matrice d’adjacence permet la représentation d’un graphe simple orienté
ou non-orienté. Soit G = [X, U ] un graphe simple avec |X| = N .
Sa matrice A d’adjacence est une matrice N × N remplis de booléens avec .
aij = 1 si (xi, xj) ∈ U 0 sinon
2
7
Bac III GRH.Techniques Quantitatives de Gestion
On peut aussi représenter des multigraphes avec ce type de matrice en remplaçant les
booléens par des entiers :
aij = |Uij| avec Uij = {u ∈ U/(I(u) = xi et T (u) = xj)}
Pour les graphes non-orientés on peut décider de ne pas remplir une moitié de la
matrice (copie de l’autre moitié).
28
Voici des exemples de matrices d’adjacence. 0
2(u1, u2) 0 1(u3) 1(u4) 0 1(u5) 1(u7) 1(u6) 0 0 1(u8) 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2(u9, u11) 1(u10)
0 2(u1, u2) 1(u3) 0 0 0 0 0 0 1(u4) 1(u7) 1(u8) 0 0 0 0 0 0 0 0 0 1(u5) 0 1(u6) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1(u9) 0 0 0 0 0 1(u11) 1(u10)
2
9
Bac III GRH.Techniques Quantitatives de Gestion
Chapitre 4
Les Arbres
Introduction
FIG. 4.1 – Quel est le réseau de coût minimum permettant de relier toutes les succursales ?
Imaginons que l’on veuille construire un réseau privé pour faire communiquer N
succursales d’une entreprise avec pour objectif d’obtenir le coût le plus bas. On connaît
tous les raccordements possibles et leur coût (voir la figure 4.1). Comme le but est
d’avoir le prix le plus bas, on ne va garder que les raccordements strictement
nécessaires. On s’aperçoit déjà que l’on n’a pas besoin de cycles dans ce graphe. Par
contre pour que toute succursale puisse joindre toutes les autres, le graphe devra
permettre de trouver un chemin entre tous les sommets (on aura donc un graphe
connexe).
Ainsi la solution est de trouver un graphe connexe simple sans cycle qui offre le
moindre coût de construction. Or un graphe connexe simple sans cycle est un arbre.
Nous allons donc étudier les arbres, leurs propriétés et deux algorithmes qui permettront
de trouver la solution à ce genre de problème.
Définitions et propriétés
Définition 4.1 (arbre) Un arbre est un graphe connexe simple sans cycle.
Par exemple une rivière et ses affluents forme un arbre. On utilise aussi beaucoup les
arbres pour clas- sifier. Par contre, avec notre définition, en théorie de graphe, un «arbre
30
généalogique» ne reste un arbre que
3
1
Bac III GRH.Techniques Quantitatives de Gestion
si on ne remonte pas trop loin (on finira souvent par trouver deux ancêtres communs à
deux conjoints, et donc on formera un cycle).
Définition 4.2 (sous graphe) On dit qu’un graphe G′ = [X′, U ′] est un sous-graphe de G = [X, U ] si X′ ⊆ X et U ′ ⊆ U.
Définition 4.3 (sous graphe couvrant) Un sous graphe G′ = [X′, U ′] est dit couvrant si X′ = X
et G′ est connexe.
Définition 4.4 (poids d’un graphe) Soit un graphe G = [X, U ] où chaque arête ui est
valuée avec un poids pi. Le poids du graphe est la somme des poids des arêtes du
graphe.
Les arbres sont des graphes qui ont de nombreuses propriétés. En voici quelques-unes :
1. un arbre est toujours un graphe simple.
2. un arbre à N sommets possède N-1 arêtes.
3. Un sous-graphe de G couvrant et sans cycle est un arbre couvrant de G. On appelle ces arbres,
des
«arbres de recouvrement» du graphe G.
4. Si un graphe a toutes ses arêtes de poids positif ou nul, il admet un sous-graphe
couvrant de poids minimal, et ce sous-graphe couvrant de poids minimal est un
arbre.
Pour résoudre le problème de l’introduction, il faut donc trouver le graphe de
recouvrement de poids minimum. Ce graphe est un arbre. Comme le nombre d’arbres de
recouvrement croît de façon exponentielle avec le nombre de sommets, il n’est pas du
tout intéressant de tous les calculer pour connaître celui qui a le poids minimum. Pour
éviter cela, il existe des algorithmes qui permettent de construire d’entrée un arbre de
poids minimal et dont le nombre d’étapes est une fonction linéaire du nombre d’arêtes.
Nous allons voir ces algorithmes.
L’algorithme de Kruskal
Soit un graphe G = [X, U ], avec |X| = N et |U | = M .
On va construite un arbre recouvrement de G de poids minimum : τ = [X, T ].
Algorithme 4.1 (Kruskal)
1. Classer les arêtes par ordre croissant de poids. U = {u1, u2, u3, , um}.
2. Commencer avec un graphe vide : T = ∅ et i = 1.
3. Regarder si l’ajout de ui au graphe crée un cycle.
(a) Si ce nouveau graphe est sans cycle, ajouter ui à T : T ← T ∪ ui.
(b) Si ce nouveau graphe contient un cycle, rejeter ui qui ne sera pas retenue dans l’arbre.
4. Incrémenter i de 1.
Si |T | = N − 1 Stop, sinon retourner à l’étape 3.
On peut remarquer que durant les phases intermédiaires de l’algorithme de Kruskal,
32
le sous graphe formé par T n’est pas forcement connexe. On a un ensemble d’arbres
disjoints. Un graphe de cette forme s’appelle une «forêt».
Faisons tourner cet algorithme sur l’exemple de l’introduction : N = 6 et M = 10.
Après classement des arêtes par ordre croissant de poids on obtient U = {u1, , u10} de la figure 4.2.
On pose T = ∅ et i = 1.
Donc on commence par ajouter u1 dans notre arbre : T =
{u1} et i = 2. Ensuite on ajoute u2 :T = {u1, u2} et i = 3.
On peut ajouter u3 toujours sans créer de cycle, donc T = {u1, u2,
u3} et i = 4. À l’étape suivante u4 peut aussi être ajouter, donc T
= {u1, u2, u3, u4} et i = 5. A ce stade on obtient la figure 4.3.
3
3
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 4.2 – Kruskal : tri des arêtes (les ui numérotées dans par ordre croissant de poids)
8 U10
S1 2 U6
S2 1 U2 S3
6 U9
6 U8
S4 5
U7 2 U3 2 2 U5
T=(X,T) U4 T=(X,T)
1 S6 S5 U1
FIG. 4.3 – Kruskal : étape avec 4 arêtes et étape finale
On tente alors d’ajouter u5. Mais (u1, u4, u5) forment un cycle. u5 est donc
rejeté, et i = 6. On tente alors d’ajouter u6. Mais (u1, u4, u6, u2) forment un
cycle. u6 est donc rejeté, et i = 7
Par contre u7 peut aussi être ajoutée. On obtient T = {u1, u2, u3, u4, u7}, et i = 8. Comme |T | = 5 =
N − 1, l’algorithme est terminé. On a τ = [X, T ] un arbre de recouvrement minimal (voir la figure 4.3).
On peut maintenant évaluer le coût du réseau à mettre en place : c’est le poids de
notre arbre de recou- vrement minimal. Donc si pi est le poids de l’arête ui :
coût = p1 + p2 + p3 + p4 + p7 = 1 + 1 + 2 + 2 + 5 = 11.
Notez qu’un arbre de recouvrement minimal n’est pas obligatoirement unique.
D’autres peuvent peser le même poids. On va d’ailleurs en trouver un autre pour notre
problème lorsqu’on va utiliser l’algorithme de Prim dans la section suivante.
L’algorithme de Prim
Description
S2 1
U2
8 6 S3
U10 U9
S1
6 U8
2 U6 S4 5
2 U7
2 U3 2
U5 U4
1 S6 S5 U1
S2 1
U2
8 6 S3
U10 U9
S1
6 U8
2 U6 S4 5
2 U7
2 U3 2
U5 U4
1 S6 S5 U1
34
Soit un graphe G = [X, U ], avec |X| = N et |U | = M .
On va construite un arbre recouvrement minimal de G :
τ = [X, T ]. Voici le principe de l’algorithme de Prim :
Algorithme 4.2 (Prim)
1. Commencer avec un ensemble de sommets A contenant un des sommets de X (au choix, par
exemple
x1) : A = {x1}. Et commencer un T l’ensemble des arêtes à vide : T = ∅
2. Calcul q, l’ensemble des arêtes du cocycle de A : q = ω(A).
3. Choisir dans q une des arêtes de poids minimal u.
3
5
Bac III GRH.Techniques Quantitatives de Gestion
S2 1
u5 S3
A 8
u1 6
u6
6 u7
S1 2 u2 S4 5
2 2 u10
2
u4
u3 u8
1 S6
S5 u9
S2 1
u5 S3
8 u1
6 u6
A 6 u7
S1 2 u2 S4 5
2 2 u10
2
u4
u3 u8
1 S6
S5 u9
(a) ajouter u à T .
(b) u relie un sommet xi de l’ensemble A à un sommet xj hors de A. Ajouter xj à A.
4. Si |T | = N − 1, fin, sinon retourner en 3.
Exemple sur un graphe dessiné
Faisons tourner cet algorithme sur notre exemple.
– Pour démarrer, on va choisir d’initialiser A avec S1 (voir figure 4.4)1
A = {S1}
q = ω(A) = ωS1 = {u1, u2, u3, u4}
T = ∅
FIG. 4.4 – Prim : Initialisation de l’algorithme et première étape (u2 ajoutée)
– On doit choisir une arête de moindre poids dans q. L’arête u1 (de poids 8) est donc
exclue. Les 3 autres (de poids 2) peuvent convenir. On va prendre u2. Elle est
reliée à S4 qui rentre donc dans l’ensemble A (voir figure 4.4).
T = {u2}
A = {S1, S4}
q = ω(A) = {u1, u3, u4, u6, u7, u8}
– Les trois arêtes de poids 2 de q sont éligibles : u3, u4 et u8. On va choisir u3. Son
extrémité S6 entre donc dans A (voir la figure 4.5).
T = {u2, u3}
A = {S1, S4, S6}
q = ω(A) = {u1, u4, u6, u7, u9, u10}
– A cette étape, seule l’arête de poids 1, u9 peut être choisie. On ajoute son extrémité
S5 dans l’en- semble A (voir la figure 4.5).
T = {u2, u3, u9}
36
A = {S1, S4, S5, S6}
q = ω(A) = {u1, u6, u7, u10}
– L’arête de plus faible poids de q est u10. Son extrémité S3 entre dans A (voir la figure 4.6).
T = {u2, u3, u9, u10}
A = {S1, S3, S4, S5, S6}
q = ω(A) = {u1, u6, u5}
1Notez que pour cette algorithme les arêtes n’ont pas besoin d’être triées. Donc leur
numérotation a juste été faite «au vol» lors du dessin du graphe
3
7
Bac III GRH.Techniques Quantitatives de Gestion
S2 1 S2 1
u5 S3
u5
8 u1
6 S3
u6 8
u1 6
u6
A 6 u7 A 6 u7
S1 2 u2 S4 5
S1 2 u2 S4 5
2 2 u10 2 2 u10
2
u4
u3 u8 2
u4
u3 u8
1 S6 S5
1 S6 u9 S5 u9
FIG. 4.5 – Prim : Deuxième étape (u3 ajoutée) et troisième étape (u9 ajoutée)
FIG. 4.6 – Prim : Quatrième étape (u10 ajoutée) et dernière étape (arbre trouvé)
– L’arête u5 de poids 1 complète notre arbre. Le nombre d’arêtes vaut N − 1 et A enrichi de S2 l’extrémité de u5 couvre maintenant tout l’ensemble. L’algorithme se termine donc ici (voir figure 4.6).
T = {u2, u3, u5, u9, u10}
A = {S1, S2, S3, S4, S5, S6}
q = ω(A) = ∅
L’arbre trouvé ici n’est pas le même que dans la section précédente, mais il pèse bien
le même poids (11). Aussi bien pour Kruskal que pour Prim, il y a des choix à faire (par
exemple, lorsqu’il y a plusieurs arêtes avec le même minimum), et il y a donc plusieurs
«bonnes» solutions.
Exemple sur la matrice du graphe
Pour ce genre de problème, le graphe dessiné est parfois illisible : le graphe n’est pas
planaire et plein d’arêtes se croisent dans tous les sens. Essayer de trouver sur le dessin
le cocycle des sommets déjà traités devient vite impossible. On peut bien sûr dérouler
l’algorithme à la main, mais il est aussi possible de travailler sur la matrice d’adjacence
qui représente le graphe. Dans ce cas le booléen qui indique s’il existe une arête entre
deux sommets est remplacé par le poids de l’arête.
S2 1
u5 S3
8 u1
6 u6
A 6 u7
S1 2 u2 S4 5
2 2 u10
2
u4
u3 u8
1 S6
S5 u9
S2 1
u5 S3
8 u1
6 u6
A 6 u7
S1 2 u2 S4 5
2 2 u10
2
u4
u3 u8
1 S6
S5 u9
38
S1 S2 S3 S4 S5 S6
S1
S2 8
S3 1
S4 2 6 6
S5 2
S6 2 5 2 1
La matrice d’adjacence du graphe des succursales donne :
3
9
Bac III GRH.Techniques Quantitatives de Gestion
S1 S2 S3 S 4 S5 S6
S1
S2
S3
S4 2 6 6
S5
S6 2
S1 S2 S3 S 4 S5 S 6
S1
S2
S3
S 4 2 6 6
S5
S6 2 5 2/\ 1
S 1 S2 S3 S 4 S5 S 6
S 1
S2 8
S3
S 4 2/\ 6 6
S5 2
S 6 2/\ 5 2/\ 1
Le cocycle d’un ensemble réduit à un seul sommet sur une telle matrice est très
simple à trouver : il s’agit de la colonne et de la ligne du sommet.
Donc la matrice qui donne les arêtes du cocycle de A = {S4} est :
Imaginons maintenant qu’on veuille ajouter S6 à notre ensemble (pour former l’ensemble de
sommets
{ S4, S6 }). Comment trouver le nouveau cocycle ?
Il faut ajouter toute la ligne et la colonne de S6 mais en retirant toutes les valeurs qui
étaient déjà présentes.
On obtient :
Pour illustrer cela une fois de plus, ajoutons S1 à l’ensemble. On procède de la même
manière pour trouver le cocycle du nouvel ensemble ({ S1, S4, S6 }). On ajoute la ligne
et la colonne de S1 mais en rayant les éléments déjà présents.
Cela donne :
Utilisons ce principe sur l’algorithme de Prim.
Imaginons un cas d’étude : Six fleuves majeurs coulent dans la province de
Primlande : l’Armoise, la Bellis, le Comaret, la Douve, l’Erine et le Fragon. Le
gouverneur de Primlande voudrait créer un réseau de canaux pour permettre de naviguer
d’un fleuve à l’autre. Il veut aussi que ça lui coûte le moins cher possible. Il a demandé
une étude pour évaluer le coût de la jonction des fleuves pris deux à deux. Voici le
résultat :
Armoise
Bellis Comaret
Douve
Erine Fragon
Armois
40
e Bellis 10 Comaret
6 8
Douve 4 2 4 Erine 9 4 7 2 Fragon 3 3 3 1 5
Il faut maintenant trouver quels canaux creuser pour que tous les fleuves ne forment
plus qu’un seul réseau qui coûte le moins cher possible. Prim est parfaitement adapté.
On va donc le dérouler, mais sur la matrice.
4
1
Bac III GRH.Techniques Quantitatives de Gestion
Pour démarrer, on va choisir d’initialiser A avec Armoise. On sélectionne donc
l’Armoise (en sou- lignant) dans la matrice et on ajoute son cocycle. Sur une matrice
d’adjacences, le cocycle d’un sommet correspond à sa ligne et sa colonne :
Armoise
Bellis Comaret
Douve
Erine Fragon
Armoise
Bellis 10 Comaret 6 Douve 4 Erine 9 Fragon 3
choisie
La plus petite arête présente dans la matrice est celle qui va de l’Armoise au Fragon.
On ajoute cette arête à notre arbre (en ajoutant un «oui» dans la case de l’arête),
On ajoute le Fragon dans l’ensemble A (on le souligne dans la matrice).
On ajoute aussi son cocycle (donc on fait l’union avec le cocycle du graphe déjà dans
la matrice), mais en rayant les éléments s’ils sont déjà présents (on supprime
l’intersection avec le cocycle déjà présent). On obtient le cocycle du nouvel ensemble :
Armoise
Bellis Comaret
Douve Erine Fragon
Armoise
Bellis 10 Comaret 6 Douve 4 Erine 9 Fragon 3/\ oui 3 3 1
choisie 5
Dans le nouveau cocycle, c’est l’arête Douve-Fragon qui doit être sélectionnée. On
ajoute cette arête à notre arbre.
On ajoute la Douve dans l’ensemble A. On ajoute son cocycle mais en rayant les
arêtes qui sont déjà présentes dans la matrice :
Armoise
Bellis Comaret
Douve
Erine Fragon
Armoise
Bellis 10 Comaret
6
Douve 4/\ 2 choisie
4
Erine 9 2 Fragon 3/\ oui 3 3 1/\ oui 5
Dans le nouveau cocycle, deux arêtes peuvent être choisies : soit Erine-Douve, soit Douve-Bellis.
On va choisir d’ajouter l’arête Douve-Bellis.
42
On ajoute aussi la Bellis dans l’ensemble A. On ajoute son cocycle mais en rayant les
arêtes qui sont déjà présentes dans la matrice :
Armoise
Bellis Comaret
Douve Erine Fragon
Armoise
Bellis \/1/\0 Comaret
6 8
Douve 4/\ 2/\ oui 4 Erine 9 4 2
choisie
Fragon 3/\ oui 3/\ 3 1/\ oui 5
Cette fois, c’est au tour de l’arête Erine-Douve d’être choisie.
On ajoute aussi l’Erine dans l’ensemble A. On ajoute son cocycle mais en rayant les
arêtes qui sont déjà présentes dans la matrice :
4
3
Bac III GRH.Techniques Quantitatives de Gestion
Armoise
Bellis Comaret
Douve
Erine Fragon
Armoise
Bellis \/1/\0 Comaret 6 8 Douve 4/\ 2/\ oui 4 Erine 9/\ 4/\ 7 2/\ oui Fragon 3/\ oui 3/\ 3
choisie 1/\ oui 5/\
On doit maintenant prendre l’arête Fragon-Comaret. On obtient les 5 arêtes utiles à
notre arbre, on peut s’arrêter là.
La matrice suivante n’est calculée que pour montrer que lorsque tous les sommets
sont reliés, toutes arrêtes ont été rayées, puisque le cocycle est forcement vide. Mais il
n’est pas utile de le faire pour trouver l’arbre de recouvrement.
Armoise
Bellis Comaret
Douve
Erine Fragon
Armoise
Bellis \/1/\0 Comaret
6/\ 8/\
Douve 4/\ 2/\ oui 4/\ Erine 9/\ 4/\ 7/\ 2/\ oui Fragon 3/\ oui 3/\ 3/\ oui 1/\ oui 5/\
L’arbre de recouvrement minimal est donc composé de (Douve-Bellis, Erine-Douve,
Fragon-Armoise, Fragon-Comaret, Fragon-Douve).
Il pèse donc : 2 + 2 + 3 + 3 + 1 = 11.
44
Chapitre 5
Recherche du plus court chemin
Introduction
Les problèmes de cheminement dans les graphes sont parmi les plus anciens de la
théorie des graphes. Ce type de recherche se rencontre soit directement, soit sous la
forme d’un problème dans de nombreuses applications. Toutes les fois que l’on voudra
trouver un minimum pour un processus qui passer par une serie d’étapes succéssive, la
recherche du plus court chemin sera un méthode adéquate.
Voici quelques exemples :
– Evidemment, cette technique sera utilisée pour trouver la distance minimale ou le
temps minimal d’un trajet routier.
– Cette technique sera aussi adaptée pour trouver minimiser un coût (ou le temps) de
production d’un processus industriel qui passe par différentes étapes.
– On va aussi se servir de cette technique pour minimiser le coût de la gestion de
stocks (pour savoir quand produire, et quand stocker).
Définitions
Définition 5.1 (graphe valué) Étant donné un graphe G = (X, U ), on associe à chaque
arc u ∈ U un nombre l(u) ∈ R. On dit que G est valué par la longueur l(u).
Définition 5.2 (plus court chemin) Le problème du plus court chemin (PCCH) entre 2
sommets i et j sera de trouver un chemin pi,j dont la longueur totale l(pi,j) est minimale.
Σ Avec l(pi,j) = l(u)
u∈pi,j
Exemples de problèmes
L’interprétation la plus évidente de l(u) est une distance. Mais toute autre valeur
peut être modélisée : un coût de transport, une dépense de construction, une durée, . . . .
Pour illustrer ce chapitre nous allons utiliser un problème de remplissage d’un bassin
de rétention d’eau. Une commune doit réussir à faire monter chaque jour 10 m3 d’eau
jusqu’à un bassin nommé H. Pour cela elle puise dans une source A. Entre les deux, elle
a à sa disposition une série de réservoirs intermédiaires reliés par des pompes (qui
consomment de l’énergie), ou des turbines (qui restituent de l’énergie). Toutes les
conduites ont la capacité nécessaire pour faire transiter les 10 m3 d’eau, mais les
rendements n’étant pas tous égaux, les coûts en énergie varient beaucoup.
Voici les diverses conduites possibles avec leur coût en kWh (lorsque la conduite
4
5
Bac III GRH.Techniques Quantitatives de Gestion
passe par une turbine et redonne de l’énergie, le coût est mis en négatif).
46
4
B E
2
5 −2 F 0
A 4
C
3
−1
5
G 7
H
3 1 8
D
Réservoir de
départ
Réservoir d’arrivé
e
Coût (kWh)
A B 5 A C 4 A D 3 B C -2 B E 4 C F 3 C G -1 D C 1 D H 8 E H 0 F E 2 G F 5 G H 7
Par quelles conduites cette commune doit faire transiter l’eau pour consommer le
moins d’énergie pos- sible ?
La première étape consiste à construire le graphe valué de ce problème :
FIG. 5.1 – Par quelles conduites faire transiter l’eau ?
Ensuite il faut calculer le chemin le plus court allant de A à H sur ce graphe. Pour
cela on va utiliser l’algorithme de Ford-Moore.
Algorithme de Ford-Moore
On va dérouler l’algorithme de Ford-Moore sur un tableau. Pour cela on commence
par créer un tableau avec une colonne pour chaque sommet, une pour la liste des
sommets qui ont changé, et une dernière pour leurs successeurs. L’algorithme de Ford-
Moore est un algorithme itératif. Il y aura une nouvelle ligne pour chaque itération (on
ajouter une colonne au début juste pour numéroter ces itérations).
Pour l’itération 0, le tableau est initialisé avec λ(A) = 0 et tous les autres avec ∞. On place juste A dans les sommets changés, on indique tous les successeurs de A dans la colonne Γ+.
m λ(A
) λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ A B,C,
4
7
Bac III GRH.Techniques Quantitatives de Gestion
D
Maintenant à chaque itération il faut reprendre un à un tous les sommets qui apparaissent dans la colonne Γ+ de l’itération précédente. Un sommet peut apparaître plusieurs fois, il faut alors le traiter plusieurs fois. En fait, on traite tous les arcs
(Sommets changés → Γ+) que l’itération précédente a fait apparaître. On doit donc faire à l’itération suivante autant de calculs qu’il y a de sommets dans la colonne Γ+.
Par exemple à l’itération 0, il y a un seul sommet changé (A), qui a trois successeurs
(B, C, D). On va donc traiter trois arcs A → B, A → C, et A → D.
48
Pour traiter A → B, on écrit dans la colonne de B la somme de la plus petite valeur
de la colonne de A (ici 0) et de la valeur de l’arc A → B (ici 5). Avec ce résultat (0 + 5 = 5), on note aussi le prédécesseur (donc ici A) pour pouvoir retrouver les sommets du chemin à la fin de l’algorithme. Reste alors à regarder
si la valeur que l’on vient d’ajouter dans la colonne de B est plus petite que les
anciennes. Si oui, on raye les anciennes, et on garde celle-ci (c’est le cas pour notre
exemple), sinon on raye la nouvelle valeur, et on garde l’ancienne. Si les deux valeurs
sont égales, on garde les deux : cela signifie juste qu’il y a pour l’instant plusieurs plus
petits chemins de même longueur.
On traite de la même façon les arcs A → C, et A → D. On obtient le tableau avec l’itération 1. Trois sommets ont changé de valeur (puisque pour les trois, la nouvelle valeur était plus petite que celle calculée jusqu’à présent). On renseigne le Γ+ pour chacun de ces sommets.
m λ(A
) λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 zc∞cz zc∞cz zc∞cz ∞ ∞ ∞ ∞ A B,C,D
1 5/A 4/A 3/A B C
D
C,E F,G
H,C
Il y a six sommets présents dans la colonne Γ+, il faut donc faire six calculs pour
l’itération 2 : les six arcs qui doivent être traités sont B → C, B → E, C → F , C → G, D
→ H, et D → C.
On remarque que C apparaît deux fois dans la colonne Γ+. Ce sommet sera donc traité deux fois :
– Pour C venant de B, on obtient la somme de la valeur de B (5) et de l’arc B → C (-2), donc 3. Comme cette valeur est plus petite que le 4 jusque là choisi, on raye le 4 et garde le 3.
– Pour C venant de D, on obtient la somme la valeur de D (3) et de l’arc D → C (1), donc 4. Comme cette valeur est plus grande que celle que l’on vient de placer (3) on la raye.
On procède de la même façon pour les quatre autres arcs, et on obtient le tableau
avec l’itération 2. Quatre sommets ont changé de valeur (puisque pour les quatre, une
nouvelle valeur était plus petite que celle calculée jusqu’à présent). On renseigne le
Γ+ pour chacun de ces sommets.
m λ(A
) λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz A B,C,D
1 5/A zc4/czA
3/A B C
C,E F,G
H,C
4
9
Bac III GRH.Techniques Quantitatives de Gestion
D
2 3/B zc4/czD
9/B 6/C 3/C 11/D C E
F
G
H
F,G H
E
F, H
Pour l’itération 3, il y a encore 6 sommets dans la colonne Γ+, donc six arcs doivent
être traités : C → F , C → G, E → H, F → E, G → F et G → H. Pour la colonne F et la colonne H il faut donc faire deux calculs.
Pour le calcul de E venant de F , on obtient somme de la valeur de F (7) avec la
longueur de l’arc F → E (2), donc la valeur 9. Comme l’ancienne valeur (9) est identique, on garde les deux chemins. Mais la valeur de λ(E) reste inchangée à cette étape, donc E n’apparaîtra pas dans les sommets changés.
On obtient le tableau avec l’itération 3. Trois sommets ont changé de valeur. On
renseigne le Γ+ pour chacun de ces sommets.
50
m λ(A)
λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz A B,C,D
1 5/A zc4/czA
3/A B C
D
C,E F,G
H,C
2 3/B zc4/czD
9/B 6/C zc3/czC
sz11sz/szD
C E
F
G
H
F,G H
E
F,
H
3 9/F 6/C zc8/czG
2/C 9/E sz10sz/szG
F G
H
E F,H
Pour l’itération 4, trois arcs doivent être traités : F → E, G → F et G → H.
Pour le calcul de F venant de G, on obtient la somme de la valeur de G (2) avec la
longueur de l’arc G → F (5), donc la valeur 7. Comme l’ancienne valeur (6) est plus petite, on raye la nouvelle. Donc la valeur de λ(F ) reste inchangée à cette étape, et F n’apparaîtra pas dans les sommets changés.
On obtient le tableau avec l’itération 4. Trois sommets ont changé de valeur. On
renseigne le Γ+ pour chacun de ces sommets.
m λ(A
) λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz A B,C,D
1 5/A zc4/czA
3/A B C
D
C,E F,G
H,C
2 3/B zc4/czD
zc9/czB
6/C zc3/czC
sz11sz/szD
C E
F
G
H
F,G H
E
F,
H
3 zc9cz/F
6/C zc8/czG
2/C 9/E sz10sz/szG
F G
H
E F,H
4 8/F zc7/czG
9/G E H
Pour cette itération, un seul arc doit être traité : E → H. On obtient le tableau suivant :
5
1
Bac III GRH.Techniques Quantitatives de Gestion
m λ(A)
λ(B)
λ(C)
λ(D)
λ(E)
λ(F )
λ(G)
λ(H)
Sommets changés
Γ+
0 0 zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz A B,C,D
1 5/A zc4/czA
3/A B C
D
C,E F,G
H,C
2 3/B zc4/czD
zc9/czB
6/C zc3/czC
sz11sz/szD
C E
F
G
H
F,G H
E
F,
H
3 zc9cz/F
6/C zc8/czG
2/C cz9cz/E sz10sz/szG
F G
H
E F,H
4 8/F zc7/czG
zc9/czG
E H
5 8/E H
La colonne Γ+ est vide. L’algorithme est donc fini. La longueur du plus court chemin du
réservoir A
52
vers le réservoir H est donc de 8 kWh. Pour connaître ce chemin le plus court, il suffit de
partir de la colonne de H et de remonter la route : (H) ← (8/E) ← (8/F ) ← (6/C) ←
(3/B) ← (5/A).
Le plus court chemin passe donc par A → B → C → F → E → H et il faudra utiliser 8 kWh par jour pour remplir les 10 m3 du bassin H.
Modélisation des problèmes de plus court chemin
Les écueils
Il y a deux principaux écueils à éviter lorsqu’on veut modéliser un problème avec un plus court
chemin :
1. La carte n’est pas le graphe. Même lorsque l’on modélise un déplacement
géographique, il ne faut pas croire que les différents lieux parcourus seront les
différents états du graphes. Il peut y avoir plein de bonnes raisons pour lesquelles le
lieu géographique ne suffit plus à déterminer l’état : un parcours peut passer
plusieurs fois par le même lieu, plusieurs étapes d’un processus peuvent
s’enchaîner sur un même lieu. . .
2. Les états ne sont pas des lieux géographiques. Excepté dans le cas particulier des
parcours routiers (même si c’est une des applications majeures du PCCH), il est
rare que les états du graphe soient des lieux géographiques. Lorsqu’on veut
modéliser un PCCH il faut penser en «étape»1. Les étapes peuvent effectivement
être les différents lieux parcourus, mais le plus souvent il s’agit d’étapes suc-
cessives dans un processus. Par exemple un processus industriel pourra commencer
par une «produc- tion», puis passer par un «transport» et une «transformation» et
finir par une «livraison». Même si toutes ses étapes peuvent se passer dans des
lieux différents, la modélisation ne reposera pas que sur ces lieux.
Pour illustrer un problème où les états ne sont pas des lieux, voici un exemple d’une
production indus- trielle.
Une production industrielle
Une entreprise productrice d’acier possède deux sites industriels : un à Issy et l’autre
à Lahba. Elle doit produire et livrer des pièces en acier pour une société localisée à
Hayeur. Le processus pour obtenir ces pièces passe par trois étapes, toutes trois possibles
sur les deux sites. Mais suivant le site, le coût diffère : – L’extraction du fer coûterait 100 U à Issy, et 120 U à Lahba.
– Le raffinage pour obtenir l’acier coûterait 90 U à Issy, et 110 U à Lahba.
– Le moulage pour obtenir les pièces coûterait 40 U à Issy ou à Lahba.
Il est possible de transporter les matériaux intermédiaires d’un site à l’autre :
– Le transport du fer coûterait 40 U (dans un sens ou dans l’autre).
– Le transport de l’acier coûterait 30 U (dans un sens ou dans l’autre).
Enfin la livraison depuis Issy vers Hayeur coûterait 50 U, et celle depuis Lahba vers
Hayeur coûterait 10 U.
Comment l’entreprise doit organiser sa production pour fabriquer et livrer ces pièces au moindre
coût ?
5
3
Bac III GRH.Techniques Quantitatives de Gestion
Pour cet exemple aussi il y a des lieux, mais ils ne suffiront pas à modéliser notre
problème. Le but est de minimiser le coût total de production (et livraison). Il va donc
falloir faire apparaître sur notre modèle toutes les étapes de cette production. Pour les
identifier il suffit de suivre le processus industriel :
1. La première étape est l’extraction du minerai.
2. La deuxième étape (optionnelle) est le transport de ce minerai.
3. La troisième étape est le raffinage pour obtenir l’acier.
4. La quatrième étape (optionnelle) est le transport de cet acier.
1Notez que cette façon de penser est aussi celle des problèmes d’ordonnancement.
Mais il y a une grande différence entre les deux. Dans le cas d’un problème
d’ordonnancement, on veut réaliser toutes les actions (éventuellement en parallèle), et
donc parcourir tous les chemins. En fait on cherche quel est le chemin le plus long (le
chemin critique). Par contre, dans la recherche d’un plus court chemin, à chaque
bifurcation, on ne doit faire le choix que d’une seule route : on fait une des actions, mais
pas les autres.
54
5. La cinquième étape est la moulage des pièces.
6. La sixième est dernière étape est la livraison de ces pièces.
Chacune de ces étapes peuvent se faire dans deux lieux différents. Il y aura donc au moins 6 × 2 = 12
arcs différents dans notre modèle (puisque pour le PCCH les longueurs -qui ici représenteront les coûts- se
placent sur les arcs). Il va falloir placer ces arcs en suivant la logique du processus
industriel, pour créer un chemin qui va de l’extraction à la livraison.
Voici le début du brouillon de ce graphe : le processus commence par l’extraction,
mais il y en a deux possibles : une à Issy, l’autre à Lahba. On place ces deux arcs sur le
brouillon :
FIG. 5.2 – Début du brouillon de modélisation
Une fois l’extraction faite, suit une étape (optionnelle) de transport. S’il n’y pas de
transport, il faut enchaîner immédiatement avec le raffinage. Donc l’arc de l’étape de
raffinage doit être placé directement sur le sommet où arrive l’arc d’extraction (pour que
le modèle puisse enchaîner les deux étapes). Ajoutons immédiatement cette étape de
raffinage au brouillon :
FIG. 5.3 – Brouillon : le raffinage
Sur ce brouillon, le premier transport (optionnel) n’a toujours pas été placé. Un
transport doit être placé entre l’extraction à Issy et raffinage à Lahba. L’autre transport
arrive entre l’extraction à Lahba, et raffinage à Issy. Donc, sur notre modèle, pour
pouvoir enchaîner l’extraction à Issy, puis le transport entre Issy et Lahba et enfin le
raffinage à Lahba, il suffit d’ajouter un arc entre «Issy 1» et «Lahba 1», ainsi on aura
bien créer un chemin qui pourra enchaîner les trois étapes. On place aussi l’arc dans
l’autre sens pour le transport dans l’autre sens. On obtient le brouillon suivant :
5
5
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 5.4 – Brouillon : le premier transport
56
Après le raffinage, suit un second transport optionnel, et le moulage. On procède
avec le même raison- nement que précédemment : on fait fait partir le moulage des
sommets où arrive le raffinage, et on place les transports entre «Issy 2» et «Lahba 2». On
obtient le brouillon suivant :
FIG. 5.5 – Brouillon : le moulage + le second transport
Il ne reste plus qu’à faire la livraison. Les chemins en cours convergent donc vers un
même sommet, ce qui donne le brouillon suivant :
FIG. 5.6 – Brouillon : la livraison
Sur ce graphe toutes les étapes sont bien modélisées, mais il ne convient pas à la
modélisation d’un PCCH. En effet, ce graphe a deux points d’entrée («Issy 0» et «Lahba
0»). Or, la recherche d’un plus court chemin se fait à partir d’un point unique (vers tous
les autres points du graphe). Ce n’est pas vraiment un problème : les sommets ne sont là
que pour nous permettent d’enchaîner les étapes. Si on s’aperçoit que deux sommets
différents sont en fait un point de passage unique de deux chemins, il suffit de les réunir
en seul sommet. Donc on remplace «Issy 0» et «Lahba 0» par un sommet unique que l’on
va appeler «Départ». On obtient au final le modèle suivant :
FIG. 5.7 – Modèle final
5
7
Bac III GRH.Techniques Quantitatives de Gestion
Puisque le modèle est achevé, continuons avec le calcul de ce plus court chemin. On
commence par simplifier le graphe en supprimant les sommets n’ayant qu’un arc entrant
et un seul arc sortant. On obtient le graphe simplifié suivant :
FIG. 5.8 – Graphe simplifié avant calcul
On applique Ford-Moore.
m Dépa
rt Issy 1 Lahba 1 Issy 2 Lahba 2 Hayeur Sommets Γ+
0 0 zc∞cz zc∞cz zc∞cz zc∞cz zc∞cz Départ Issy 1, Lahba 1
1 100/Départ
120/Départ zzzsss
Issy 1 Lahba 1
Issy 2, Lahba 1 Issy 1, Lahba
2 2 ..,.,.,
, ,16,0/Lahba..1
s14s0/Issy
zz1
190/Issy 1 ..,.,.,, ,23,0/Lahba..1
zz ss
Issy 2 Lahba 2
Lahba 2, Hayeur Issy 2,
Hayeur 3 ..
,,, ,25,0/L,.ah.ba..2 .,.,.,.,,
220/Issy 2 s28s0/Iszssyzz2
270/Lahba 2
Lahba 2 Hayeur
Issy 2, Hayeur
4 ,250/Lahba..2
270/Lahba 2
L’entreprise devra donc dépenser 270U pour produire et livrer les moulages d’acier.
Pour cela, elle devra extraire minerai et raffiner l’acier à Issy, puis transporter cet acier à
Lahba. Là il sera moulé puis livré à Hayeur.
58
Chapitre 6
Flot Maximal
Introduction
Dans ce chapitre nous allons voir un algorithme qui permet de trouver le flot maximal
entre deux points d’un graphe. De nombreux problèmes de natures très différentes se
modélisent avec ce genre de graphe. En voici juste quelques-uns :
– Des problèmes de logistique : c’est d’ailleurs avec ce domaine d’application que
les militaires ont développé cette technique pour gérer au mieux leur logistique.
Mais la logistique est loin d’être réservée aux militaires !
– Des problèmes d’optimisation de production ou de vente : produire ou vendre en
masse est avant tout un problème de flux. Il faut que le produit aille de la matière
première jusqu’au client en passant par le processus de fabrication. Le flot-max
permettra de trouver la capacité maximale de ce flux et même de trouver où il faut
travailler pour l’améliorer.
– Des problèmes d’échanges financiers : les marchés sont des lieux d’échanges et
donc ils génèrent des flux. Trouver leur limite, c’est rechercher un flot maximal.
Description du problème
Le problème du flot maximal consiste à faire passer un flot optimal à travers un
«réseau de transport». Un réseau de transport est un graphe orienté sans boucle, dont
chaque arc est valué par un nombre repré- sentant sa capacité de transport, c’est à dire le
nombre maximal d’éléments que l’on peut faire transiter par cet axe. On distingue deux
sommets particuliers dans ce graphe : S, la source, et P , le puits. Le problème sera de
trouver la capacité du transit maximal entre la source et le puits. La capacité d’un arc u
sera notée c(u), et le flot attribué à cet arc sera noté ϕ(u). Pour les dessiner on va
adopter quelques notations.
Pour décrire ce graphe de transport, les capacités seules suffisent. Donc on dessinera des graphes avec une seule valeur sur les arcs. Cette valeur correspondra alors à la
capacité de transport de cet arc. Sur l’exemple de la figure 6.1, l’arc A → B permet le passage de 15 éléments au maximum.
FIG. 6.1 – conventions de notation
Lorsque l’on va rechercher le flot-max, en plus de la capacité on va devoir noter le
flot que l’on fait circuler sur l’arc. Cette valeur sera notée avant la capacité avec une
5
9
Bac III GRH.Techniques Quantitatives de Gestion
barre de fraction pour les séparer : flot/capacité. En aucun cas le flot qui traverse un arc
ne peut être supérieur à sa capacité. Sur l’exemple de la figure 6.2, l’arc A → B est traversé par un flot de 9 éléments. Comme sa capacité totale est de 15, on dira que sa capacité résiduelle est de 6 (15 − 9).
Plus tard, lorsqu’on recherchera le flot-max à coût min, il faudra aussi noter le coût unitaire pour le
60
FIG. 6.2 – conventions de notation
transport d’un élément. Cette valeur sera notée sous le couple flot/capacité. Sur
l’exemple de la figure 6.3, l’arc A → B est traversé par un flot de 9 éléments pour un coût unitaire de 50. Donc le coût total de transports pour les 9 éléments qui traversent
l’arc A → B est de 450 (9 × 50) unités.
FIG. 6.3 – conventions de notation
Dans un réseau de transport les éléments qui circulent entrent tous dans le graphe par
un sommet unique appelé la source. Ils doivent tous transiter et sortir par un sommet
unique appelé le puits. Il faut donc vérifier que la totalité du flot qui arrive au puits est
égal à la totalité du flot qui part de la source. De plus les autres sommets (entre la source
et le puits) n’ont pas le droit de faire apparaître ou disparaître le moindre élément. Donc
pour tous les autres sommets on doit vérifier que la somme des flots entrant est égale à la
somme des flots sortant.
Par exemple sur l’extrait de graphe de la figure 6.4, il y a un flot de 2 + 6 + 7 = 15 éléments qui arrivent sur le sommet E. Il y a en bien aussi 15 qui en partent (5 + 10).
FIG. 6.4 – Le flot doit être équilibré sur tous les sommets
Exemple de problème
Pour illustrer ce chapitre, imaginons un exemple :
6
1
Bac III GRH.Techniques Quantitatives de Gestion
Un magasin («M») spécialisé dans les téléphones mobiles a une capacité de vente de
500 appareils par jour . Il se les fait livrer chaque matin à partir de deux entrepôts («E1»
et «E2»). La capacité de livraison à partir de l’entrepôt «E1» vers le magasin est de 400
appareil chaque matin. Pour l’entrepôt «E2» elle est de 300 appareils. Les entrepôts se
font eux-même approvisionner régulièrement : la capacité moyenne des arrivées sur
l’entrepôt «E1» est de 500 appareils par jour. Pour l’entrepôt «E2» elle est de 900. Le
gérant du magasin s’est aperçu que la capacité d’accueil de ses entrepôts dépassait la
capacité de vente de son
62
magasin. Il a donc aussi développé un système de vente directe dans ses entrepôts. La
capacité de vente de l’entrepôt «E1» est de 400 appareils par jour. Celle de l’entrepôt
«E2» de 500 appareils.
Dans ces conditions combien peut-il vendre au maximum d’appareils chaque jour ?
Il faut commencer par modéliser le problème pour obtenir le graphe de transport qui
correspond à cet énoncé. Dans ce graphe de transport, chacune des contraintes (capacité
de vente, de livraison, d’approvi- sionnement) devra apparaître sous la forme d’un et un
seul arc. Ensuite il faudra créer tous les chemins possibles entre les approvisionnements
et ventes.
Au tout début du circuit commercial, il y a les approvisionnements des deux
entrepôts. On va donc commencer à placer ces deux arcs avec leur deux contraintes
(500 appareils pour «E1» et 900 pour «E2»).
FIG. 6.5 – Début de la modélisation
Il y a deux usages possibles des appareils arrivés dans les entrepôts : soit ils sont
vendus directement sur place, soit ils sont livrés au magasin «M». Depuis l’entrepôt
«E1» on peut en vendre 400 et en livrer 400, depuis l’entrepôt «E2» on peut en vendre
500 et en livrer 300.
FIG. 6.6 – Suite de la modélisation
Les appareils arrivés au magasin doivent être vendus. On ajoute donc cette capacité
au graphe (500). Toutes les contraintes seront alors reportées sur le modèle. Mais un
graphe de transport ne doit avoir qu’une seule entrée (la source) et qu’une seule sortie (le
puits). Donc on ajoute un somme «S» pour servir d’origine à tous les arcs en début de
graphe, et un sommet «P» pour servir de destination à tous les arcs en fin de graphe.
6
3
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 6.7 – Fin de la modélisation
L’algorithme de Ford-Fulkerson
Introduction
Une fois la modélisation terminée, il faut utiliser l’algorithme de Ford-Fulkerson pour
trouver le flot maximal du graphe de transport. Cet algorithme se passe en deux phases :
1. Le flot au jugé : on commence par établir un premier flot au jugé le meilleur possible.
64
2. L’amélioration de ce flot jusqu’au flot max : grâce à un algorithme itératif on va
améliorer le flot jusqu’à prouver qu’on ne peut plus faire mieux, et l’on a alors
trouvé le flot maximal.
Flot au jugé, première version
L’algorithme débute sur un graphe avec un premier flot établi. Ce premier flot est
quelconque, il peut même être nul. Mais pour diminuer le nombre d’itérations mieux
vaut essayer de faire passer «au jugé» le meilleur flot possible. L’idéal est d’avoir le flot
maximal dès le départ, car ainsi l’algorithme se terminera très vite !
Le but de cet exemple étant de montrer la technique, le premier flot au jugé que l’on
va placer sur le graphe ne sera pas optimal (on pourra ainsi montrer comment on peut
l’améliorer). Mais plus loin dans cette documentation on reviendra sur une meilleure
façon d’établir un flot au jugé.
Pour ce premier flot, on va commencer par privilégier les ventes en magasin. Pour
cela, on va acheminer un maximum de l’approvisionnent du premier entrepôt vers la
vente en magasin : il y a 500 appareils qui peuvent arriver en «E1», 400 peuvent être
livrés au magasin, et 500 peuvent être vendus. Donc sur cette route, on peut faire passer
au maximum 400 appareils (la plus petite des 3 capacités).
FIG. 6.8 – Début du flot au jugé
Ensuite on va compléter les ventes du magasin avec les approvisionnements de «E2».
Il y a 900 appareils qui peuvent arriver en «E2», 300 peuvent être livrés au magasin,
mais la capacité résiduelle de vente n’est que de 100. Donc on fait passer un flot de 100
appareils par cette route.
FIG. 6.9 – Flot au jugé : suite
Enfin, on va vendre directement aux entrepôts le maximum de ce qui n’a pas pu être
livré au magasin : 100 appareils pour «E1», et 500 appareils pour «E2».
6
5
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 6.10 – Flot au jugé : fin
Il y a 1100 appareils qui partent de la source (et autant qui arrivent au puits, sinon il y aurait un
erreur).
Donc le flot actuel est de 1100 appareils.
Ce n’est pas le flot maximal, et on va le prouver dans la section suivante.
66
L’algorithme de Ford-Fulkerson
L’algorithme de Ford-Fulkerson est un algorithme itératif qui se fait en trois étapes :
Le marquage : il va essayer de trouver un suite d’arcs allant de la source au puits pour
améliorer le flot : cette suite d’arcs sera appelée une «chaîne améliorante».
Le calcul du gain : si on a trouvé une chaîne améliorante, cette étape sert à calculer de
combien on va pouvoir augmenter le flot grâce à cette chaîne.
L’augmentation du flot : il s’agit du report du gain sur la chaîne améliorante que l’on a trouvée.
Tant que le marquage arrive à trouver une chaîne améliorante, on recommence les trois étapes en
boucle.
Algorithme 6.1 (Algorithme de Ford-Fulkerson : étape du marquage)
Cette première étape de l’algorithme consiste à chercher soit un chemin non saturé
allant de source S au puits P , soit une chaîne permettant de dérouter une partie du flot
pour désaturer un arc au profit d’un flot parallèle. Pour cela on va construire «une chaîne
améliorante» allant de S à P . Cette étape peut prouver que cette chaîne n’existe pas, ce
qui signifie que le flot maximal est déjà atteint.
Ce marquage devra déjà respecter trois axiomes de bases :
1. On commence toujours en marquant la source S d’une *.
2. On ne marque jamais une seconde fois un sommet déjà marqué.
3. On ne peut marquer que les sommets voisins des sommets déjà marqués.
Une fois la source marquée, on va essayer de marquer les autres sommets de proche
en proche. On ne peut marquer que les sommets voisins d’un sommet déjà marqué grâce
à deux règles qui dépendent du sens de l’arc.
1. Soit l’arc va du sommet X marqué vers le sommet Y non marqué : si sur cet arc il
reste de la capacité résiduelle (le flot qui passe est inférieur à la capacité de l’arc),
alors on marque le sommet Y avec un «+X» (voir figure 6.11 page 39)
2. Soit l’arc va du sommet Y non marqué vers le sommet X marqué : si sur cet arc il
y a un flot non nul qui circule, alors on marque le sommet Y avec un «−X» (voir figure 6.12 page 39)
FIG. 6.11 – Marquage : première règle
6
7
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 6.12 – Marquage : seconde règle
On essaye ainsi de marquer les sommets de proche en proche jusqu’à marquer le
puits. On s’arrête soit quand on a réussi à marquer le puits P , soit quand aucun nouveau
sommet ne peut être marqué avec une des 2 règles.
68
Si le puits P n’a pas pu être marqué, c’est que le flot est déjà maximal. Sinon, on vient
de trouver une chaîne améliorante. Il faut alors en calculer le gain.
Mais avant de faire le calcul de ce gain, appliquons l’algorithme de marquage
à notre exemple. On commence par marquer la source (S) avec une *.
FIG. 6.13 – Marquage : début
Ensuite comme on ne peut marquer que les sommets voisins des sommets déjà
marqués, seul E1 et E2 peuvent être marqués. Comme les arcs partent de S pour aller vers
ces sommets, on va appliquer la première des deux règles. Sur l’arc S → E1, il ne reste plus de capacité résiduelle (on est à 500 sur 500), il n’est donc pas possible de marquer E1 à cette étape. Par contre sur l’arc S → E2 il reste 300 de capacité résiduelle (on est à 600 sur 900), donc on peut marquer E2 d’un +S.
FIG. 6.14 – Marquage : suite
On ne peut plus rien marquer à partir de S, mais comme E2 est marqué, on peut
tenter de marquer les voisins de E2. Le sommet E2 a trois voisins : S, M , et P . S est
déjà marqué, on ne peut donc pas le remarquer. Pour M , et P les arcs partent de E2, on
applique donc encore la première règle. L’arc E2 → P n’a pas de capacité résiduelle (on est 500 sur 500), il n’est donc pas possible de marquer P pour l’instant (sinon on l’aurait fait immédiatement, puisque marquer le puits permet de finir l’étape du marquage !). Par
contre il reste 200 de capacité résiduelle sur l’arc E2 → M , donc on peut marquer M
avec un +E2.
FIG. 6.15 – Marquage : suite
6
9
Bac III GRH.Techniques Quantitatives de Gestion
On a fini tout ce que l’on pouvez tenter avec E2. On va continuer avec un autre
sommet marqué par encore traité. Il n’y a que M . M a trois voisins : E1, E2 et P . E2 est déjà marqué, donc impossible de le
marquer une seconde fois. L’arc M → P part de M , il faut donc appliquer la première règle. Comme il est saturé (aucune capacité résiduelle), on ne peut pas encore marquer
P . L’arc E1 → M arrive sur M . Donc cette fois on utilise la seconde règle. Comme il y a un flot non nul (il circule 400 mobiles), on peut marquer E1 mais cette fois avec un - :
−M .
On a fini tout ce que l’on pouvait tenter avec M . On passe à E1 qui est maintenant marqué. Il a trois voisins : S, M et P . S et M sont déjà marqués, on ne peut donc pas les
marquer à nouveau. L’arc M → P n’est pas saturé, on peut donc appliquer la première règle, et marquer P avec un +E1. Comme P est
marqué, le marquage est terminé.
70
FIG. 6.16 – Marquage : suite
FIG. 6.17 – Marquage : fin
Algorithme 6.2 (Algorithme de Ford-Fulkerson : étape du calcul du gain)
La marquage de l’étape précédente a trouvé une «chaîne améliorante». Pour trouver le
gain qu’elle per- met il faut commencer par lire cette chaîne. Pour cela on part du puits,
et on remonte la piste du marquage. Utilisons l’exemple pour expliquer cette lecture. P
qui est en bout de chaîne, est marqué part un +E1, donc le sommet qui juste avant lui
dans la chaîne est E1. La chaîne se termine donc par :
E1 −→ P
E1 est marqué de −M . Donc le sommet M précède E1 dans la chaîne, mais attention
comme il y a −, il s’agit d’un arc qui est dans l’autre sens (il va de E1 vers M , comme dessiné sur le graphe). On parle dans
ce cas d’arc inverse. La chaîne se termine donc par :
M ←− E1 −→ P
M est marqué d’un +E2. Donc le sommet qui le précède dans la chaîne est E2 :
E2 −→ M ←− E1 −→ P
Enfin, E2 est marqué avec un +S, donc on a remonté la piste jusqu’à la source, et on a
fini la lecture de la chaîne améliorante :
S −→ E2 −→ M ←− E1 −→ P
Maintenant il faut trouver le gain permis par cette chaîne. Pour cela on va regarder
chaque arc de la chaîne pour appliquer une des deux règles suivantes :
1. Soit il s’agit d’un arc direct (orienté dans le bon sens, gauche vers droite), dans ce
cas on va indiquer la capacité résiduelle de l’arc.
7
1
Bac III GRH.Techniques Quantitatives de Gestion
2. Soit il s’agit d’un arc inverse (orienté dans le sens droite vers gauche), dans ce cas
on va indiquer le flot qui circule sur l’arc.
Pour notre exemple il y 3 arcs directs : S → E2 avec 300 de capacité résiduelle, E2
→ M avec 200 de capacité résiduelle, et E1 → P avec 300 de capacité résiduelle. Il y a
1 seul arc inverse M ← E1 avec 400 de flot.
900 − 600 = 300 300 − 100 = 200 400 400 − 100 = 300 S −→ E2 −→ M ←− E1 −→ P
72
Le gain que permet la chaîne améliorante est la plus petite des valeurs que l’on a placées sur les
arcs.
Donc ici le gain de notre chaîne est de 200 appareils.
Une fois ce gain évalué, il faut le reporter sur le flot du graphe.
Algorithme 6.3 (Algorithme de Ford-Fulkerson : étape de l’augmentation du flot)
Maintenant que l’on connaît la valeur du gain, il suffit de reparcourir sur le graphe la
chaîne améliorante que l’on a trouvée, mais cette fois ci, en ajoutant le flot aux arcs
directs, et en le retirant sur les arcs inverses.
Donc pour notre exemple, on ajoute 200 sur les arcs S → E2, E2 → M et E1 → P , et on retire
200 sur l’arc M ← E1. On obtient ce nouveau flot :
FIG. 6.18 – Report du gain sur la chaîne
On vérifie que le nouveau flot obtenu (la somme de tout ce qui part de la source ou de
tout ce qui arrive au puits) est passé à 1 300 (on a donc bien un gain de 200 par rapport
au 1 100 d’avant), et que tous les sommets ont toujours un flot équilibré (pour tous les
sommets, il y a toujours autant d’appareils qui arrivent que d’appareils qui en partent).
Fin de l’exemple
Lors de l’étape du marquage, le puits a été marqué, on a donc prouvé que le flot de 1
100 n’était pas le flot max, mais qu’il pouvait être amélioré. On vient de le passer à 1
300. Ce n’est peut-être pas encore le flot max. La seule façon de le savoir consiste à
recommencer l’algorithme de marquage pour voir si on peut encore ou non améliorer ce
flot.
7
3
Bac III GRH.Techniques Quantitatives de Gestion
On commence par marquer la source :
FIG. 6.19 – Début du marquage
Deux arcs partent de la source, mais un seul n’est pas saturé. Donc à partir de la
source, seul E2 peut être marqué :
FIG. 6.20 – Suite et fin du marquage
On a fini les marquage possible à partir de la source, on passe à E2 le seul autre
sommet marqué. Il a 3 voisins. S est déjà marqué, et les deux arcs qui partent vers M
et P sont saturés. Il n’y a donc pas de marquage supplémentaire possible.
L’algorithme s’arrête là. Comme on n’a pas pu marquer le puits, la valeur du flot qui
circule sur ce graphe (1 300 appareils) est le flot maximal.
Flot au jugé, seconde version
Le flot au jugé que l’on a placé sur le graphe pour l’exemple du cours n’a pas permis
d’obtenir le flot maximal d’entrée. Sur les graphes complexes, il est d’ailleurs difficile
de le faire, mais sur un graphe simple, en procédant de façon méthodique, on arrive
souvent à obtenir le flot max dès le flot au jugé (mais attention, on n’a jamais la garantie
qu’un flôt établi au jugé est maximal, vous devrez donc toujours en faire la preuve avec le
marquage de l’algorithme de Ford-Fulkerson). Cela raccourcit beaucoup la recherche du
flot maximal, puisque dès le premier marquage l’algorithme se termine.
Comment doit-on procéder pour établir ce flot au jugé. On part avec un flot nul, et
ensuite il faut balayer le graphe de haut en bas (ou de bas en haut), en saturant un à un
tous les chemins que l’on trouve de la source au puits.
Reprenons l’exemple du cours. Le premier chemin que l’on va saturer est celui qui
passe tout en haut du graphe : S → E1 → P .
74
FIG. 6.21 – Flot au jugé : début
Ce chemin permet de faire passer 400 appareil. On ajoute ces 400 sur le graphe et on raye (sur cette
7
5
Bac III GRH.Techniques Quantitatives de Gestion
documentation, on passe en pointillé) les arcs qui sont saturés. On recommence en
saturant le chemin du haut du graphe : S → E1 → M → P .
FIG. 6.22 – Flot au jugé : suite
Ce chemin permet de faire passer 100 appareils (la capacité résiduel de l’arc S → E1). On ajoute ces 100 sur le graphe et on raye les arcs qui sont saturés. On recommence en saturant le chemin du haut du graphe non rayé :
FIG. 6.23 – Flot au jugé : suite
Ce chemin permet de faire passer 300 appareils. On ajoute ces 300 sur le graphe et
on raye les arcs qui sont saturés. On recommence en saturant le seul chemin non rayé
qui reste :
FIG. 6.24 – Flot au jugé : suite
Ce chemin permet de faire passer 500 appareils. On ajoute ces 500 sur le graphe et
on raye les arcs qui sont saturés. Il n’y a alors plus aucun chemin non rayé qui va de la
source au puits. On a fini le flot jugé.
76
FIG. 6.25 – Flot au jugé : fin
Ce flot au jugé est de 1 300 appareils, le flot maximal. On a donc réussi à l’établir dès le
flot au jugé. Mais attention, cette méthode n’est pas certaine d’arriver au flot maximal ! Il
faut donc appliquer l’algorithme de marquage pour le prouver !
De plus, vous noterez que même si la valeur du flot maximal est la même (1 300 appareils), le flot lui même n’est pas identique à la solution de la section précédente. Par
exemple dans cette solution on vend
7
7
Bac III GRH.Techniques Quantitatives de Gestion
400 appareils dans le magasin, alors que dans la solution précédente on en vendait 500.
Il y a souvent plusieurs flots différents qui permettent d’obtenir le flot maximal ! C’est
pour cela que lorsqu’on ajoute la dimension supplémentaire de coût unitaire pour
chaque élément qui est transporté, il est pertinent de chercher parmi tous les flots-max,
lequel a un coût minimal ! Cela va être le sujet d’une autre section de cette
documentation.
Coupe minimale
Mais avant d’aborder la recherche du flot maximal à coût minimal, on va se poser
une autre question : sur quelle contrainte doit-on agir pour améliorer le flot maximal ?
Pour illustrer ce problème, on va poser la question vue du manager du magasin de
mobiles : sur quelles capacités doit-il agir pour réussir à vendre plus d’appareils ?
Commençons par regarder le graphe du marquage qui nous a prouvé le flot-maximal :
FIG. 6.26 – Flot maximal avec marquage
Sur ce graphe il y a des arcs saturés, et d’autres qui ne le sont pas.
Une chose est déjà évidente, il ne sert à rien d’augmenter la capacité des arcs qui ne sont pas saturés. Par exemple, si le manager décide d’augmenter la capacité de vente
directe de l’entrepôt E1 (l’arc E1 → P ), cela ne va pas améliorer sa capacité de vente globale. En effet, il n’y a déjà que 300 appareils vendus sur une capacité de 400, donc cette capacité n’est déjà pas utilisée à fond.
Mais ce n’est parce qu’un arc est saturé qu’il est forcement intéressant d’augmenter sa capacité pour améliorer le flot. Par exemple la capacité de vente du magasin est
saturée (l’arc M → P , 500 sur 500). Pourtant si le manager décide d’augmenter cette capacité, il n’arrivera pas à vendre un appareil de plus.
Où est le blocage ? Où faut-il travailler pour réussir à augmenter la capacité de vente
? Cette question revient à chercher ce qu’on appelle une «coupe minimale» du graphe.
Cette coupe représente tous les arcs qui limitent la capacité d’un graphe de transport. En
fait, notre algorithme a déjà trouvé cette coupe. Il suffit de mettre dans un ensemble tous
les sommets marqués du graphe du flot maximal (voir le graphe 6.27 page 45).
78
FIG. 6.27 – Coupe minimale du graphe
Ensuite on met en valeur tous les arcs qui sortent de cet ensemble (ils sont
obligatoirement saturés, sinon l’algorithme de marquage n’était pas fini). Ces arcs
forment une coupe minimale du graphe. Si on veut améliorer la capacité de ce graphe, il
faut forcément améliorer au moins un de ces arcs !
Donc si le manager veut améliorer sa capacité de vente il doit au minimum : – soit améliorer la capacité d’approvisionnement de son entrepôt E1 (l’arc S → E1). – soit améliorer la capacité de livraison de son entrepôt E2 vers son magasin (l’arc E2 → M ).
7
9
Bac III GRH.Techniques Quantitatives de Gestion
– soit améliorer la capacité de vente directe de l’entrepôt E2 (l’arc E2 → P ). Tant qu’il n’aura pas travaillé sur un de ces points, il n’a aucune chance d’améliorer ses ventes.
Maintenant, même si ce n’est pas le sujet de ce cours, ni le cas de notre exemple, il
faut savoir qu’une coupe minimale d’un graphe n’est pas forcement unique, et donc
lorsqu’on améliore la capacité de la coupe minimale que l’on a trouvée avec l’algorithme
de marquage, une autre, un peu plus loin peut engendrer un blocage, et la capacité
globale ne sera pas augmentée pour autant. Dans un cas comme celui-ci, il suffit de
refaire l’algorithme de marquage après amélioration, on trouvera alors les nouveaux
points de blocage sur lesquels il faut travailler pour améliorer la capacité du graphe.
80
Deuxième partie
Programmation linéaire
Bac III GRH.Techniques Quantitatives de Gestion
49
Bac III GRH.Techniques Quantitatives de Gestion
Chapitre 7
La programmation linéaire
Introduction
Un des problèmes le plus classique en gestion consiste à optimiser un gain, un coût,
ou toutes autres valeurs fonctions de nombreux paramètres. De plus ces paramètres ne
peuvent généralement pas être fixés à volonté, mais sont soumis à des contraintes.
La valeur à optimiser et les contraintes sont très souvent des fonctions linéaires des
paramètres. Il existe alors diverses techniques pour résoudre ce problème. Nous allons
présenter deux d’entre elles : la méthode géométrique et le simplexe.
La forme canonique
L’objectif de la programmation linéaire est de trouver la valeur optimale d’une
fonction linéaire sous contraintes linéaires. La fonction à optimiser est baptisée fonction
coût ou fonction économique. On la nomme généralement Z.
Un problème de programmation linéaire se modélise de la façon suivante :
Soit la fonction économique Z que l’on souhaite optimiser (maximiser ou minimiser).
Z = C1 × X1 + C2 × X2 + ... + Cn × Xn
où les Xi sont des variables qui influent sur la valeur de Z, et les Ci les poids
respectifs de ces variables modélisant l’importance relative de chacune de ces variables
sur la valeur de la fonction économique.
Les contraintes relatives aux variables s’expriment de la façon suivante :
A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn ≤ B1 A2.1 × X1 + A2.2 × X2 + . . . + A2.n × Xn ≥ B2
.
Am.1 × X1 + Am.2 × X2 + . . . + Am.n × Xn ≤ Bm
avec Xi ≥ 0 ∀i
Le modèle ci-dessus contient des contraintes de type «≤» et d’autres de type «≥». Cependant lorsqu’on voudra résoudre un problème, la première étape consistera à le modéliser sous une forme dite «canonique». Pour un problème de maximisation la forme
canonique se décrit qu’avec des contraintes de type «≤» et pour un problème de
minimisation la forme canonique se décrit qu’avec des contraintes de type «≥». Si lors de la modélisation des contraintes de l’autre type sont apparues, il suffit de multiplier
par −1 les deux membres pour renverser l’opérateur.
50 Eric LALLET, Jean-Luc RAFFY
m.1 1 m.2 2 m.n n m
m.1 1 m.2 2 m.n n m
La forme canonique d’un problème de type maximisation est :
Trouver la valeur maximale de Z pour :
Z = C1 × X1 + C2 × X2 + ... + Cn × Xn A × X + A × X + . . . + A × X ≤ B
1.1 1 1.2
2
1.n n 1
A2.1 × X1 + A2.2 × X2 + . . . + A2.n × Xn ≤ B2
. A × X + A × X + . . . + A × X ≤ B
avec Xi ≥ 0 ∀i
La forme canonique d’un problème de type
minimisation est : Trouver la valeur minimale de Z pour
: Z = C1 × X1 + C2 × X2 + ... + Cn × Xn A × X + A × X + . . . + A × X ≥ B
1.1 1 1.2
2
1.n n 1
A2.1 × X1 + A2.2 × X2 + . . . + A2.n × Xn ≥ B2
. A × X + A × X + . . . + A × X ≥ B
avec Xi ≥ 0 ∀i
Nous allons dans un premier temps nous intéresser au problème de type maximisation
Exemple
Pour illustrer les deux prochains chapitres nous allons modéliser jusqu’à la forme canonique un
exemple :
Un atelier d’ébénisterie a obtenu un contrat de sous-traitance de meubles pour deux
modèles de bi- bliothèques. Ces deux modèles utilisent du chêne et du hêtre pour être
fabriqués. Le modèle «petit chêne» utilise 2 stères de chêne et 4 stères de hêtre. Le
modèle «grand hêtre» utilise 8 stères de hêtre et 1 stère de chêne. La construction des 2
modèles nécessite 10 heures de travail chacun. La marge obtenu sur le modèle «petit chêne» est de 600 euros, et celle sur le modèle «grand hêtre» de 400 euros.
Sachant que cet atelier dispose chaque année d’un stock de 8.000 stères de hêtre et
2.000 stères de chêne, et qu’il peut fournir 12.500 heures de travail, quelle quantité de
chaque modèle doit-il produire pour optimiser sa marge ?
La première étape du problème est la modélisation.
Il faut en général commencer par trouver la fonction économique. Cela permet de définir les variables du problème. Pour notre exemple, en appelant M1 le nombre de modèles «petit chêne» et M2 le nombre de modèles «grand hêtre» fabriqués, la marge
dégagée par l’atelier sera de 600 × M1 + 400 × M2 euros. Donc la fonction économique à maximiser est :
Z = 600 × M1 + 400 × M2 (unité : euro)
51
Bac III GRH.Techniques Quantitatives de Gestion
.
Mais l’atelier ne peut pas produire à l’infini ces deux modèles. Il est limité par ses stocks de bois et
son
volume horaire de travail. Le stock de chêne est de 2.000 stères, il en faut 2 pour le
modèle M1 et 1 pour le modèle M2. Donc on obtient la contrainte suivante :
2 × M1 + M2 ≤ 2000
Avec le même raisonnement sur les stères de hêtre il faut respecter la contrainte :
4 × M1 + 8 × M2 ≤ 8000
Enfin, il faut 10 heures de travail pour chaque meuble, et l’atelier en dispose de 12.500, donc :
10 × M1 + 10 × M2 ≤ 12500
52 Eric LALLET, Jean-Luc RAFFY
Donc en résumé on obtient le modèle suivant :
Z = 600 × M1 + 400 × M2
2 × M1 + M2 ≤ 2000 4 × M1 + 8 × M2 ≤ 8000
avec
10 × M1 + 10 × M2 ≤ 12500 M1 ≥ 0 et M2 ≥ 0
53
Bac III GRH.Techniques Quantitatives de Gestion
54 Eric LALLET, Jean-Luc RAFFY
Chapitre 8
La méthode géométrique
Introduction
Dans ce chapitre nous allons décrire la méthode géométrique. Pour les cas simples
(c’est à dire, géné- ralement pas plus de deux variables une fois le modèle simplifié), sa
mise en œuvre est très facile et rapide. De plus elle permettra plus tard dans ce cours
d’illustrer le comportement des autres méthodes, et ainsi de donner une compréhension
intuitive des algorithmes.
La méthode
La méthode géométrique consiste à matérialiser dans un espace à n (le nombre de
variables de la fonc- tion économique) dimensions les contraintes sur les variables.
Ensuite on représente dans cet espace la fonction économique, et on essaie de faire
monter «Z» jusqu’au maximum possible tout en restant dans l’espace limité par les
contraintes.
Cette méthode s’applique facilement lorsque le nombre de dimensions est réduit, car
dans ce cas la représentation géométrique est facile, mais dès que ce nombre est
important (plus de 3), cette méthode n’est plus envisageable.
L’exemple de la section précédente utilise 2 variables. On peut donc l’appliquer. Notre espace est juste un plan. On va mettre sur l’axe x (horizontal) la variable M1 est
sur l’axe y (vertical) la variable M2. Comme on sait que l’on doit avoir M1 ≥ 0 et M2 ≥ 0, la solution de notre problème se trouve dans le premier quadrant (le quart haut droit) de notre espace (voir figure 8.1.)
Il faut maintenant mettre en place les trois autres contraintes. Pour indiquer que 2 × M1 + M2 ≤ 2000, il faut tracer la droite 2 × M1 + M2 = 2000 et supprimer de l’espace de solution tout ce qui se trouve au dessus. On fait de même pour les deux
autres contraintes (droites 4 × M1 + 8 × M2 = 8000 et 10 × M1 + 10 × M2 = 12500). On obtient le schéma de la figure 8.2.
Maintenant que l’on a cerné l’espace des possibilités, il faut trouver le (ou les) point(s) qui nous donne(nt) la plus grande valeur pour la fonction économique Z =
600 × M1 + 400 × M2. Pour cela on va commencer par dessiner la droite avec Z = 0, et on va faire glisser cette droite jusqu’à faire monter
Z au maximum tout en restant dans l’espace de solution. Quand on aura atteint ce
maximum, le (ou les) point(s) commun(s) à la droite et l’espace des solutions sera notre
optimum (voir figure 8.3).
Il reste alors à interpréter le résultat. Sur le schéma, lorsqu’on a fait monter Z,
55
Bac III GRH.Techniques Quantitatives de Gestion
l’ultime point commun entre Z et l’espace des solutions admissibles était pour M1 = 750 et M2 = 500. Donc la solution qui apporte la plus grande marge possible à notre
atelier consiste à construire 750 bibliothèques «petit chêne» et 500 bibliothèques
«grand hêtre». Sa marge sera alors de 750 × 600 + 500 × 400 = 650.000 euros.
56 Eric LALLET, Jean-Luc RAFFY
FIG. 8.1 – Espace possible pour M1 et M2 positifs
FIG. 8.2 – Espace des «solutions admissibles» après prise en compte des contraintes
Conclusion
Très simple à utiliser cette méthode atteint vite ses limites pour des problèmes
correspondant aux cas réels. En dehors des cas d’école, il est rare de pouvoir construire
une modèle avec seulement deux variables. Et quand ce n’est pas le cas, il faut alors
utiliser d’autres méthodes. Le chapitre suivant présente une des méthodes les plus
57
Bac III GRH.Techniques Quantitatives de Gestion
utilisées, car très performante : le simplexe.
58 Eric LALLET, Jean-Luc RAFFY
FIG. 8.3 – Recherche du Z optimum
59
Bac III GRH.Techniques Quantitatives de Gestion
60 Eric LALLET, Jean-Luc RAFFY
Chapitre 9
Le simplexe
Introduction
Le méthode du simplexe a été mise au point par Georges Dantzig dans les années
1950. Elle implémente une heuristique qui permet dans une très grande majorité des cas
d’atteindre l’optimum du problème très rapidement. Son principe consiste à parcourir un
chemin sur les frontières du domaine des solutions ad- missibles, en s’approchant à
chaque étape un peu plus de l’optimum. L’heuristique essaye de trouver parmi tous les
chemins un qui soit très court.
La forme standard et son tableau associé
L’algorithme du simplexe sert à résoudre un problème de programmation linéaire de
type maximisation qui s’exprime sous la forme canonique suivante :
Il faut trouver le maximum d’une fonction économique Z exprimée par :
Z = C1 × X1 + C2 × X2 + ... + Cn × Xn
en respectant les contraintes : A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn ≤ B1
A2.1
. .
× X1
+ A2.2
× X2
+ . . . + A2.n
× Xn
≤ B2
A × X + A
× X + . . . + A
× X ≤ B m.1 1 m.2 2 m.n n m
Xj ≥ 0 ∀j
Pour résoudre ce problème, on va commencer par transformer les inégalités en égalités en introduisant une variable «d’écart» positive ou nulle pour chacune des contraintes. Par exemple avec une nouvelle va- riable E1, on peut transformer
l’inégalité A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn ≤ B1 pour la faire devenir l’égalité A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn + E1 = B1.
Avec les m variables d’écart, notre problème devient :
Avec Xj ≥ 0 ∀j et Ei ≥ 0 ∀i, trouver le maximum de Z pour : A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn + E1 = B1
A2.1
. .
× X1
+ A2.2
× X2
+ . . . + A2.n
× Xn
+ E2
= B2
A × X + A
× X + . . . + A
× X + E = B m.1 1 m.2 2 m.n n m m
C1 × X1 + C2 × X2 + ... + Cn × Xn = Z
61
Bac III GRH.Techniques Quantitatives de Gestion
Ceci est la forme standard du problème.
62 Eric LALLET, Jean-Luc RAFFY
Avant de mettre en œuvre l’algorithme du simplexe on transforme ces équations sous
la forme d’un tableau qui aura n + m + 2 colonnes, et m + 2 lignes : – La première ligne contiendra le nom de nos colonnes. – Il y aura une ligne pour chacune des équations 1 à m.
– La dernière ligne sert pour la fonction économique.
– La première colonne sert à connaître ce qu’on va appeler les «variables en base».
Au début on y placera la variable d’écart Ei de la ligne. Les variables qui ne
seront pas dans cette colonne seront
«hors base».
– Ensuite on place n colonnes, une pour chaque variable Xj.
– Ensuite on place m colonnes, une pour chaque variable Ei. – Enfin on place une dernière colonne qui contiendra la somme de chaque ligne (Bi).
– Enfin la valeur «Somme» de la ligne ∆j est initialisée avec 0 (sauf exception
expliquée plus loin). Donc le tableau obtenu est le suivant :
X1 X2 . . . Xn E1 E2
. . .
Em
Somme
E1 A1.1
A1.2
. . . A1,n
1 0 0 0 B1
E2 A2.1
A2.2
. . . A2,n
0 1 0 0 B2
.
Em
Am.1
Am.2
. . . Am,n
0 0 0 1 Bm
∆j C1 C2 . . . Cn 0 0 0 0 0
Avant d’aller plus loin, décryptons le sens de ce tableau. Tout le long de l’algorithme
du simplexe ce tableau va donner des solutions (de plus en plus optimales pour la
valeur de Z) du système d’équations de la forme standard. Dans cette solution toutes les
variables hors base ont une valeur nulle. La valeur des variables en base se lit dans la
dernière colonne (la colonne «Somme»). Enfin le ∆j de la colonne «Somme» donne
l’opposé de la valeur de Z. Donc ce premier tableau du simplexe donne la solution de
départ qui va servir à amorcer l’algorithme du simplexe : toutes les variables Xi sont à
0, toutes les variables d’écart Ei valent le Bi de leur ligne d’équation et la valeur de Z
est 01.
Sur ce tableau la dernière ligne (∆j) donne les gains (ou les coûts, si la valeur est
négative) marginaux des variables de leur colonne. Autrement dit, elle permet de savoir
de combien va augmenter (ou diminuer si la valeur est négative) la valeur de Z si on
augmente de 1 la variable de cette colonne. Par exemple, si on arrive à trouver une
solution admissible qui augmente de 1 la valeur de X2, alors la valeur de Z va augmenter
de C2.
Revenons à l’exemple de l’atelier d’ébénisterie de la section 7.3, et construisons son
tableau pour le simplexe :
Z = 600 × M1 + 400 × M2 (unité : euro)
2 × M1 + M2 ≤ 2000
avec 4 × M1 + 8 × M2 ≤ 8000
10 × M1 + 10 × M2 ≤ 12500
63
Bac III GRH.Techniques Quantitatives de Gestion
M1 ≥ 0 et M2 ≥ 0
Mis sous la forme standard, avec l’ajout de 3 variables d’écarts E1, E2 et E3 telles que :
– E1 désigne le nombre de stères de chêne qui restent sans usage pour la solution courante.
– E2 désigne le nombre de stères de hêtre qui restent sans usage pour la solution courante.
– E3 désigne le nombre d’heures de travail qui restent sans usage pour la solution courante.
1Certains problèmes donnent un modèle où cette solution de départ n’est pas
admissible car certains Bi sont négatifs. Il faut alors trouver un autre point de départ. Il faut alors utiliser le méthode «générale du simplexe» qui n’est pas exposée dans ce cours. D’autre part, dans certains cas, la valeur de Z de la solution initiale n’est pas nulle, il faut alors mettre l’opposé de cette valeur dans le ∆j de la colonne «Somme».
64 Eric LALLET, Jean-Luc RAFFY
2 × M1 + M2
+ E1 = 2000
4 × M1 + 8 × M2 + E2 = 8000 10 × M1 + 10 ×
M2 + E3 = 1250
0 600 ×
M1 + 400 ×
M2 = Z
Ce qui donne le tableau :
M1 M2 E1 E2 E3
Somme
E1 2 1 1 0 0 2000 E2 4 8 0 1 0 8000 E3 10 10 0 0 1 12500 ∆j 600 400 0 0 0 0
L’algorithme du simplexe
Pour décrire cet algorithme, on va noter le tableau du simplexe sous la forme suivante2 :
x1 x2 . . . xj . . . xp Somme
y1 a1,1
a1,2
. . . a1,j
. . . a1,p
SM1
.
yi ai,1
ai,2
. . . ai,j . . . ai,p
SMi
.
ym
am,1
am,2
. . . am,j
. . . am,p
SMm
∆ ∆1 ∆2 . . . ∆j . . . ∆p Res
Dans ce tableau la colonne des variables yi est appelé la base. Au cours de
l’algorithme certaines va- riables xi vont pivoter et vont venir se mettre en base. Au
tout début de l’algorithme les variables de base sont les m variables d’écart.
L’algorithme du simplexe est un algorithme itératif qui à chaque tour va trouver une
nouvelle solution qui augmente la valeur de Z jusqu’à ce qu’on ne puisse plus
l’améliorer. Chaque tour de cet algorithme se passe en deux grandes étapes.
– La recherche du pivot (grâce à une heuristique qui permet généralement de
converger rapidement vers la solution) – La mise en base de la variable du pivot, et le calcul du nouveau tableau
Algorithme 9.1 (Algorithme du simplexe)
1. La recherche du pivot :
a) Premier critère de Dantzig :
On a vu que la dernière ligne donnait le gain marginal des variables. Comme le but
est d’augmenter la valeur de Z et d’arriver le plus vite possible à la solution
optimale, on va choisir la variable qui a le plus grand gain.
Ainsi le pivot se trouve sur la colonne j qui a le ∆j strictement positif le plus grand.
b) Second critère de Dantzig : Le premier critère nous a indiqué la variable qui
65
Bac III GRH.Techniques Quantitatives de Gestion
allait passer en base. Le second critère sert à indiquer la variable qui va sortir de
la base (et donc passer à 0) pour augmenter le plus possible la variable choisie
tout en gardant une solution admissible pour le système d’équations.
Le pivot se trouve sur la ligne i qui un ai,j strictement positif et le rapport SMi/ai,j le plus
petit.
2Dans ce tableau il y a p=n+m variables x : les n variables de la fonction économique, plus les m variables d’écart
66 Eric LALLET, Jean-Luc RAFFY
k
2. Le pivotement : soit ai,j le pivot trouvé à l’étape 1.
a) Mise en base de xj
Lors du pivotement, la variables yi de la base est remplacée par xj.
b) Modification de la ligne du
pivot : On divise la ligne
par le pivot. Pour l allant de
1 à p faire :
Notez que le pivot passe
donc à 1.
c) Modification des autres
lignes
′ i,l
← ai,l ai,j
On soustrait à toutes les lignes k, avec k ƒ= i la ligne du pivot proportionnellement à ak,j/ai,j :
SM ′ ← SMk − (SMi × ak,j)
ai,j
Pour l allant de 1 à p faire :
Res′ ← Res − (SMi × ∆j ) ai,j
′ k,l ←
ak,l
− (ai,l × ak,j)
ai,j
∆′ ← ∆ − (ai,l × ∆j)
l l ai,j
Notez que sur la colonne du pivot, mis à part le pivot lui même, toutes les
valeurs sont passées à 0.
3. La boucle
Si après le nouveau calcul il existe encore un ∆j strictement positif, on peut
encore augmenter Z : retournez à l’étape 1.
Pour simplifier la description de l’étape «2c» de l’algorithme, il y une formule qui
fonctionne pour toutes les valeurs qui ne sont pas sur la ligne du pivot (même sur la
colonne «Somme» ou sur la ligne «∆j») :
On recherche v′, la nouvelle valeur de v. Soit p le pivot, x et y les valeurs qui sont à
l’intersection des lignes et colonnes de v et du pivot, alors : v′ = v − x × y/p
p . . .
x
.
.
y . . .
v′ = v − x × y/p
a
a
67
Bac III GRH.Techniques Quantitatives de Gestion
Interprétation du tableau final
À la fin de l’algorithme, le tableau du simplexe continue à se lire de la même manière.
Ainsi les solutions du problème d’origine se lisent directement dans ce tableau.
Les valeurs des variables Xj passées en base à la place de Ei se lisent dans la colonne
«Somme» : SMi.
Les variables Xj qui ne sont pas passées en base sont nulles.
La valeur optimale de Z est l’opposé de la valeur de «Res».
Les valeurs des variables d’écart qui ont quitté la base sont nulles.
Les variables d’écart Ei qui sont toujours en base indiquent qu’une contrainte n’a pas
atteint son maxi- mum. La valeur de cette variable d’écart se lit dans la colonne
«Somme» : SMi.
68 Eric LALLET, Jean-Luc RAFFY
Si à la fin de l’algorithme il y a des variables hors base avec un ∆j nul, alors il existe
d’autres solutions optimales (une infinité en fait). Vous pouvez faire un pivotement de
plus en choisissant la colonne d’une de ces variables pour trouver la solution optimale
qui privilégie cette valeur.
Si alors qu’il reste des ∆j strictement positifs, il n’est plus possible de trouver un
pivot strictement positif sur leur colonne, alors la fonction économique n’est pas bornée.
Il existe des solutions qui permettent de monter sa valeur à l’infini . Mais dans le cadre
de modèles de gestion, il est peu probable que vous puissiez dégager des bénéfices
infinis. Ce diagnostic cache dont très certainement un problème dans votre modélisation
(probablement des contraintes oubliées).
Exemple
Reprenons l’exemple de l’ébénisterie. On avait déjà
construit le tableau du simplexe suivant. Il correspond à
une première solution (non optimale pour Z) du système
d’équations : M1 = 0 et M2 = 0.
M1 M2 E1
E2
E3
Somme
E1 2 1 1 0 0 2000 E2 4 8 0 1 0 8000 E3 10 10 0 0 1 12500 ∆j 600 400 0 0 0 0
Il y a des ∆j strictement positifs : on peut trouver une meilleure
solution. Faisons la première itération :
1. a) Le premier critère de Dantzig (le plus grand ∆j) permet de sélectionner la
colonne de M1 pour le pivot.
b) Le second critère de Dantzig (le plus petit SMi/ai, j) permet de sélectionner la
ligne de E1 pour le pivot.
M2
E1
E2
E3
Somme M1
E1 2 1 1 0 0 2000
E2 4 8 0 1 0 8000
E3 10 10 0 0 1 12500
∆j 600
400 0 0 0 0
2. a) La variable M1 passe en base à la place de E1.
b) La ligne du pivot est divisée par 2.
c) on retire à la ligne de E2 4/2 = 2 fois la ligne
du pivot. on retire à la ligne de E3 10/2 = 5
fois la ligne du pivot.
69
Bac III GRH.Techniques Quantitatives de Gestion
on retire à la ligne des ∆j 600/2 = 300 fois la ligne du pivot.
On obtient un nouveau tableau du simplexe. Son
interprétation correspond à la solution M1 = 1000 et M2
= 0.
M1
M2 E1 E2
E3
Somme
M1
1 1/2 1/2 0 0 1000
E2 0 6 -2 1 0 4000 E3 0 5 -5 0 1 2500 ∆j 0 10
0 -
300 0 0 -
600000
70 Eric LALLET, Jean-Luc RAFFY
3. Il reste un ∆j strictement positif. On peut encore améliorer la valeur de Z. Donc on
fait une autre itération.
Seconde itération :
1. a) Le premier critère de Dantzig permet de sélectionner la colonne de M2 pour le pivot.
b) Le second critère de Dantzig permet de sélectionner la ligne de E3 pour le pivot.
M1
E1
E2
E3
Somme M2 M1 1 1/2 1/2 0 0 1000
E2 0 6 -2 1 0 4000
E3 0 5 -5 0 1 2500
∆j 0 10
0 -300 0 0 -600000
2. (a) La variable M2 passe en base à la place de E3
(b) La ligne du pivot est divisée par 5
(c) On retire à la ligne de M1 (1/2)/5 = 1/10 fois la
ligne du pivot. On retire à la ligne de E2 (6/5) fois
la ligne du pivot.
On retire à la ligne des ∆j 100/5 = 20 fois la ligne du pivot.
On obtient un nouveau tableau du simplexe. Son
interprétation correspond à la solution M1 = 750 et M2 = 500.
M1
M2
E1 E2 E3 Somme
M1
1 0 1 0 -1/10
750
E2 0 0 4 1 6/5 1000 M2
0 1 -1 0 1/5 500
∆j 0 0 -200 0 -20 -65000
0
3. Il ne reste plus aucun ∆j strictement positif. La solution est optimale. L’algorithme s’arrête ici.
Il nous reste à interpréter le tableau final.
– La somme au bout de la ligne de M1 est 750 : il faut construire 750 bibliothèques M1 («petit
chêne»).
– La somme au bout de la ligne de M2 est 500 : il faut construire 500 bibliothèques M2 («grand
hêtre»).
– La valeur de Res est -650000 : le Z optimal est de 650000, qui sera (en euros) la
marge dégagée par la vente des bibliothèques construites.
– La variable d’écart E2 est toujours en base. La valeur dans sa colonne somme est
71
Bac III GRH.Techniques Quantitatives de Gestion
1000. Donc pour la solution optimale E2 = 1000. E2 est la variable d’écart qui donne le nombre de stères de hêtre non utilisés. Donc la solution optimale du
problème laisse 1000 stères de hêtre sans usage.
Trois nombres restent à interpréter. Les valeurs des ∆j pour les colonnes des
variables d’écart. Ce sont les «coûts marginaux». Elles indiquent combien on pourrait
dégager de marge en plus si on augmentait nos stocks de chêne, de hêtre et d’heures de
travail (ou au contraire à quel prix minimum il faudrait vendre ce stock pour qu’il
rapporte au moins autant que la production faite avec).
– La valeur marginale pour E1 est -200. Et E1 est la variable d’écart qui désigne les
stères de chêne non-utilisés. Cela signifie qu’augmenter de 1 E1, c’est à dire de
laisser sans usage 1 stère de chêne, coûterait 200 Euros. Et au contraire, disposer
de 1 stère de chêne de plus permettrait de gagner 200 euros supplémentaires. Donc
si le stère de chêne coûte moins de 200 euros, il sera intéressant d’en acheter pour
produire plus, et s’il coûte plus de 200 euros, il vaudra mieux vendre notre stock plutôt que de produire avec.
– La valeur marginale pour E2 est 0. Cela signifie qu’acheter du hêtre en plus ne
rapporterait rien. Ce qui est logique puisqu’on vient de voir que l’on n’avait déjà
pas épuisé notre propre stock. Et donc on peut vendre ce sur-stock à n’importe quel
prix sans perdre d’argent.
72 Eric LALLET, Jean-Luc RAFFY
.,.,.,
– La valeur marginale pour E3 est -20. E3 est la variable qui sert à désigner le nombre
d’heures de travail non utilisées. Ainsi augmenter le nombre d’heures de travail de
1, permet de gagner 20 euros de plus. Donc l’entreprise n’a intérêt à augmenter le
nombre d’heures de travail que si cela ne lui coûte pas plus de 20 euros de l’heure.
Plus loin au sujet des valeurs marginales
Attention l’interprétation des coûts marginaux n’est valable qu’à la marge. Dans ce
type de problème on parcourt des paliers avec des effets de seuil. Dès qu’on franchit un
seuil les coûts marginaux changent.
Dans l’exemple de la section précédente, il reste 1000 stères de hêtre sans usage.
Donc les coûts mar- ginaux associés à cette variable sont nuls : on peut vendre ce bois à
n’importe quel prix, cela augmentera les gains. Mais cette remarque n’est vrai que pour
le stock inutilisé. Au delà des 1000 stères, continuer à vendre du hêtre diminuerait la
production de meuble, et donc les gains. C’est le seuil à partir duquel le coût marginal
pour les bois de hêtre va changer.
Pour le cas des stocks inutilisés le seuil est assez simple à trouver (c’est la grandeur
du stock), mais pour les autres variables il faut procéder différemment.
Examinons un autre cas : le coût marginal associé au bois de chêne est de 200 euros le
stère. Autrement dit si on arrive à vendre ce bois plus cher que 200 euros le stère on a
intérêt à le vendre plutôt que de produire avec. Par contre si on arrive à trouver du chêne
à moins de 200 euros le stère, on a intérêt à l’acheter et à produire avec pour augmenter
les gains. Imaginons que l’ébénisterie trouve un marché où elle peut acheter du chêne à
150 euros le stère. Elle devrait l’acheter. Chaque stère obtenu ainsi va lui permettre
d’augmenter ses gains de 50 euros. Mais ce gain ne peut monter que jusqu’à un certain
seuil : la production est limitée par le stock de hêtre et le nombre d’heure de travail dont
dispose l’ébénisterie. Au delà de ce seuil, elle ne pourra plus produire de meubles avec
le chêne acheté, et elle dépensera donc 150 euros pas stère sans pouvoir rien en faire.
Quel est ce seuil ? On retombe sur un nouveau problème de programmation linéaire.
Si l’ébénisterie accepte d’acheter du chêne tant que c’est rentable, on retrouve le même
problème que précédemment avec une contrainte de moins : celle concernant le stock de
chêne. Sa modélisation est donc identique à avant, excepté l’inégalité concernant cette
contrainte qui disparaît :
avec
Z = 600 × M1 + 400 × M2 ... ,,,
,2 ×,M,1,+ M2 .≤.20.0.0 la contrainte sur le chêne n’existe plus 4 × M1 + 8 × M2 ≤ 8000 contrainte sur le hêtre
10 × M1 + 10 × M2 ≤ 12500 contrainte sur les heures de travail
M1 ≥ 0 et M2 ≥ 0
On obtient ainsi le même tableau du simplexe que précédemment mais avec la variable
E1 (celle concer- nant le chêne) en moins :
M1 M2 E2
E3
Somme
E2 4 8 1 0 8000 E3 10 10 0 1 12500 ∆j 600 400 0 0 0
73
Bac III GRH.Techniques Quantitatives de Gestion
Ce simplexe se résout en une seule itération :
M1
M2 E2 E3 Somme
E2 0 4 1 -2/5 3000 M1
1 1 0 1/10 1250
∆j 0 -200
0 -60 750000
Grâce à l’achat de stères supplémentaires, une nouvelle solution optimale se dessine :
– M1 vaut 1250. Il faut produire 1250 bibliothèques «petit chêne».
– M2 n’est pas en base, donc M2 vaut 0. Il ne faut plus produire de bibliothèques «petit hêtre»
74 Eric LALLET, Jean-Luc RAFFY
– E2 vaut 3000. Il reste donc 3000 stères de hêtre inutilisé. Chaque bibliothèque «petit chêne» consomme 2 stères de chênes. Il a donc fallu un
total de 1250 × 2 = 2 500 stères de chêne pour la production. Comme le stock initial était de 2 000, il a fallu acheter 500 stères supplémentaires. Le coût de cet achat est :
150 × 500 = 75 000 euros.
Et attention le nouveau gain pour l’ébénisterie est donc de 675 000 euros. En effet,
même si le gain qui apparaît dans le dernier tableau du simplexe est 750 000 euros, il faut penser à lui soustraire le prix des stères de chêne qu’il fallut acheter pour obtenir la
nouvelle solution : 750 000 − 75 000 = 675 000.
Il existe un autre moyen de calculer ce nouveau gain : dans le problème précédent le
gain était de 650 000 euros. On a vu qu’en achetant le chêne à 150 euros le stère, on
augmentait le gain de 50 euros par stères. Donc les 500 stères ont augmenté le gain de
500 × 50 = 25 000. Et 650 000 + 25 000 redonne bien la même valeur : 675 000.
Unités et simplifications
Les unités des variables
Un risque important d’erreurs dans l’interprétation du tableau du simplexe est de se
tromper dans les unités. En effet entre les données originales du problème, leur
interprétation, la mise en équation, les sim- plifications, la construction du tableau et les
pivotements il y a de nombreuses occasions d’erreurs. Dans le tableau du simplexe les
nombres qui ont besoin d’être interprétés sont dans la dernière ligne et la dernière
colonne. Leurs unités sont directement liées aux variables dans la première ligne et la
première colonne. Il faudra donc veiller à toujours bien indiquer le nom de ces variables
lors de la création du tableau et lors des divers pivotements.
L’unité d’un nombre sur la dernières colonne est celle de la variable en première
colonne. Attention, celle-ci peut changer lors d’un pivotement.
L’unité d’un nombre sur la dernière ligne est celle de Z divisée par celle de la
variable en première ligne.
X1 . . . Xp Somme
Y1 Unité de Y1
.
. Ym Unité de
Ym ∆j Unité de Z/Unité
de X1 . . . Unité de Z/Unité
de Xp Unité de
Z
Dans un problème classique les unités des variables du problème et l’unité de Z sont
généralement bien identifiées. Par contre il y a souvent plus d’incertitudes sur les unités
des variables d’écart. Tant qu’on ne cherchera qu’à connaître la valeur de Z et des
variables du problèmes il sera possible de laisser ce flou sur les variables d’écart, mais si
on doit interpréter les valeurs marginales liées à ces variables, il faudra être très
rigoureux.
Un des risques majeurs de se tromper dans leur unités apparaît lors de la simplification
des inégalités du problème. Reprenons l’exemple traité précédemment, mais cette fois ci
75
Bac III GRH.Techniques Quantitatives de Gestion
en simplifiant les nombres lorsque cela est possible.
Simplification de la fonction économique
Toutes les simplifications faites sur la fonction économique apportent un changement d’unité de Z.
Pour illustrer cela, reprenons l’exemple de la modélisation de la page 50. On avait
décrit Z avec la fonction : Z = 600 × M1 + 400 × M2.
M1 et M2 étaient le nombre de modèles de chaque étagère. Chaque modèle M1
rapporte 600 euros, et chaque modèle M2, 400 euros. Donc ici l’unité de Z est l’euro. Mais on peut décider de simplifier les nombres, et dire que chaque modèle M1 rapporte
6 «hecto euros3» et chaque modèle M2 4 «hecto euros». Alors on obtient une fonction Z′
= 6 × M1 + 4 × M2 exprimée en «hecto euros». 31 hecto euro = 100 euro
76 Eric LALLET, Jean-Luc RAFFY
1
2
3
Simplification des inégalités
Les simplifications faites sur les inégalités obtenues grâce aux diverses contraintes
laissent inchangées les unités des variables du modèle, mais changent les unités des
variables d’écarts.
Reprenons encore le problème de la page 50 pour illustrer ce type de simplification.
Le modèle avait 3 contraintes, et donc trois inégalités.
– La première concernait la consommation des stères de chêne à disposition. Chaque modèle M1 consomme 2 stères de chêne et chaque modèle M2 consomme 1 stère de
chêne. Comme on ne dis- pose que de 2000 stères de chêne on a : 2 × M1 + M2
≤ 2000. L’unité des variables du modèle M1 et M2 est «le nombre de modèle». Mais les coefficients placés devant (2 pour M1 et 1 pour M2) sont en «stère de chêne par modèle». Donc l’unité des membres de cette inégalité est le «stère de chêne». Lors du passage à la forme standard, la variable d’écart
ajoutée (E′ ) sera homogène avec les autres membres de cette inégalité, et sera donc exprimée en «stère de chêne». Il n’y aucun intérêt à simplifier cette inégalité qui va donc rester inchangée.
– Le seconde contrainte concernait la consommation de stères de hêtre. Chaque modèle M1 consomme 4 stères de hêtre et chaque modèle M2 consomme 8 stères de
hêtre. Comme on ne dispose que de 8000 stères de hêtre on a : 4 × M1 + 8 × M2 ≤ 8000. L’unité des variables du modèle M1 et M2 reste toujours «le nombre de modèle», mais les coefficients placés devant (4 pour M1 et 8 pour M2) sont en «stère de hêtre par modèle». Donc l’unité des membres de cette inégalité est le «stère de hêtre». Il est intéressant de simplifier cette inégalité par 4. On obtient : M1
+ 2 × M2 ≤ 2000. Mais si on devait maintenant interpréter cette inégalité, il faudrait changer d’unités. Il faudrait parler le «4 stères de hêtre». Chaque modèle
M1 consomme 1 «4 stères de hêtre», chaque modèle M2 consomme 2 «4 stères de
hêtre», et on dispose de 2000 «4 stères de hêtres». Donc l’unité des membres de l’inégalité simplifiée est «4 stères de hêtre». La variable d’écart qui sera ajoutée
lors du passage à la forme standard (E′ ) devra être homogène avec les autres membres, et aura donc pour unité «4 stères de hêtre».
– Enfin, la troisième contrainte concernait la consommation d’heures de travail. Chaque modèle M1 et M2 nécessite 10 heures de travail. Comme on ne dispose
que de 12500 heures de travail on a : 10 × M1 + 10 × M2 ≤ 12500. Les unités de M1 et M2 reste «le nombre de modèle», mais les coefficients placés devant (10 pour M1 et M2) sont en «heure de travail par modèle». Donc l’unité
des membres de cette inégalité est «l’heure de travail». Il est intéressant de
simplifier cette inégalité par 10. On obtient : M1 + M2 ≤ 1250. Les coefficients devant M1 et M2 ont (en apparence) disparu. Et une lecture rapide pourrait interpréter cette inégalité en «nombre de modèle». Mais en fait devant les variable
M1 et M2 se cache un «1×» qui dit 1× «10 heures de travail» par modèle. Donc la véritable unité des membres de cette inégalité est «10 heures de travail». La
variable d’écart qui sera ajoutée lors du passage à la forme standard (E′ ) devra être homogène avec les autres membres, et aura donc pour unité «10 heures de travail».
En résumé on obtient, trouver le maximum de Z′ avec :
2 × M1 + M2 ≤ 2000 unité des membres : stère de chêne
77
Bac III GRH.Techniques Quantitatives de Gestion
1
2
3
M1 + 2 × M2
≤ 2000 unité des membres : 4 stères de hêtre
avec M1 + M2 ≤ 1250 unité des membres : 10 heures de travail Z′ = 6 × M1 + 4 × M2 unité des membres : 100 euros
M1 ≥ 0 et M2 ≥ 0
Calculs et interprétations
Il faut ensuite tenir compte de ces changements d’unités lors des calculs et des interprétations.
Durant la phase de calcul il n’y en fait aucun changement, sauf bien sûr des nombres
plus simples à manipuler. Continuons le traitement de l’exemple après la simplification :
Lorsque l’on passe à la forme standard il faut ajouter 3 variables d’écart au problème.
Ces 3 variables vont récupérer l’unité de leur équation. On va donc avoir : – E′ : le nombre de stères de chêne non utilisés. – E′ : le nombre de «4 stères de hêtre» non utilisés. – E′ : le nombre de «10 heures de travail» non utilisés. Ainsi l’unité de E′ est «1 stère de chêne», celle de E′ est «4 stères de hêtre» et celle de E′ est «10
1 2 3
78 Eric LALLET, Jean-Luc RAFFY
2
heures de travail».
Mis sous la forme du simplexe, on obtient :
M1
M2 E′ 1 E′ 2 E′ 3 Somme
E′ 1 2 1 1 0 0 2000
E′ 2 1 2 0 1 0 2000
E′ 3 1 1 0 0 1 1250 ∆j 6 4 0 0 0 0
Après le premier pivotement on a :
M1
M2
E′ 1 E′
2 E′ 3 Somm
e M1 1 1/2 1/2 0 0 1000 E′
2 0 3/2 -1/2
1 0 1000
E′ 3 0 1/2 -1/2
0 1 250
∆j 0 1 -3 0 0 -6000
Après le second pivotement on a :
M1
M2
E′ 1 E′
2 E′ 3 Somm
e M1
1 0 1 0 -1 750
E′ 2 0 0 1 1 -3 250
M2
0 1 -1 0 2 500
∆j 0 0 -2 0 -2 -6500
Le simplexe s’arrête ici. Il faut maintenant faire l’interprétation des résultats.
L’interprétation des variables M1 et M2 ne posent aucun problème. Leur unité n’a pas
changé. Il faut donc construire 750 modèles 1 et 500 modèles 2.
L’interprétation de Z′ demande plus de vigilance : son unité est «100 euros». Donc la marge dégagée sera de 6500 «100 euros», autrement dit 650000 euros.
La valeur de E′ est de 250. Mais attention, son unité est «4 stères de hêtre». Donc à la fin, il reste
250 «4 stères de hêtre» sans usage, autrement dit 1000 stères de hêtre sans usage.
La valeur marginale dans la colonne de E′ est −2. Son unité est celle de Z′ divisée par celle de E′ , donc
3 3 «100 euros»/«10 heures de travail». Donc le coût marginale de l’heure de travail est de
2 «100 euros»/«10 heures de travail», autrement dit 20 euros par heure de travail.
Ainsi, une fois interprétés avec leurs bonnes unités les nombres donnés par le tableau
du simplexe des équations simplifiées donnent heureusement la même solution que
précédemment.
79
Bac III GRH.Techniques Quantitatives de Gestion
Troisième partie
Modélisation
80
69
Bac III GRH.Techniques Quantitatives de Gestion
Chapitre 10
Modélisation
Chemin de la question à la réponse
D’une manière générale, les problèmes auxquels on est confronté dans le monde réel
sont d’une com- plexité telle qu’il est difficile, voire impossible, de les résoudre
directement
On dispose également d’une masse d’informations dont certaines ne sont pas utiles à
la résolution du problème considéré.
C’est pour cette raison que l’on passe par une phase de modélisation. Un modèle est
UNE représentation simplifiée du monde réel, pertinente au regard du problème à
résoudre. Il doit inclure toutes les informations utiles mais uniquement celles-ci.
Le choix du modèle dépend donc directement du type de problème à résoudre mais
aussi de la technique de résolution que l’on a choisie.
Des simplifications peuvent être éventuellement effectuées sur le modèle de façon à
réduire le nombre d’itérations de l’algorithme.
La solution du problème trouvée, il faut revenir à la réalité pour apporter la réponse à la question
initiale.
FIG. 10.1 – Modélisation et résolution d’un problème
La principale difficulté est dans l’étape de modélisation. On vient cependant de voir
des techniques permettant de répondre à certaines questions.
– Ordonner, planifier des tâches : GANTT et potentiel-tâches.
– Construire un réseau à moindre coût : Arbre de recouvrement minimal.
70
– Minimiser un stock, un coût, une tournée,. . . : le plus court chemin.
– Maximaliser un flot, une production, un transport, . . . : le flot max.
71
Bac III GRH.Techniques Quantitatives de Gestion
– Maximaliser un flot, une production, un transport à moindre coût : le flot max coût min.
– Optimiser un problème à multiples variables et multiples contraintes : programmation linéaire
Mais il faut aussi savoir les utiliser dans des cas moins attendus :
– Le plus court chemin peut aussi trouver un maximum ! Par exemple en
transformant des coûts en gains (ou réciproquement), la recherche d’un minimum
de l’un donnera le maximum de l’autre. Tant qu’on ne crée pas de cycle ayant une
longueur négative, il est tout à fait possible d’avoir des valeurs négatives sur les
arcs d’un plus court chemin.
– Le chemin critique du potentiel-tâches est en fait une recherche du plus long
chemin. Donc cette technique peut servir aussi à maximaliser un gain, ou tout autre
chose.
– Les marges totales d’un potentiel-tâches peuvent être vu comme du «temps
disponibles» dans un emploi du temps. On peut s’en servir pour synchroniser des
plannings pour trouver une date de réunion sur des emplois du temps a priori déjà
plein.
– Le flot max à coût min peut être décliné de bien des façons. On peut essayer
d’obtenir le maximum de choses (objets, services, . . . ) pour un coût donné. Il suffit
de décider d’arrêter l’algorithme quand on atteint le coût fixé plutôt que de l’arrêter
quand on atteint le flot maximum. On peut aussi s’en servir pour connaître le coût
minimum pour tout flot inférieur au maximum.
– . . .
Les erreurs à ne pas faire
Il est bien d’apprendre de ses erreurs. Mais parfois ces erreurs se payent un peu cher.
Alors autant apprendre des erreurs des autres. Dans cette section vous allez trouver une
collection d’erreurs trouvées dans diverses copies lors des contrôles. Essayez de bien
comprendre quelle erreur a été faite, et ne la faites pas vous même à l’avenir.
Erreur 10.1 (Diagramme de GANTT) Utiliser un diagramme de GANTT pour trouver
le chemin critique et les marges totales des tâches.
Le diagramme de GANTT est parfait pour calculer la durée d’un projet et donner un
planning facilement lisible à une équipe. Mais il n’est pas adapté à la recherche du
chemin critique. Pour ce genre de recherche il faudra par exemple utiliser un potentiel-
tâches.
Erreur 10.2 (Potentiel-tâches) Placer sur le graphe d’un potentiel-tâches, la durée des
tâches sur les arcs entrants.
Sur le graphe d’un potentiel-tâches la durée des tâches se place sur les arcs qui partent
de la tâche, et non pas sur ceux qui y arrivent. Le graphe erroné pourra éventuellement
vous donner la durée du projet, mais par contre les dates au plus tôt et les dates au plus
tard seront toutes fausses. Ainsi, de par leur construction les arcs qui partent du sommet
α ajouté à la source du graphe doivent obligatoirement être valués avec une durée nulle
(voir figure 10.2).
Erreur 10.3 (Potentiel-tâches) Placer des valeurs différentes sur deux arcs partants
72
d’un même sommet (c’est à dire d’une même tâche).
L’arc qui part d’un sommet est valué par la durée de la tâche qui est modélisée par ce
sommet. Une tâche ne peut pas avoir plusieurs durées. Donc obligatoirement, tous les
arcs qui partent d’un sommet reçoivent la même valeur.
73
Bac III GRH.Techniques Quantitatives de Gestion
FIG. 10.2 – Sur un potentiel-tâches, la durée des tâches se place sur les arcs SORTANT des sommets
Erreur 10.4 (Graphes avec arcs valués) Mettre la valeur (capacité, longueur, coût,
durée) sur les som- mets.
Les valeurs des graphes valués vus dans ce cours (potentiel-tâches, plus court chemin,
flot max, flot-max coût-min. . . ) se placent sur les arcs et non pas sur les sommets.
Même pour le potentiel-tâches, les valeurs que l’on place lorsqu’on déroule l’algorithme
directement sur le graphe sont les résultats de l’algorithme et non pas les valeurs
obtenues lors de la modélisation. Pour tous ces graphes, si dans votre modélisation une
valeur est apparue sur un sommet, c’est qu’il y a une erreur. Généralement vous avez
tout simplement oublié des arcs dans votre modèle.
Erreur 10.5 (Modélisation et simplifications) Simplifier votre modèle avant d’avoir fini la
modélisation.
Il faut éviter de simplifier votre modèle trop tôt. Même si des arcs ou des contraintes
sont visiblement in- utiles, gardez les dans votre modèle s’ils en font vraiment partie.
Ensuite une fois la modélisation finie, avant de mettre la technique en œuvre, simplifier
ce qui peut l’être. Les arcs ou les contraintes a priori inutiles peuvent devenir
nécessaires après le changement de la valeur d’un simple paramètre de votre problème.
Ils peuvent aussi être très utiles pour donner une interprétation complète et correcte de
votre solution.
Prenons un exemple pour illustrer cette démarche. Imaginons un problème de
programmation linéaire où il faut trouver le maximum de Z avec le modèle suivant : (1)X1 + X2 ≤ C1
(2)X1 + X2 ≤ C2 (Modèle 1) (3)X1 ≤ C3
Z = 2 × X + X 1 2
M1 ≥ 0 et M2 ≥ 0
Si C1 ≤ C2 on peut faire disparaître l’inégalité (2) pour obtenir le modèle :
(1)X1 + X2 ≤ C1
(3)X1 ≤ C3(Modèle 2) Z = 2 × X1 + X2
M1 ≥ 0 et M2 ≥ 0
Et par contre si C2 ≤ C1 on peut faire disparaître l’inégalité (1) pour obtenir le modèle :
(2)X1 + X2 ≤ C2
74
(3)X1 ≤ C3(Modèle 3) Z = 2 × X1 + X2
M1 ≥ 0 et M2 ≥ 0
Lors de votre modélisation vous serez forcement dans l’un des deux cas. Donc vous
serez fortement tenté de faire disparaître de votre modèle l’inégalité inutile. Il est vrai
que si votre problème est bien fixe et que les paramètres ne risquent pas de changer, le
modèle simplifié fera très bien l’affaire. Mais imaginons qu’immédiatement après ce
premier problème, vous rencontrez le même avec juste des paramètres qui
changent (par exemple de C1 ≤ C2 on est passé à C2 ≤ C1). Si vous avez modélisé avec le modèle complet (modèle 1), votre modélisation reste exacte, vous avez juste à procéder à la bonne simplification
75
Bac III GRH.Techniques Quantitatives de Gestion
avant d’utiliser la technique de résolution (par exemple un simplexe). Si vous avez
d’office utilisé un modèle simplifié, il ne correspond plus au nouveau problème et vous
devez refaire une nouvelle modélisation.
Erreur 10.6 (Simplexe) Utiliser le simplexe pour ensuite refaire les calculs à la main.
Le simplexe est un algorithme très complet. Il ne se contente pas de trouver la valeur des
variables de votre problème, il calcule aussi celles de la fonction économique, des
variables d’écarts, des valeurs marginales. Alors évitez d’utiliser le simplexe en ne
calculant que la valeur des variables en base pour ensuite faire le calcul à la main pour
trouver la valeur de la fonction économique. Par contre à titre de vérification, vous
pouvez effectivement recalculer à la main la valeur de la fonction économique à partir
de la valeur des variables pour la comparer à celle trouver par votre simplexe : une
différence démontre une erreur de calcul.
76
Index
Bibliographie
[1] Jean-Claude Papillon. Eléments de recherche opérationnelle. Dalloz-Sirey, 1992.
[2] Roseaux. Exercices et problèmes résolus de recherche opérationnelle : Tome 3 :
Programmation li- néaire et extensions - Problèmes classiques. DUNOD, 1985.
[3] Roseaux. Exercices et problèmes résolus de recherche opérationnelle : Tome 1,
Graphes : leurs usages, leurs algorithmes. DUNOD, 1998.
[4] Daniel Thiel. Recherche opérationnelle et management des entreprises. Economica, 1990.
77
Bac III GRH.Techniques Quantitatives de Gestion
.