Vous êtes sur la page 1sur 23

TABLE DES MATIÈRES

Introduction à la recherche opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii

1. Programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1. Formulation d’un problème de programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Dualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Algorithme du simplexe (ou méthode de Dantzig) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2. Notions sur les graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13


2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Généralités et définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3. Chemins optimaux d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Problème de plus court ou plus long chemin d’un sommet i à un sommet j. . . . . . . . . . . . . . 15
Algorithme de FORD (plus long chemin d’un sommet i à un sommet j) . . . . . . . . . . . . . . . . 15

3. Ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1. Position du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. La méthode M.P.M (Roy 1960) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3. La méthode PERT (Malcolm, Roseboom, Clark et Fasar :1959) . . . . . . . . . . . . . . . . . . . 18
3.4. Conclusion et remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

i
Chapitre 0. Table des matières

Introduction à la recherche opérationnelle


La recherche opérationnelle est un ensemble de processus d’aide à la décision qui permettent de
trouver une solution optimale (si elle existe) grâce à la modélisation mathématique.
La modélisation mathématique peut se décliner en plusieurs types d’optimisation : la program-
mation linéaire, la programmation non linéaire, l’ordonnancement, les problèmes de flux, les
problèmes d’affectation, . . . On aborde dans ce cours la recherche opérationnelle appliquée à
l’économie et la gestion avec le but :
(1) De modéliser un problème économique en un programme linéaire ou par un graphe ;
(2) De résoudre mathématiquement le programme obtenu ;
(3) D’interpréter en terme économique les résultats mathématiques obtenus.
Un modèle est une représentation de la réalité qui capture « l’essence » de la réalité, i.e. l’angle
qui nous intéresse. La programmation linéaire est un outil qui permet de résoudre les cas les plus
simples. Le but essentiel est d’introduire le principe de modélisation et le rôle de la programma-
tion mathématique. Dans la réalité, la programmation mathématique utilisée est souvent plus
complexe que la programmation linéaire (programmation non linéaire, programmation probabi-
liste, ....) et les calculs se font de façon informatique.

ii
CHAPITRE 1
PROGRAMMATION LINÉAIRE

1.1. Formulation d’un problème de programmation linéaire


Un programme linéaire (P.L) permet de trouver (s’il existe) le maximum ou le minimum d’une
forme linéaire dite fonction objectif tout en respectant certaines équations ou inéquations
affines dites contraintes. La forme canonique générale d’un problème de P.L est la suivante :

n
Optimiser Z = ∑ cj xj (1)
j=1

⎧ n


⎪ ∑ tij xj ≤≥ di , i = 1, . . . , p (2)



⎪j=1





(P) ⎪


⎪ n

⎪ ∑ tij xj = di , i = 1 + p, . . . , m
⎪ (3)

s.l.c ⎨j=1










⎪xj ≥ 0, j = 1, . . . , q (4)







⎩xj , de signe quelconque pour j = 1 + q, . . . , n

⎪ (5),

où (tij )1≤i≤m , (cj )1≤j≤n et (di )1≤i≤m sont des constantes et (xj )1≤j≤n la variable (inconnue).
1≤j≤n
La fonction Z s’appelle la fonction économique ou fonction objectif ou encore critère.
Les inéquations (2) et équations (3) sont les contraintes réelles.
Les inéquations (4) et (5) sont les contraintes de non négativité.
La fonction à optimiser peut être soit une fonction à minimiser, soit une fonction à maximiser
selon le besoin.

On présente ici les cas généraux de minimisation et maximisation avec l’interprétation écono-
mique de chaque élément du programme.
1
Chapitre 1. Programmation linéaire

1.1.1. Minimisation d’un coût sous des obligations de fonctionnement


En toute généralité, un problème de minimisation d’un coût sous des obligations de fonction
s’écrit :
n
Minimiser Z = ∑ cj xj
j=1
⎧ n


(Pmin ) ⎪



∑ tij xj ≥ di , i = 1, . . . , m
⎪j=1
s.l.c ⎨





⎩xj ≥ 0, j = 1, . . . , n

Première interprétation
i bien produit
j activité
Paramètres

di demande de bien i à satisfaire


tij taux de production du bien i par l’activité j
cj coût unitaire de l’activité j
xj niveau de l’activité j

Deuxième interprétation
i activité
j bien consommé (matière première)
Paramètres

di niveau minimum de fonctionnement de l’activité i


tij taux de fonctionnement de l’activité i pour la consommation du bien j
cj coût unitaire du bien j
xj quantité consommé du bien j

Exemple 1.1. Les dirigeants d’une entreprise veulent lancer une nouvelle gamme de crèmes
pour le visage. Ces crèmes seront fabriquées à partir de deux matières premières : la lanoline et
la glycérine. Pour des raisons techniques, chaque fournisseur propose un lot de deux pots indisso-
ciables : un pot de lanoline et un pot de glycérine. Les offres des fournisseurs se distinguent par
les poids respectifs des deux pots et par le prix du lot. Les livraisons auront lieu systématique-
ment au début de chaque cycle de fabrication. Chaque cycle de fabrication nécessite au moins
120 g de lanoline et au moins 90 g de glycérine. Trois fournisseurs sont pressentis pour livrer ces
matières. Voici leurs propositions :
Fournisseurs Prix du lot lanoline glycérine
A 120 F 6g 2g
B 132 F 6g 4g
C 60 F 2g 2g
2
1.1. Formulation d’un problème de programmation linéaire

