Introduction à la Recherche Opérationnelle
Introduction à la Recherche Opérationnelle
1 Introduction 3
1.1 Origines de la recherche opérationnelle . . . . . . . . . . . . . 3
1.2 Dénitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Quelques domaines et exemples d'applications de la RO . . . 4
1.3.1 Problème de production . . . . . . . . . . . . . . . . . 4
1.3.2 Problème de transport . . . . . . . . . . . . . . . . . . 5
3 Programmation linéaire 12
3.0.1 Notions de base . . . . . . . . . . . . . . . . . . . . . . 13
3.1 Quelques exemples de programmes linéaires . . . . . . . . . . 14
3.1.1 Problème de production résolu par la méthode graphique 14
3.1.2 Formulation du problème de transport . . . . . . . . . 16
3.1.3 Algorithme des simplexes . . . . . . . . . . . . . . . . 17
3.1.4 Fonction Solveur . . . . . . . . . . . . . . . . . . . . . 19
3.1.5 La dualité . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Exercices d'application . . . . . . . . . . . . . . . . . . . . . . 21
1
5 Problèmes d'ordonnancement 32
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Critère temporel . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2.1 Méthode du potentiel . . . . . . . . . . . . . . . . . . 33
5.2.2 Méthode P.E.R.T. . . . . . . . . . . . . . . . . . . . . 33
5.2.3 Résolution . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2.4 Algorithme d'obtention d'un ordonnancement de du-
rée minimale . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.5 Diagramme de GANTT . . . . . . . . . . . . . . . . . 41
2
Chapitre 1
Introduction
1.2 Dénitions
Dénition 1.2.1 La recherche opérationnelle (R.O) ou la science de la dé-
cision est la discipline des méthodes scientiques utilisables pour élaborer des
meilleures décisions. Elle permet de rationaliser, de simuler, de planier et
3
d'optimiser l'architecture et le fonctionnement des systèmes de production et
d'organisation. En pratique, la R.O sert à résoudre diérents types de pro-
blèmes diciles (issus des mathématiques, de l'informatique, de l'économie,
de l'industrie...)
Etapes pratiques :
Dénition du problème
Construction d'un modèle
Solution du modèle
Validation du modèle
Implémentation de la solution
Méthodologie
Les étapes les plus importantes sont la dénition du problème (sup-
pose un dialogue avec le décideur) et la construction du modèle (prendre
conscience des hypothèses simplicatrices et de leur impact).
La phase de validation doit permettre de remettre en cause la validité
du modèle.
Une approche globale nécessite donc un aller-retour constant entre le
modèle et les attentes du décideur.
Techniques principales
Théorie des graphes.
Programmation linéaire.
Programmation en nombres entiers.
Optimisation dans les réseaux.
4
Exemple 1.3.1 Une entreprise fabrique quatre produits. La fabrication de
chaque produit nécessite une certaine quantité de ressources. Les ressources
consommées, les stocks des ressources et les bénéces des produits sont réca-
pitulés dans le tableau suivant :
5
Chapitre 2
Exemple 2.1.1 .
a b a b
f c f c
d d
le cycle C5 l'étoile C5
6
Dénition 2.1.2 Un graphe dirigé (digraphe ) est un couple G := (V, R),
formé d'un ensemble V et d'une relation binaire R sur V . Les éléments de V
sont les sommets de G ; les couples (x, y) appartenant à R sont les arcs de G ;
les couples (x, x) appartenant à R sont les boucles de G. Le graphe dirigé G
étant donné, on note V (G) l'ensemble de ses sommets, E(G) l'ensemble de
ses arcs et, si besoin, on note xRG y le fait que (x, y) ∈ E(G). Sauf indication
contraire, on notera x ∈ G pour x ∈ V (G) et on conviendra que la cardinalité
de G est celle de V (G).
On note par G−1 le digraphe obtenu de G en inversant les sens des arcs, i.e.,
E(G−1 ) = {(x, y) : (y, x) ∈ E(G)}.
On note par G
e le graphe obtenu de G en supprimant les orientations des
arcs, i.e., [
−1
E(G)
e = E(G) E(G ).
Le graphe symétrique G e (i.e., (x, y) ∈ G
e ⇒ (y, x) ∈ G e , pour tous x, y ∈
V (G)) est le symétrisé du graphe G. On dit que G = (V ′ , E ′ ) est un sous
e ′
Remarque 2.1.1 Soit ⪯ est un ordre partiel sur un ensemble non vide
V, alors le graphe G⪯ déni sur V par
E(G⪯ ) = {(x, y) ∈ V 2 : x ⪯ y}
est un graphe orienté réexif.
7
G1 G2
Dénition 2.1.4 Un graphe simple G est dit complet si entre deux sommets
quelconques il existe une arête. Un graphe complet de n sommets est noté
Kn .
Figure 2.3 K6
8
Figure 2.4 T4
Figure 2.5 Exemple d'un digraphe qui n'est pas connexe mais faiblement
connexe
9
S
A D
F M C
10
2.2.2 Inéquations et Graphes
Considérons le système d'inéquations suivant :
x1 + x2 ≤ 1
x1 + x3 + x4 ≤ 1
x4 + x5 ≤ 1
z = x1 + x2 + x3 + x4 + x5
1 4
2 4 5
x2 = x3 = x5 = 1 x1 = x4 = 0 z = 3
11
Chapitre 3
Programmation linéaire
12
3.0.1 Notions de base
Dénition 3.0.1 Un programme linéaire est un problème dans lequel les
variables sont des réels qui doivent satisfaire un ensemble d'équations et/ ou
d'inéquations linéaires (dites contraintes) et la valeur d'une fonction linéaire
de ces variables (appelée fonction objective ou fonction économique) doit
être rendue minimum (ou maximum).
Ingrédients principaux :
Alternatives (variables, inconnues du problème).
Restrictions (contraintes).
Fonction objectif à optimiser (minimiser ou maximiser).
Forme générale d'un programme linéaire :
n
Maximiser ou Minimiser
P
z(x 1 , x2 , ..., x n ) = cj xj
j=1
n
P
a1i xi ≤, =, ≥ b1
i=1
n
P
a2i xi ≤, =, ≥ b2
i=1
Sous les contraintes ......................
......................
n
P
i=1 ami xi ≤, =, ≥ bm
x1 , x2 , ..., xn ≥ 0
(P C) Ax ≤ b
x≥0
′ A
A =
−In
13
et b′ aurait été le (m + n)−vecteur obtenu à partir de b en lui adjoignant n
composantes nulles et (PC) se serait écrit :
[M ax] z = cT x
(P C)
A′ x ≤ b′
Théorème 1 Tout programme linéaire sous forme standard peut être écrit
sous forme canonique et tout programme linéaire sous forme canonique peut
être écrit sous forme standard.
Dénition 3.0.3 (Solution optimale). Une solution optimale est une solu-
tion admissible qui optimise la fonction objectif.
14
1. Formalisation du Problème
Variables : X1 quantité à fabriquer de P1 et x2 quantité à fabriquer
de P2
L'objectif :
Maximiser z = 1700x1 + 3200x2
sous les contraintes suivantes
3x2 ≤ 39
1, 5x1 + 4x2 ≤ 60
2x1 + 3x2 ≤ 57
3x1 + 2x2 ≤ 70
3x1 ≤ 57
x1 ≥ 0, x2 ≥ 0
15
A B
C
10
F E
10 20
Donc
38400
zmax = .
7
16
sont acheminées chaque semaine depuis le port d'indice i vers l'usine d'indice
j . Le programme linéaire s'écrit alors :
[M in]z = 5x11 + 6x12 + 3x13 + 3x21 + 5x22 + 4x23
x11 + x21 ≥ 400
x12 + x22 ≥ 300
x13 + x23 ≥ 200
x11 + x12 + x13 ≤ 550
x21 + x22 + x23 ≤ 350
x11 , x12 , x13 , x21 , x22 , x23 ≥ 0
17
4me étape : Choisir la variable à enlever de la base
x y e1 e2 e3
e1 3 2 1 0 0 1800 1800
2 = 900
e2 1 0 0 1 0 400 400
0 =∞
e3 0 1 0 0 1 600 600
1 = 600
z 30 50 0 0 0 0
5me étape : Encadrer le pivot
x y e1 e2 e3
e1 3 2 1 0 0 1800
e2 1 0 0 1 0 400
y 0 1 0 0 1 600
z 30 50 0 0 0 0
6me étape : Diviser la ligne du pivot par le pivot
x y e1 e2 e3
e1
e2
y 0 1 0 0 1 600
z
x y e1 e2 e3
e1 3 0 1 0 -2 600
e2 1 0 0 1 0 400
y 0 1 0 0 1 600
z 30 0 0 0 −50 −30000
x y e1 e2 e3
e1 3 0 1 0 -2 600 600
3 = 200
e2 1 0 0 1 0 400 400
1 = 400
y 0 1 0 0 1 600 600
0 =∞
z 30 0 0 0 -50 −30000
18
Donc e1 est la variable sortante de la base.
x y e1 e2 e3
x 1 0 1
3 0 −2
3 200
e2 0 0 − 31 1 2
3 200
y 0 1 0 0 1 600
z 0 0 -10 0 -30 −36000
Les coecients de la fonction économique sont tous nuls ou négatifs,
n de l'algorithme du simplexe.
La solution qui rend optimal le programme de production est le suivant :
La marge sur coût variable maximum= 36000, elle est réalisée pour la
solution x = 200 et y = 600.
Exemple 3.1.1 Appliquer cette méthode pour résoudre le problème de pro-
duction (Paragraphe3.1.1).
19
3.1.5 La dualité
Programme dual d'un PL sous forme standard
Un programme linéaire est caractérisé par le tableau simplexe suivant :
A b
c
[M ax]w = bT v
[M in]z = cx [M ax]w = ub
(P ) : sc Ax ≥ b ⇐⇒ (D) : sc uA ≤ c ⇐⇒ (D) : sc AT v ≤ cT
x≥0 u≤0 v≤0
Règles de passage :
Min Max
Primal Dual
Dual Primal
Variable ≥ 0 Contrainte ≤
Variable ≤ 0 Contrainte ≥
Variable ≶ 0 Contrainte =
Contrainte ≤ Variable ≤ 0
Contrainte = Variable ≶ 0
Contrainte ≥ Variable ≥ 0
20
Théorèmes de la dualité
1. Le dual du dual est le primal.
2. Si x et u sont respectivement des solutions du primal et du dual,
alors :
z = cx ≥ w = ub
Interprétation :
une solution primale (resp. duale) admissible sous-optimale est meilleure
qu'optimale, mais non admissible pour le problème dual (resp. pri-
mal).
3. Si (P) et (D) ont des solutions, alors chacun d'entre eux a une solution
optimale et
z ∗ = M in cx = w∗ = M ax ub
Réciproquement, si x est admissible pour (P) et y est admissible pour
(D) et que cx = ub, alors x est optimale pour (P) et u est optimale
pour (D).
21
Corrigé :
1. Le programme linéaire s'écrit :
[M in]z
= 10x1 + 12x2 + 15x3
500x1 + 300x2 + 800x3 ≥ 100000
1000x1 + 2000x2 + 1500x3 ≥ 200000
(P L) : sc 10x1 + 20x2 + 15x3 ≥ 100
100x 1 + 80x2 + 150x3 ≥ 400
80x 1 + 120x2 + 200x3 ≥ 400
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
22
y1 y2 y3 y4 y5 e1 e2 e3 b
e1 500 1000 10 100 80 1 0 0 10
e2 300 2000 20 80 120 0 1 0 12
e3 800 1500 15 150 200 0 0 1 15
v 100000 200000 100 400 400 0 0 0 0
e1 350 0 0 60 20 1 -0.5 0 4
y2 0.15 1 0.01 0.04 0.06 0 0.0005 0 0.006
e3 575 0 0 90 110 0 -0.75 1 6
v 70000 0 -1900 -7600 -11600 0 -100 0 -1200
e1 0 0 0 5.21739 -46.956521 1 -0.043478 -0.60869 0.34782
y2 0 1 0.01 0.01652 0.031304 0 0.00069 -0.000260 0.004
y1 1 0 0 0.15652 0.191304 0 -0.00130 0.00173 0.010434
v 0 0 -1900 -18556.521 -24991.304 0 -8.69565 -121.73913 -1930.434
Le bénice maximal est v = 1930.434. Il est atteint pour
max
y1 = 0.010434, y2 = 0.004, y3 = 0, y4 = 0, y5 = 0.
Donc le coût minimal d'armement est z min = 1930.434 . Il est atteint pour
x1 = 0, x2 = 8.69565, x3 = 121.73913.
23
Chapitre 4
chemin optimal
4.1 Introduction
Supposons que, dans un graphe orienté, on décide d'attribuer à chaque arc une
longueur, positive ou non. Il est alors naturel de dénir la longueur d'un chemin
quelconque comme la somme des longueurs des arcs qui le composent. Un problème
fondamental, et qui se pose fréquemment dans les applications, est celui de la re-
cherche des chemins de longueur minimale ou maximale. L'objet de ce chapitre est
de présenter trois algorithmes simples permettant d'obtenir de tels chemins. Ces
algorithmes seront aussi utilisés dans la suite pour la recherche de ots et d'ordon-
nancements optimaux.
4.2 Formulation du problème
Soit G = (V, E) un 1-graphe orienté, sans boucle, comportant n sommets. A
tout arc (x , x ) ∈ E est associé un nombre réel l appelé longueur de l'arc (x , x ).
La longueur d'un chemin µ est la somme des longueurs des arcs qui le composent :
i j ij i j
X
l(µ) = lij
(xi ,xj )∈µ
les chemins µ joignant x à x . La longueur d'un tel chemin est appelée distance
(minimale) ou distance maximale selon le cas. Par abus de language, et bien que
s t
l'unicité ne soit pas nécessairement réalisée, on parle parfois du plus court chemin
ou du plus long chemin de x à x .
s t
admette une solution de longueur nie, nous supposerons que le graphe étudié
ij
24
ne comporte aucun circuit de longueur négative dans le cas de la recherche d'un
chemin de longueur minmale, ni aucun circuit de longueur positive dans le cas de
la recherche d'un chemin de longueur maximale.
Il sera commode d'introduire une matrice L, dite matrice de longueurs, dont
l'élément l se dénit de façon diérente selon le problème considéré :
ij
/ E, / E,
l ij i j l ij i j
+∞ si (x , x ) ∈ −∞ si (x , x ) ∈
si i = j . si i = j .
ijl = i j l = ij i j
0 0
Son principe :
On marque tout sommet x d'une marque λ qui correspond à une borne su-
périeure (inférieure) pour la distance minimale (maximale) de x à x . On diminue
j j
25
λ1 = 0
λj = +∞, j ̸= 1 λj = −∞, j ̸= 1
Marquer xj de
λj = λi + lij
∃(xi , xj ) ∈ E
Oui tel que
λj > λi + lij λj < λi + lij
Non
26
Obtention des
marques λj
xk = xn
µ = (xn )
xk = x1
Non Oui
Initialisation
λ(s) ←− 0
Pour chaque v ∈ S sauf(s)
Faire λ(v) ←− ∞
27
Relaxation
Pour i ←− 1 à |S|-1
Faire, pour chaque arc (u, v) ∈ A
Fin
Exemple 4.3.1 Considérons le graphe suivant : Il nous faut 5 itération pour déter-
-2
B D
2
3 3
A 9 3 F
-5
2
4 1
C E
Première itération :
AB(∞, 0 + 3) −→ λ(B) = 3
AC(∞, 0 + 4) −→ λ(C) = 4
λ(x) = ∞, pour tout x ∈
/ {A, B, C}
Deuxième itération :
AB(3, 0 + 3) −→ λ(B) = 3 BD(∞, 3 + 2) −→ λ(D) = 4
AC(4, 0 + 4) −→ λ(C) = 4 BE(∞, 3 + 2) −→ λ(E) = 5
BC(4, 3 + 9) −→ λ(C) = 4 CD(∞, 4 − 5) −→ λ(D) = −1
Donc
λ(A) = 0, λ(B) = 3, λ(C) = 4, λ(D) = −1, λ(E) = 5, λ(F ) = ∞.
28
Troisième itération :
AB(3, 0 + 3) −→ λ(B) = 3 BD(−1, 3 + 2) −→ λ(D) = −1
DB(3, −1 − 2) −→ λ(B) = −3 CD(−1, 4 − 5) −→ λ(D) = −1
AC(4, 0 + 4) −→ λ(C) = 4 ED(−1, 5 + 3) −→ λ(D) = −1
BC(4, 3 + 9) −→ λ(C) = 4 BE(5, 3 + 2) −→ λ(E) = 5
DF (∞, −1 + 3) −→ λ(F ) = 2 EF (∞, 5 + 1) −→ λ(F ) = 5
Donc
λ(A) = 0, λ(B) = −3, λ(C) = 4, λ(D) = −1, λ(E) = 5, λ(F ) = 2.
Quatrième itération :
AB(3, 0 + 3) −→ λ(B) = 3 BD(−1, 3 + 2) −→ λ(D) = −1
DB(3, −1 − 2) −→ λ(B) = −3 CD(−1, 4 − 5) −→ λ(D) = −1
AC(4, 0 + 4) −→ λ(C) = 4 ED(−1, 5 + 3) −→ λ(D) = −1
BC(4, 3 + 9) −→ λ(C) = 4 BE(5, −3 + 2) −→ λ(E) = −1
DF (∞, −1 + 3) −→ λ(F ) = 2 EF (2, 5 + 1) −→ λ(F ) = 2
Donc
λ(A) = 0, λ(B) = −3, λ(C) = 4, λ(D) = −1, λ(E) = −1, λ(F ) = 2.
Cinquième itération :
AB(3, 0 + 3) −→ λ(B) = 3 BD(−1, 3 + 2) −→ λ(D) = −1
DB(3, −1 − 2) −→ λ(B) = −3 CD(−1, 4 − 5) −→ λ(D) = −1
AC(4, 0 + 4) −→ λ(C) = 4 ED(−1, 5 + 3) −→ λ(D) = −1
BC(4, 3 + 9) −→ λ(C) = 4 BE(5, −3 + 2) −→ λ(E) = −1
DF (∞, −1 + 3) −→ λ(F ) = 2 EF (2, −1 + 1) −→ λ(F ) = 0
Donc
λ(A) = 0, λ(B) = −3, λ(C) = 4, λ(D) = −1, λ(E) = −1, λ(F ) = 0.
Nous pouvons résumer les résultats des cinq itération dans le tableau ci-dessous :
A B C D E F
Initialisation 0 ∞ ∞ ∞ ∞ ∞
1ère Itération 0 3-A 4-A ∞ ∞ ∞ A
2ème Itération 0 3-A 4-A -1-C 5-B ∞ C
3ème Itération 0 -3-D 4-A -1-C 5-B 2-D D
4ème Itération 0 -3-D 4-A -1-C -1-B 2-D B
5ème Itération 0 -3-D 4-A -1-C -1-B 0-E E
Contrôle 0 -3-D 4-A -1-C -1-B 0-E F
Remarque 4.3.2 L'étape de contrôle de l'existence d'une boucle négative, est une
sixième itération. Si tous les poids des sommets coïncident avec ceux de la cinquième
itération, on conclut qu'il n'y a pas de boucle négative.
Le chemin optimal est :
A(0) −→ C(4) −→ D(−1) −→ B(−3) −→ E(−1) −→ F (0)
Il est de longueur 0. On a obtenu les sous chemins optimaux, par exemple, le plus
court chemin allant de A à B est de longueur -3 :
A(0) −→ C(4) −→ D(−1) −→ B(−3) →
29
4.3.4 Algorithme de Dijkstra
Cet algorithme permet uniquement l'obtention de chemins de longueur mini-
male, et sous la conditions que les longueurs l soient toutes non négatives. Il
présente de grands avantages de rapidité dans son application.
ij
Son principe :
On considère, au départ de x , les chemins d'un arc (étape 1), puis ceux de deux
arcs au plus (étape 2),...,et ceux de t arcs au plus (étape t). Soit D l'ensemble des
1
3
B F
1 2 3 4
3
A D G
2
2 3 5
C E
4
A B C D E F G Sommets
0 1-A 2-A ∞ ∞ ∞ ∞ en A
- 1-A 3-B ∞ 4-B ∞ en B
- - 2-A 5-C 6-C ∞ en C
- - - 3-B 6-D 6-D 6-D en D
- - - - 4-B 8-F en F
- - - - 5-D - 10-E en E
- - - - - - 6-D en G
Le chemin le plus court est de longueur 6 km :
A −→ B −→ D −→ G
30
1 9
D E F
2 8 1
1 2
A B C 2
6 4
8 3
2
7
G H
31
Chapitre 5
Problèmes d'ordonnancement
5.1 Introduction
Lobjet d'un problème d'ordonnancement est de faciliter la mise en oeuvre et
de guider l'exécution d'un ensemble complexe de tâches (programme de recherche
ou de production, lancement d'un produit, construction d'un bâtiment ou d'une
route...). La technique d'analyse la plus connue, appelée méthode P.E.R.T. (Pro-
gram Evaluation and Review Technique), a été introduite aux états-unis en 1958
pour la réalisation d'un programme de recherches et de construction des fusées Po-
laris. Cette méthode tient une place dominante par sa simplicité, son ecacité et
la variété des extensions qui ont pu être développées.
Dans ce chapitre, nous illustrons les principales techniques de base lorsque le
critère d'optimalité est la minimisation de la durée ou du coût de la réalisation du
projet. Nous supposons que ce projet est décomposable en un nombre ni de tâches,
caractérisées par leurs durées d'exécution (généralement xes, parfois aléatoires),
éventuellement aussi par leurs coûts d'exécutions, et soumises à des contraintes de
postériorité stricte (une tâche ne peut commencer que si certaines autres tâches
sont complètement terminées).
5.2 Critère temporel
Le problème s'énonce comme suit : étant donné un projet constitué de n tâches
de durées d'exécution xes et soumises à des contraintes de postériorité stricte,
déterminer un "calendrier d'exécution " ou ordonnancement qui minimise la durée
de réalisation totale du projet.
En pratique, le travail préliminaire à accomplir sera donc de dresser une liste
des diérentes opérations à mener qu'on décompose plus ou moins selon la précision
souhaitée. Généralement, les tâches sont dénies de manière simple et telle que leurs
durées d'exécution sont de même ordre de grandeur; de plus, les contraintes de
postériorité entre les tâches doivent pouvoir être établies avec précision. Ce travail
important est souvent long, et nécessite une collaboration étroite entre les diverses
personnes impliquées dans l'exécution du projet.
32
Mise sous forme de graphe
Le problème peut être représenté de deux manières par un graphe G = (X, U )
sans circuit et aux arcs (x , x ) duquel sont associés des quantités non négatives t
i j ij
t ;
i j
Remarquons que dans cette dernière mise en graphe, les sommets correspondent
au début ou à la n d'une (de plusieurs) tâche(s) ou encore à un instant situé
entre ceux-ci. Il peuvent donc s'interpréter comme des étapes du projet marquant
la réalisation de travaux partiels. Certaines d'entre eux représentent des étapes
importantes (construction d'une partie d'un bâtiment par exemple), mais beaucoup
ne pr ésentent que peu de signiaction pratique.
Soulignons aussi que pour pouvoir exprimer certaines contraintes de postériorité
stricte, il est parfois nécessaire d'introduire des tâches ctives et donc des arcs ctifs
de durées nulles. A titre d'exemple, considérons le sous-graphe partiel ci-dessous :
indiquant que les tâches 3 et 4 doivent succéder aux tâches 1 et 2. Supposons
que suite à une modication des conditions techniques, l'exécution de la tâche 4
puisse commencer avant que soit achevée la tâche 1. Pour adapter le graphe à ce
changement, nous ajoutons un arc ctif de la manière suivante :
5.2.3 Résolution
Nous appelons ordonnancement un programme d'exécution {t : 0 ≤ i ≤ N }
avec t = 0, qui xe la date t de début d'exécution de chacune des tâches (dans la
i
33
Tâche 1 Tâche 3
Tâche 2 Tache 4
Tâche 1 Tâche 3
Tâche ctive
Tâche 2 Tâche 4
Dénissons la longueur d'un arc comme étant la durée associée à cet arc. La
durée minimale du projet est alors égale à la longueur du plus long chemin de
x à x . En eet, pour qu'une tâche puisse commencer, il faut que toutes les
tâches précédentes aient été exécutées, de sorte que la durée du projet ne peut
0 N
être inférieure à la somme des durées des tâches composant le chemin le plus long
de x à x . Ce chemin, qui n'est pas nécessairement unique, est appelé chemin
critique. Pour le déterminer, il sut d'appliquer l'algorithme de Bellman-Ford ou
0 N
où Γ (x ) = {x ∈ X : (x , x ) ∈ U }.
−
j i i j
La durée minimale du projet t ayant été évaluée, il est bien sûr possible de
retarder l'exécution de certaines tâches ou étapes sans pour autant accroître t . Il
N
est dès lors intéressant de déterminer les dates au plus tard T de début d'exécution
N
des diérentes tâches ou étapes i sous la condition que la durée minimale du projet
i
t ne soit pas modiée. Ces dates se calculent au moyen du même algoritme ci-
dessus, mais appliqué au réseau inverse construit en inversant le sens de tous les
N
arcs. Il vient
T = t et T = min{T − t : x ∈ Γ (x )} , 0 ≤ j ≤ N − 1
N N j i ij i
+
j
34
où Γ (x ) = {x ∈ X : (x , x ) ∈ U }.
+
j i j i
durée du projet : elles sont appelées tâches ou étapes critiques. Plus généralement,
à chaque sommet i, on peut associer un intervalle de ottement, (t , T ), qui indique
la latitude laissée dans le choix de l'ordonnancement et permet, éventuellement, de
i i
ti Ti tij tj Tj
I J
35
On dénit
la marge totale M (I) = T − t , longueur de l'intervalle de ottement de la
tâche I ; elle représente le retard maximal que peut prendre la tâche I sans
T j i
altérer les dates des débuts au plus tard des tâches suivantes et parsuite
sans que la durée minimale du projet soit modiée.
la marge libre M (I) = min{t − t − t } de la tâche I ; elle représente le
L j i ij
retard maximal qui peut être apporté dans la mise à exécution de la tâche
j
I sans altérer les dates des débuts au plus tôt des tâches suivantes.
Si M ̸= X ,
j ∈ Choisir un x
/M Γ− (xj ) ⊂ M tel que
M = M ∪ {xj }
Tj = min{ti + tij : xi ∈ Γ− (xj )}
Sinon, i.e. , alors
libre : t − t − t , (x , x ) ∈ U
totale : T − t − t , (x , x ) ∈ U
j i ij i j
certaine : t − T − t , (x , x ) ∈ U
j i ij i j
Fin si
j i ij i j
Fin si
Fin.
Exemple 5.2.1 Une entreprise s'intéresse à un procédé de construction d'un pro-
duit nouveau. Ce procédé fait intervenir un certain nombre d'opérations. Leur du-
36
rées et les contraintes auxquelles elles sont soumises sont données dans le tableau
suivant :
Tâches Durées Contraintes d'antériorité
A 30 -
B 5 après A
C 12 après A
D 17 après A
E 4 après B et C
F 3 après C
G 14 après E et F
H 8 après D
Déterminer un ordonnancement des tâches qui minimise la durée d'exécution du
procédé de construction.
La méthode française : Méthode du Potentiel Métra (M.P.M)
Le graphe-tâches est le suivant :
5
B E
4
30 12
3 G
0 30 12
début A C F
14
30
8 Fin
17
D H
37
Par application de l'algorithme précédent, on obtient les dates au plus tôt ti et
au plus tard Ti de début d'exécution des opérations. Les résultats sont données dans
le tableau suivant :
Sommets : xi ti Ti Longueurs des intervalles de ottement : Ti − ti
x0 0 0 0
A 0 0 0
B 30 37 7
C 30 30 0
D 30 35 5
E 42 42 0
F 42 43 1
G 46 46 0
H 47 52 5
xN 60 60 0
Il y'a donc un seul chemin critique :
x0 → A → C → E → G → xN
38
début x0
A(30)
x1
B(5)
D(17) C(12)
x4 x3 x2
i(0)
i(0)
H(8) F(3) x5
E(4)
x10 x7 x6
i(0)
i(0)
x8
i(0)
G(14)
x9
i(0)
Fin xN
Deuxième représentation :
Dans les deux cas, nous avons introduit, pour exprimer certaines contraintes de
postériorités strictes, des tâches ctives de durée nulle, notés i et représentées par
des arcs en traits discontinus. Surabondants dans la première gure, leur nombre a
été réduit dans la deuxième gure où, toutefois, un arc ctif (x3 , x2 ) est nécessaire
pour traduire que la tâche C doit être terminée avant que la tâche E ne puisse
commencer.
Par application de l'algorithme précédent, au graphe de la deuxième gure, on
obtient les dates au plus tôt ti et au plus tard Ti de début de réalisation des étapes
ainsi que les diérentes marges des opérations. Les résultats sont données dans les
39
x2
E(4)
B(5)
i(0)
F(3) x5
A(30) C(12) G(14)
début : x0 x1 x3
Fin :xN
D(17)
H(8)
x4
tableaux suivants :
Sommets : xi ti Ti Longueurs des intervalles de ottement : Ti − ti
x0 0 0 0
x1 30 30 0
x2 42 42 0
x3 42 42 0
x4 47 52 5
x5 46 46 0
xN 60 60 0
40
dans l'exemple de déterminer ce chemin sur base des intervalles de ottement de
longueur nulle ; pour l'obtenir, il sut d'appliquer l'algorithme d'identication du
plus long chemin de x0 à xN ou de repérer les arcs dont toutes les marges sont
nulles.
10 20 30 40 50 60
41
Les segments sont prolongés en pointillés d'une longueur égale à l'intervalle de
ottement associé à chaque tâche, ce qui permet de voir d'une part la succession
des tâches et d'autres part les retards qu'on peut apporter à leur réalisation.
42
Chapitre 6
linéaire
43