L’entreprise désire déterminer le nombre de lots qu’il faut achetés à chaque fournisseurs pour
optimiser le coût d’approvisionnement. On note a, b et c, les quantités de lots achetés respec-
tivement chez les fournisseurs A, B et C. Écrire le programme linéaire (P) qui modélise ce
problème.

1.1.2. Maximisation d’un gain sous des contraintes de capacité


En toute généralité, un problème de maximisation d’un gain sous des contraintes de capacité
s’écrit :
n
Maximiser Z = ∑ cj xj
j=1
⎧ n


(Pmax ) ⎪



∑ tij xj ≤ di , i = 1, . . . , m
⎪j=1
s.l.c ⎨





⎩xj ≥ 0, j = 1, . . . , n

Première interprétation
i bien consommé
j activité
Paramètres

di quantité disponible de bien i


tij taux d’utilisation du bien i par l’activité j
cj gain unitaire de l’activité j
xj niveau de l’activité j

Deuxième interprétation
i activité
j bien produit
Paramètres

di capacité maximum de fonctionnement de l’activité i


tij taux de fonctionnement de l’activité i pour la production du bien j
cj gain unitaire de l’activité j
xj quantité produite du bien j

Exemple 1.2 (Société Benoît). La société Benoît décide de se diversifier dans une nouvelle
activité qui consiste à fabriquer deux produits répertoriés sous les noms de code X et Y . Elle a
résumé dans le tableau suivant les informations pour cette fabrication :
3
Chapitre 1. Programmation linéaire

Nombre d’unité temps


Produit Machine A Machine B Machine C
X 1 2 2
Y 1 3 5
Disponibilité 250 600 900
Sachant que le prix de vente d’une unité de produit X est 9 091 F et celui de Y est 11 256,5 F.
Écrire le programme linéaire qui permet de déterminer le chiffre d’affaire maximal.

1.1.3. Caractérisation des solutions admissibles


Définition 1.1 (notion de solutions).
— Une solution est admissible ou réalisable si elle satisfait toutes les contraintes.
— La région admissible est l’ensemble P des solutions admissibles ou réalisables.
— Une solution optimale est une solution admissible qui optimise le critère.

Exemple 1.3. Construire dans le plan muni d’un repère orthogonal, l’ensemble des solutions
admissible du programme obtenu dans l’exemple 1.2.

Définition 1.2 (contrainte saturée).


Une contrainte d’inégalité est dite saturée (ou serrée ou encore active ) pour une solution si elle
est vérifiée avec le signe d’égalité et non saturée (ou non serrée ou encore inactive) si elle est
vérifiée avec le signe d’inégalité stricte.

Théorème 1.1. L’ensemble P des solutions admissibles d’un programme linéaire est soit :
— un polytope est une figure bornée à plusieurs côtés,
— un polyèdre convexe, non vide mais non borné,
— un ensemble vide.

Remarque 1.1. Un polyèdre convexe est l’intersection (éventuellement vide) d’un nombre fini
de demi-espaces fermés et/ou d’hyperplans. Un polyèdre convexe, borné et non vide, est appelé
un polytope.

1.1.4. Caractérisation géométrique des solutions optimales


Théorème 1.2.
(1) Si P l’ensemble admissible de (P) :
• Soit la solution optimale est unique et est située en un sommet de P ;
• Soit il existe une infinité de solutions optimales qui sont les points d’une face de P. Ces
solutions optimales sont donc combinaisons convexes d’un nombre fini de sommets de
P.
(2) Si P est un polyèdre convexe, non vide mais non borné, en plus des situations décrites
ci-dessus, il est possible que le problème n’ai pas de solution optimale à distance finie ; il
existe une solution admissible (à l’infini) telle que Z = ∞ .
(3) Si P est un ensemble vide, le problème n’a pas de solution optimale.

4
1.2. Dualité

1.1.5. Interprétation économique


Pour illustrer cette partie, on considère deux produits P1 et P2 que l’on produit et vend dans
les quantités x1 et x2 . On veut trouver la solution optimale dans ce domaine. Pour cela, on peut
penser à maximiser le revenu tiré des productions, i.e. le chiffre d’affaires. Soit p1 et p2 les prix
de vente unitaire des produits P1 et P2 . Le chiffre d’affaires est alors :
CA = p1 x1 + p2 x2 .
Au niveau du chiffre d’affaires, on ne tient pas compte des coûts. Une entreprise peut faire un
chiffre d’affaires important sans pour autant réaliser de bénéfices.
Si l’on veut maximiser le gain de l’entreprise, on cherche alors à maximiser ses bénéfices, i.e.
son chiffre d’affaire moins ses coûts. Les coûts se distinguent en coûts fixes (frais administratifs,
équipements,. . . ) et coûts variables (coût des matières premières, coût de main d’œuvre,. . . ). On
représente les coûts fixes par la constante F et v1 et v2 les coûts variables des deux biens. La
fonction à maximiser est alors :
max (x1 (p1 − v1 ) + x2 (p2 − v2 ) − F ).
Retrancher une constante ne change pas notre problème de maximisation.
On appelle marge sur coût variable la différence entre le chiffre d’affaires et les coûts variables et
marge sur coût variable unitaire la différence entre le prix d’un bien et le coût variable unitaire
de ce bien. Maximiser les bénéfices revient donc à maximiser la marge sur coût variable :
max x1 (p1 − v1 ) + x2 (p2 − v2 )
puisque F ne dépend pas des variables x1 et x2 .

1.1.6. Résolution graphique


La résolution graphique d’un programme linéaire ne peut se faire que pour les dimensions 2 et 3.
Elle est donc peu efficace mais permet de bien comprendre le rôle de la programmation linéaire.
Les étapes sont :
1. Tracer le domaine des solutions admissibles ;
2. Tracer les droites isomarges (resp. isocoût si on est dans un problème de minimisation),
i.e. les droites unissant les plans de production conduisant à une même marge.
3. L’optimum est alors la solution réalisable située sur la droite isomarge la plus haute (resp.
sur la droite isocoût la plus basse).
4. En claire la solution optimale est située en au moins un sommet du polyèdre des solutions
admissibles ou réalisable de P.
Remarque 1.2. Avec les notations introduites, l’équation de la droite isomarge est :
n
(1.1) ∑ cj xj = d d ≥ 0 et n≥0
j=1

Exemple 1.4. Résoudre graphiquement le programme linéaire obtenu dans l’exemple 1.2.

1.2. Dualité
A chaque contrainte, on peut associer un nombre appelé « prix dual » défini comme l’accroisse-
ment marginal de la fonction économique lorsque le second membre de la contrainte considérée
varie d’une unité. A l’optimum, la solution du programme et les prix duaux vérifient alors un
5
Chapitre 1. Programmation linéaire

ensemble de relations, les relations de complémentarité, qui constituent des conditions néces-
saires et suffisantes d’optimalité. Ces conditions généralisent les conditions de Lagrange et sont
un cas particulier des conditions de Karush Kuhn et Tücker qui interviennent en programmation
non linéaire. D’un point de vue économique, les prix duaux permettent de localiser les modes
d’extension les plus profitables.

Définition 1.3. Le prix dual associé à la contrainte i est la variation de la fonction économique
pour une variation unitaire du second membre de la contrainte i

1.2.1. Domaine de validité d’une solution réalisable de base


La variation de la fonction économique par rapport aux prix dual est localement proportionnelle
à la variation du niveau de la contrainte. Ce niveau de variation est généralement limité par les
conditions de non négativité. La fonction économique varie tant que la variation de la contrainte
ne modifie pas le sommet optimal. Lorsque la contrainte n’est plus liée au sommet optimal (cas
des contraintes utilisées partiellement), sa variation n’impacte plus la fonction économique.

Remarque 1.3.
• Bien qu’on utilise le plus souvent en situation d’optimalité, la notion de prix duaux est
relative à un sommet quelconque, pas forcément optimal.
• Lorsqu’on effectue des variations sur le second membre des contraintes, les coordonnées du
sommet varient (ce qui conduit à une variation de la fonction économique), mais ce sont
les mêmes variables qui composent ce sommet. La structure de production et d’utilisation
des facteurs reste constante et donnée.

1.2.2. Localisation de la marge et du profit sur les facteurs fixes


On considère ici un problème de maximisation de marge sur coût variable. Les prix duaux sont
donc la contribution marginale apportée par une extension de capacité. En terme de profit,
pour savoir si une extension est profitable, il faut comparer le prix dual de la contrainte à
son prix d’usage unitaire, i.e. l’accroissement des coûts fixes (équipements,. . . ) nécessaires pour
l’extension d’une unité de la contrainte correspondante. On rappelle que cette règle de décision
n’est valable que localement, dans le domaine de validité de l’extension. On a alors la règle de
décision suivante :
• Profit=Prix daul-Prix d’usage >0, l’extension est profitable ;
• Profit=Prix daul-Prix d’usage ≤0, l’extension n’est pas profitable.

1.2.3. Primal - dual


Définition 1.4 (Primal-dual). On considère le problème de maximisation suivant sous sa forme
canonique :
n
Maximiser Z = ∑ cj xj
j=1
⎧ n


(Pmax ) ⎪



∑ tij xj ≤ di , i = 1, . . . , m
⎪j=1
s.l.c ⎨





⎩xj ≥ 0, j = 1, . . . , n


On appelle programme dual (canonique) de (Pmax ), le programme linéaire suivant :
6
1.2. Dualité

m
Minimiser Z ′ = ∑ di yi
i=1
⎧ m

(Dmin ) ⎪



∑ tji yi ≥ cj , j = 1, . . . , n
⎪i=1
s.l.c ⎨





⎩yi ≥ 0,
⎪ i = 1, . . . , m

Remarque 1.4 (Passage du primal au dual et vice versa).


(1) Les programmes (Pmax ) et (Dmin ) sont dits primal et dual, et vice versa.
(2) Si (Pmax ) est à maximiser alors (Dmin ) est à minimiser et vice versa.
(3) Les inégalités de (Pmax ) et de (Dmin ) sont de sens opposés.
(4) Les seconds membres de (Pmax ) sont les coefficients de la fonction économique de (Dmin )
et vice versa.
(5) Il y a autant de variable dual dans (Dmin ) que de contraintes dans le primal (Pmax ) et
vice versa.
Théorème 1.3 (dualité forte). Si le primal (P) admet une solution optimale alors le dual (D)
admet une solution optimale et vice versa et dans ce cas on a
(1.2) Valeur optimale du primal = Valeur optimale du dual.

Théorème 1.4 (relations de complémentarités). Si x est une solution optimale de (Pmax ) et y


une solution optimale de (Dmin ) alors (x, y) vérifie la relation suivant :
⎧ n
pour i = 1; . . . ; m




⎪ yi ( ∑ tij xj − di ) = 0


⎪ j=1

(RC) ⎨


⎪ m




⎪ x j ( ∑ tji yi − cj ) = 0 pour j = 1; . . . ; n

⎩ i=1

Remarque 1.5 (Conséquence).


(1) Toutes les variables duales (respectivement primales) associées à des contraintes non sa-
turées du primal (respectivement du dual) sont nulles.
(2) Les autres variables duales (respectivement primales) associées à des contraintes saturées
du primal (respectivement du dual) saturent les contraintes du dual (respectivement du
primal) auxquelles elles sont associées.
(3) Le théorème 1.4 permet de résoudre le problème dual (Dmin ) connaissant la solution
optimale du primal (Pmax ) et vice versa.

Exemple 1.5 (Camp vacance). Un groupe d’étudiants organisent un voyage de vacance en car
pour le Ghana. Il y a 425 étudiants et 9500kg de bagages à transporter.
1) La compagnie Alpha propose trois types de cars en location. Les caractéristiques unitaires
sont résumées dans le tableau suivant :

7
Chapitre 1. Programmation linéaire

Lux Confort Economique


Nombre de passagers 25 40 50
poids des baggages 1000 600 500
coût de location 8000 7200 7000
Déterminer la combinaison qui permet le coût minimum de location .
2) La compagnie Bêta propose de convoyer les étudiants moyennant un prix forfaitaire par
place et un prix forfaitaire par kg de bagage transportés. Déterminer le prix maximum
par place et par kg que devrait demander la compagnie Bêta pour que :
— ce mode de transport soit plus avantageux pour les étudiants,
— son chiffre d’affaire soit maximal.

1.3. Algorithme du simplexe (ou méthode de Dantzig)


Nous avons signalé ci-dessus que lorsque le nombre d’inconnues dans un programme de pro-
grammation linéaire dépasse 2 (voir 3), la résolution graphique est difficile sinon impossible.
Nous présentons dans ce paragraphe une autre méthode de résolution très utile dans ces cas :
l’algorithme du simplexe pour un problème de maximisation. Lorsqu’on a un problème de mini-
misation, on utilise la théorie de la dualité pour le transformé en un problème de maximisation
que l’on résout par le simplexe puis on utilise les relations de complémentarités pour trouver les
solution du problème de minimisation.
La solution optimale, si elle existe, se trouve sur l’un des sommets du polyèdre des solutions
admissibles. Lorsque l’on est en dimension supérieure à 2, une méthode consiste à calculer la
fonction économique pour tous les sommets admissibles. On a besoin au préalable d’écrire notre
problème sous forme standard.
Toutes les contraintes d’inégalité sont mises sous forme d’égalité par l’introduction de variables
d’écart non négatives (autant de variables d’écart que de contraintes).
Définition 1.5 (forme standard). La forme standard du programme (Pmax ) est le programme
n
Maximiser Z = ∑ cj xj
j=1
⎧ n


⎪ ∑ tij xj + ei = di , i = 1, . . . , m (α)



⎪j=1
(PS) ⎪




s.l.c ⎨


⎪xj ≥ 0, j = 1, . . . , n








⎩ei ≥ 0,
⎪ i = 1, . . . , m

On suppose que le système (α) est non redondante.


Théorème 1.5. Le problème de P.L. étant mis sous forme standard, chaque sommet du polyèdre
IP correspond à une et une seule solution de base admissible et inversement.
On pourrait donc calculer la valeur de la fonction économique en tous les sommets à partir
de la forme algébrique et trouver la solution optimale du problème, même si la dimension est
supérieure à 2. Mais le nombre de calcul associé explose rapidement. L’algorithme du simplexe
permet de diminuer fortement le nombre de calcul.
Remarque 1.6. Simplexe désigne un polyèdre convexe de Rn possédant (n + 1) sommets.
8
1.3. Algorithme du simplexe (ou méthode de Dantzig)

1.3.1. Algorithme du simplexe


Idée : L’algorithme du simplexe consiste à passer d’un sommet initial du polyèdre des solutions
réalisables (ou admissibles) vers un sommet adjacent tout en ayant soin :
— de ne pas diminuer la valeur de la fonction économique,
— de garder les variables en base positives.
L’algorithme du simplexe contient donc deux phases :
Phase 1 : procédure d’initialisation
Soit la solution initiale est évidente (le cas en général dans ce cours), soit on applique la
méthode des variables artificielles, complément de l’algorithme du simplexe (non abordée
dans le cadre de ce cours).
Phase 2 : procédure itérative
Calculer, à partir d’une solution de base admissible, la solution de base admissible adja-
cente donnant la meilleure amélioration de la fonction économique. Comme ces solutions
sont adjacentes, les ensembles d’indices de base (I) et hors base (J) ne différeront que
d’un seul indice. Le changement de base peut donc se faire aisément.
1. Initialisation : solution réalisable de base (I)
Soit B une sous matrice de T carrée et régulière d’ordre m telle que
Maximiser Z = CB xB + CR xR

⎪BxB + RxR = d

(PS) ⎪

s.l.c ⎨



⎩x ≥ 0,


• Les m variables de xB sont appelés variables de base. Notons I l’ensemble des indices de
base : xB = (xi ; i ∈ I)
• Les (n − m) variables de xR sont appelées variables hors base. Notons J l’ensemble des
(n − m) indices hors base : xR = (xj ; j ∈ J)
Définition 1.6.
Soit I une base du système (α). On appelle réalisable de I ou sommet de base I, et on note
x(I), la solution réalisable ayant des composantes hors base nulles.
Remarque 1.7. Lorsque les variables de base sont non négatives la solution de base est admis-
sible. Lorsqu’au moins une variable de base est nulle, la solution de base est dite dégénérée. Le
problème sera dit non dégénéré si toutes les solutions de base admissibles sont non dégénérées.
2. Passage d’un sommet à un autre
Le principe est de passer d’un sommet à un autre sommet adjacent. Pour cela, il faut suivre une
arête, c’est–à–dire donner une valeur non nulle à une variable hors base, et se déplacer sur cette
arête jusqu’à ce que l’on se trouve sur un nouveau sommet, i.e., qu’une des anciennes variables
de base s’annule. Dans l’algorithme du simplexe, le choix de l’arête à suivre est le suivant :
• On introduit la variable hors base qui fait augmenter le plus la fonction économique, que
l’on appelle variable entrante.
• La variable sortante, imposée par les contraintes de non négativité, sera la variable de
base qui s’annulera la première lorsque l’on augmente la valeur de la variable entrante.
• Il faut donc au préalable de ces deux étapes (puis à la suite de ces deux étapes pour
effectuer l’itération) exprimer les variables de base et la fonction économique en fonction
9
Chapitre 1. Programmation linéaire

des variables hors bases de manière à pouvoir définir la variable entrante et la variable
sortante.
On impose un coefficient de 1 sur les variables de base. L’expression de la fonction économique
en fonction des variables hors base permet de voir si, par rapport au niveau actuel de la fonction
économique, l’introduction d’une variable hors base améliore ce résultat. On en déduit logique-
ment le test d’arrêt de l’algorithme : lorsque aucune variable hors base ne peut augmenter la
valeur actuelle de notre fonction économique, alors on a obtenu la solution optimale.

3. Récapitulatif : le tableau du simplexe


Le tableau du simplexe permet la mécanisation des calculs décrits précédemment. Dans la pra-
tique, les résolutions numériques se font sur ordinateur. Le but principal de la présentation du
tableau du simplexe est donc de comprendre ce que chaque étape représente :
— choix de la variable hors base qui augmente le plus la fonction économique : choix de la
variable entrante ;
— choix de la variable de base qui limite le plus le niveau de la fonction économique : choix
de la variable sortante ;
— expression des variables de base et de la fonction économique en fonction des variables
hors base de manière à pouvoir déterminer les choix précédents.
Important : Au niveau du tableau du simplexe, ces étapes se systématisent de la manière
suivante :
Premier critère de Dantzig : la colonne qui entre dans la base est celle d’indice j ayant le
plus grand coefficient de marge (∆j > 0) le pus grand strictement positif.
di
Deuxième critère de Dantzig : On effectue les opérations pour les indices lignes figu-
tij
rant dans le tableau colonne de gauche. La colonne qui sort de la base est celle d’indice i
di
ayant le plus petit rapport ( > 0 ) strictement positif.
tij
Règles pratiques :
(1) On repère (en encerclant) le pivot = tij où i est déterminer par le deuxième critère et j
par le premier critère.
(2) On divise les valeurs de la ligne du pivot par le pivot .
(3) L’indice i qui sort de la base (colonne de gauche) devient l’indice j qui entre dans la base.
(4) Toutes les lignes du tableau ayant un zéro (0) dans la colonne du pivot ne sont pas
modifiées.
(5) Les autres lignes du tableau (ayant un élément différent de zér 0) sont modifiées comme
suit :
• On multiplie la nouvelle ligne du pivot par l’élément différent de zéro et on la soustrait
de la ligne à modifiée ;
• Cette opération s’applique également à la ligne de la fonction économique toute fois
dans la colonne solution on effectue une addition au lieu d’une soustraction.

Remarque 1.8.
1) Le tableau du simplexe est optimal dès l’or que tous les coefficients de la fonction économique
sont inférieurs ou égaux à zéro (∆j ≤ 0).
2) On modifiera alors toujours en priorité la ligne de la fonction économique.
10
1.3. Algorithme du simplexe (ou méthode de Dantzig)

Théorème 1.6 (lecture des solutions duales dans le tableau optimal).


Soient ei , i = 1; . . . ; m les variables d’écart associées aux contraintes du primal et yi , i = 1; . . . ; m
les variables duales associées respectivement à ces contraintes du primal. Alors dans le tableau
optimal du simplexe on a :
(1.3) yi = −∆ei , i = 1; . . . ; m et Valeur optimale du dual = Valeur optimale du primal.
Exemple 1.6. Résoudre par la méthode du simplexe le problème posé par la société Bétha
(Exemple 1.5).

11
CHAPITRE 2
NOTIONS SUR LES GRAPHES

2.1. Introduction
Les graphes permettent de formaliser un certain nombre de problèmes qui se pose en recherche
opérationnelle. Citons parmi ceux-ci :
— les problèmes de circulation (ou problèmes de flot) : transport d’une production de diffé-
rentes usines vers différents lieux de distribution.
— représentation de contraintes de succession que doivent respecter certaines opérations de
production (problèmes d’ordonnancement).
— choix entre plusieurs actions (choix d’investissement) comparés en fonction de plusieurs
critères.

2.2. Généralités et définitions


• Soit X = {x1 ; x2 ; . . . ; xi ; ...; xn } = {1; 2; . . . .; i; . . . ..; n} un ensemble dit ensemble de som-
mets ou de nœuds et R une correspondance de X dans l’ensemble des parties de X. le
couple G = (X; R) est appelé graphe.
• Un couple ordonné u = (i; j) tel que j ∈ R(i) est appelé arc du graphe G, i est l’extrémité
origine et j est l’extrémité finale de l’arc u.
• L’ordre du graphe est le cardinal de X, on le note : O(G) = Card(X) = n.
• On note U l’ensemble des arcs du graphe alors G = (X; U ). Le graphe ainsi définit peut
être représenté par un ensemble de points reliés entre eux par des flèches. Une flèches relie
un sommet i à un sommet j si j ∈ R(i).
i j
• Un sommet j est dit suivant ou successeur d’un sommet i si j ∈ R(i), autrement dit il y
a une flèche de i vers j. Dans ce cas i est dit précédent ou prédécesseur de j.
i j
• Un sommet sans précédent est appelé entrée du graphe.
• Un sommet sans suivant est appelé sortie du graphe.
• On note S(i) = R(i), l’ensemble des suivants et P (i) = R −1 (i), l’ensemble des précédents
de i. Le tableau à simple entrée qui pour tout i énumère les éléments de S(i) (resp P (i))
13
Chapitre 2. Notions sur les graphes

est appelé dictionnaire des suivants (resp précédents) du graphe G.

Proposition 2.1. On note sur la ligne de i le numéro des lignes dans lesquelles i apparaissait
comme suivant et on obtient le dictionnaire des précédents et vice versa.

Définition 2.1 (matrice d’adjacence).


La matrice d’adjacence associée au graphe G d’ordre n, est la matrice carrée booléenne d’ordre
n, A = (aij ) 1≤i≤n définie par
1≤j≤n

⎪ 1 si j ∈ S(i)

(2.1) aij = ⎨

⎪ 0 si j ∉ S(i).

Remarque 2.1. Dans la matrice d’adjacence associée au graphe G on a :
• Si E est une entrée du graphe alors la colonne correspondante est nulle.
• Si S est une sortie du graphe alors la ligne correspondante est nulle.

Définition 2.2 (chemins d’un graphe).


Soit G = (X; U ) un graphe d’ordre n avec X = {1; 2; . . . ..; i; . . . ..; n}.
• Un chemin est une suite ordonné de sommets ch = (i1 ; . . . .; ik ; . . . .; ip ) tel que pour tout
k on ait : ik+1 ∈ S(ik ).
• Un circuit est un chemin qui se referme sur lui-même c’est-à-dire : cc =(i1 ; . . . .; ik ; . . . .; ip )
est un circuit si i1 = ip .
• Si i ∈ S(i) on dit que i est une boucle et cc = (i; i) est un circuit.
i
• La longueur (au sens des arcs) d’un chemin est le nombre d’arcs qui le compose. Ainsi la
longueur d’un chemin à p sommets est p − 1.
• Un chemin est dit hamiltonien s’il passe une et une seule fois par chaque sommet du
graphe, il est pré hamiltonien s’il passe au moins une fois par chaque sommet du graphe.
• Un chemin est dit eulérien s’il passe une et une seule fois par chaque arc du graphe, il est
dit pré-eulérien s’il passe au moins une fois par chaque arc du graphe.

Théorème 2.1 (chemin de longueur p).


Soit G un graphe d’ordre n et A = (aij ) la matrice d’adjacence associée. On pose pour tout
naturel non nul p, M = Ap = (mij).
1) Le nombre mij est égal au nombre de chemins de longueur p allant du sommet i au
sommet j.
2) Si An n’est pas nulle (An ≠ 0) alors le graphe G contient des circuits. Un sommet i est
situé sur un circuit de longueur p si le terme diagonal mii de Ap est différent de 0 (mii ≠ 0).

Définition 2.3 (niveau ou rang d’un sommet).


Tous les graphes considérés ici sont sans circuit. Le niveau ou rang d’un sommet i est la longueur
du plus long chemin de l’entrée du graphe au sommet i.

Théorème 2.2 (procédure de détermination du rang).


14
2.3. Algorithme de FORD (plus long chemin d’un sommet i à un sommet j)

a) On pose N0 = {i ∈ X ∣ P (i) = ∅} l’ensemble des sommets sans précédent ou ensemble des


sommets de rang 0.
b) On barre les sommets de rang 0 partout où ils figurent dans la colonne des précédents. Si
une ligne a ainsi tous ces précédents barrés le sommet correspondant est de rang 1.
c) On réitère le procédé b) en augmentant de 1 la valeur du rang jusqu’à ce que tous les
sommets soient barrés.
Remarque 2.2 (utilité du rang).
L’ordonnancement par niveau croissant permet une représentation plus simple du graphe et la
recherche des chemins optimaux se fait plus facilement sur un graphe ordonné par niveau.

2.3. Chemins optimaux d’un graphe


Définition 2.4 (Valuation d’un arc).
On affecte à chaque arc u = (i; j) un nombre positif l(u) = lij appelé sa valuation qui peut-être
sa longueur, sa durée, son coût, sa capacité ....
lij
i j

Définition 2.5 (Longueur d’un chemin).


La longueur (L(ch)) d’un chemin (ch) (au sens de la valuation) est la somme des valuations des
arcs qui le composent c’est-à-dire : L (ch) = ∑ l(u) .
u∈ch

Problème de plus court ou plus long chemin d’un sommet i à un sommet j.


Soient i et j deux sommets d’un graphe, on cherche à déterminer le plus court ou le plus long
chemin reliant i à j. Il s’agit donc de résoudre le problème d’optimisation :

(CO) Optimiser L (ch(i; j)), s.l.c ch(i; j) ∈ G.


Remarque 2.3. On peut lister tous les chemins de i à j et leur longueur et sélection le (ou
les) chemins optimaux. Cependant cette méthode est complexe quand le nombre de chemins est
important.

Algorithme de FORD (plus long chemin d’un sommet i à un sommet j)


1) On supprime du graphe tous les sommets de rang inférieur ou égal au rang de i ainsi que
tous ceux de rang supérieur ou égal au rang de j. On supprime également du graphe tous
les arcs ayant perdu au moins un sommet. Dans le nouveau sous graphe ainsi obtenu le
rang de i est égal à 0 et le rang de j est maximal.
2) a) On pose ti = 0,
b) Prendre les sommets k par rang croissant et faire : tk = max{tx + lxk ∶ x ∈ P (k)}. «
La marque tj est la longueur du plus long chemin de i à j »,
3) a) On pose ch = (. . . ; j),
b) On cherche le sommet x tel que tj = tx + lxj et on pose ch = (. . . ; x; j),
c) On répète le procédé b) en prenant les sommets par rang décroissant jusqu’à obtenir le
sommet i. « Le chemin ch = (i; . . . ; j) est le plus long chemin du sommet i au sommet
j.»
15
Chapitre 2. Notions sur les graphes

Remarque 2.4. En remplaçant max par min dans 2) b) on obtient le plus court chemin du
sommet i au sommet j.
Remarque 2.5. Il existe d’autres algorithmes de recherche de plus court ou plus long chemin
dans un graphe. Par exemple l’ algorithme de Moore – Dijstra (1959 – 1960) permet de calculer
le plus court chemin d’un sommet initial à tous les autres sommets. Il donne l’arborescence des
plus courts chemins. Des variantes de cet algorithme ont été proposées par Dantzig (1960) et par
Whiting – Hillier (1960).

16
CHAPITRE 3
ORDONNANCEMENT

3.1. Position du problème


Les réalisations importantes telles que la construction d’un barrage, d’une centrale, d’un im-
meuble, le fonctionnement d’une chaîne de fabrication etc, demande une surveillance constante
et une parfaite coordination des différentes cellules de travail pour éviter des pertes de temps
souvent coûteuses. Les problèmes liés à cette coordination sont des problèmes d’ordonnancement.
En toute généralité, il se pose sous la forme suivante : Étant donné un objectif qu’on se propose
d’atteindre, et dont la réalisation suppose l’exécution préalable de multiples tâches soumises à de
nombreuses contraintes, déterminer l’ordre et le calendrier (ou planning) d’exécution des divers
tâches. Les contraintes peuvent être :
— de succession dans le temps (l’exécution de la tâche j ne peut commencer qu’un certain
laps de temps ou lorsque la tâche i est achevée).
— de date (une tâche ne peut commencer avant une certaines date, indépendamment, du
fait qu’elle doit succéder à d’autres tâches).
L’objectif consiste à déterminer le planning optimal pour la réalisation du projet.
La représentation d’un problème d’ordonnancement par un graphe permettra d’identifier les
tâches prioritaires et de détecter à temps ( pour prendre des mesures correctives nécessaires ) les
retards ou les déplacements de moyens.
Nous étudierons deux représentations possibles :
— Le graphe potentiels – tâches ou méthode M.P.M.
— Le graphe potentiels – étapes ou méthode PERT.

3.2. La méthode M.P.M (Roy 1960)


Méthode des Potentiels – Métra développée en France par la S.E.MA.
3.2.1. Principe de la représentation
- A chaque tâche (ou opération) i on associe un sommet i du graphe (par abus).
- On définira un arc de i à j de longueur di ,la durée de la tâche i si la tâche i doit précéder la
tâche j.
di
i j

17
Chapitre 3. Ordonnancement

- on ajoute à ce graphe deux sommets correspondants à deux tâches fictives :


• α= tâche début des travaux de durée d0 = 0 qui doit être antérieure à toutes les autres
tâches, autrement dit α est relié à toutes les tâches sans précédent.
• ω= tâche fin des travaux qui doit être postérieur à toutes les autres tâches, autrement dit
toutes les tâches sans suivant sont reliées à ω.

3.2.2. Le calendrier
Le travail commence toujours à la date 0. On cherche un ordonnancement qui minimise la durée
totale du projet c’est–à–dire la date fin des travaux. Pour qu’une tâche débute, il est nécessaire
que toutes les tâches qui la relient à la tâche début du projet soient réalisées.
Définition 3.1 (date de début au plus tôt).
La date au plus tôt ti de début de la tâche i est la longueur du plus long chemin de α à i.
La procédure de calcul des ti est donc :
a) On pose tα = 0.
b) Prendre les sommets i par rang croissant et faire :ti = max{tj + dj ∶ j ∈ P (i)}.
Conséquence :
la durée minimale du projet est donc tω égale à la longueur du plus long chemin de α à ω.
Définition 3.2 (date de début au plus tard Ti ).
On fixe à tω la durée du projet. La date au plus tard Ti pour commencer la tâche i est la longueur
du plus long chemin de i à ω.
La procédure de calcul des Ti est la suivante :
a) On pose Tω = tω
b) prendre les sommets i par rang décroissant et faire :
Ti = min{Tj − di ∶ j ∈ S(i)} = min{Tj ∶ j ∈ S(i)} − di .
Définition 3.3 (marge totale).
La marge totale est le retard maximum que l’on peut prendre dans la mise en route d’une tâche
sans remettre en cause les dates au plus tard des tâches suivantes, donc sans retarder la fin des
travaux. Pour une tâche i donnée, cette marge totale est : mi = Ti − ti .
Définition 3.4 (marge libre).
La marge libre est le retard maximum que l’on peut prendre dans la mise en route d’une tâche
sans remettre en cause les dates de début au plus tôt d’aucune autre tâche. Pour une tâche i
donnée, cette marge libre est : Mi = min{tj − ti − di ∶ j ∈ S(i)}.

3.3. La méthode PERT (Malcolm, Roseboom, Clark et Fasar :1959)


Program Evaluation Research Task (ou Review Technic) de conception américaine.

3.3.1. Principe de la représentation


- à chaque tâche correspond un arc du graphe, dont la longueur est égale à la durée de la tâche.
i , di

- chaque sommet du graphe est un évènement (ou étape) signifiant que toutes les tâches qui
arrivent sont terminées et toutes celles qui partent peuvent commencer.
Exemple 3.1. Représenter les contraintes d’antériorité suivantes et commenter. Les tâches a et
b sont précédentes des tâches c et d
18
3.3. La méthode PERT (Malcolm, Roseboom, Clark et Fasar :1959)

Remarque 3.1. La représentation en PERT, de certaines relations d’antériorité nécessite l’in-


troduction de tâches fictives de durée 0.
Exemple 3.2. Les tâches a et b sont précédentes de la tâche c et la tâche d est suivante de la
tâche b. Représenter les contraintes d’antériorité ci-dessus et commenter.
— La détermination des niveaux ne correspond pas à la formulation PERT, puisque les
niveaux correspondent à des sommets, alors que les tâches sont représentées ici par des
arcs.
— on définira une étape début du projet d’où partent toutes les tâches sans précédent et
une étape fin du projet à laquelle aboutissent toutes les tâches sans suivant.
— Si une tâche j doit succéder à une tâche i, l’extrémité origine de l’arc j est égale à
l’extrémité finale de l’arc i.
i , di j , dj
E
— Pour chaque tâche i, on détermine P (i) l’ensemble de ses précédents et les différentes
étapes du projet correspondent aux différents ensemble P (i).

3.3.2. Le calendrier
On note α (ou 1) l’étape début du projet et ω (ou n) l’étape fin du projet.
Définition 3.5 (date de début au plus tôt).
Pour chaque étape x on définit sa date de début au plus tôt tx égal à la longueur du plus long
chemin de α à x. tx est appelé aussi la date attendue de l’évènement x. La date de début au plus
tôt de chaque étape x est égale à la date de début au plus tôt de toutes les tâches qui partent
de x.
di
i,

tx = ti = tj
j , dj
x
tx

Définition 3.6 (date de début au plus tard).


On détermine pour chaque étape y, t∗y sa date de début au plus tard. Soit i une tâche aboutissant
à l’étape y, alors la date de début au plus tard de la tâche i est : Ti = t∗y − di .

t∗y
i , di
y Ti = t∗y − di

Définition 3.7 (marge total). : mi = Ti − ti


Définition 3.8 (marge libre).
Soit i une tâche joignant l’étape x à l’étape y, alors sa marge libre est : Mi = ty − di − tx .

i , di
x y
tx ty

19
Chapitre 3. Ordonnancement

3.4. Conclusion et remarques


Pour toute tâche i on a 0 ≤ Mi ≤ mi . (Commenter).
Définition 3.9 (tâche critique).
• une tâche i est dite critique si sa marge totale mi = 0, en d’autres termes si sa date de
début au plus tôt est égale à sa date de début au plus tard c’est–à–dire ti = Ti .
• les tâches critiques sont situées sur le (un) chemin critique. Si un retard est pris sur une
des tâches critiques la durée minimale du projet sera décalée d’autant.
• ainsi on identifie les tâches critiques qui permettent la surveillance de la bonnes marche
des opérations.
• notons qu’il existe toujours au moins un chemin critique de α à ω qui est le plus long
chemin de α à ω. autrement dit la durée minimale du projet est la longueur du plus long
chemin du graphe.
Définition 3.10 (diagramme de GANTT).
Le diagramme en bâtons qui donne l’évolution de l’exécution des tâches en fonction du temps.
(à la date de début au plus tôt ou au plus tard) est appelé diagramme de GANTT.

Temps
A

Tâches

Cas des opérations de durée aléatoire


Si les durées ne sont pas connues de façon exacte, on peut évaluer pour chaque tâche ou opération
pij trois nombres : aij égale à la durée minimale, bij égale à la durée maximale et mij égale à
la durée la plus probable de l’opération pij . On peut obtenir ces nombres en interrogeant par
exemple les chefs d’ateliers, de chantier, de laboratoire etc.
Question : Quelle durée affecter à l’opération pij ? On calcule le temps moyen et la
variance de l’opération pij par le théorème de la limite centrale :

1 bij − aij 2
(3.1) tij = (aij + bij + mij ) et 2
σij =( ) .
6 6
20
3.4. Conclusion et remarques

Et à chaque tâche pij on affecte cette durée moyenne tij . Puis le long du chemin critique on
obtient la durée moyenne du projet :
(3.2) Dm = ∑ tij = ∑ tij .
pij ∈C pij ∈C

Et la variance (du chemin critique) est :


(3.3) 2
σC 2
= ∑ σij .
pij ∈C

Exemple 3.3 (société « HIGH-TECHN »).


La société « HIGH-TECHN » envisage la mise en place de nouveaux équipements industriels.
Dans le cadre de son projet, elle a procédé à la définition d’un certain nombre de tâches à
effectuer et à l’évaluation de leur durée. Les conditions d’antériorité liant ces tâches, et les durées
en semaines de celle-ci, sont rassemblées dans le tableau ci-dessous.
Tâches A B C D E F G H I
Tâches antérieures - D BH A A D F I DE
durée 10 14 14 8 12 22 25 18 6
1) Construire le graphe MPM de cet ordonnancement.
2) Déterminer la durée minimale de réalisation de ce projet.
3) Déterminer le retard maximum que l’on peut admettre au démarrage de la tâche B sans
remettre en cause la date de début au plus tôt des autres tâches.
4) Reprendre les questions 1) 2) et 3) avec la méthode PERT.

21