CHAPITRE 1 PROGRAMMATION LINEAIRE 1. Généralités. Les

Transcription

CHAPITRE 1 PROGRAMMATION LINEAIRE 1. Généralités. Les
5
CHAPITRE 1
PROGRAMMATION LINEAIRE
1. Généralités.
Les modèles de programmation linéaire permettent d’aborder un grand nombre de
problèmes d'optimisation en apparence très différents, dans des contextes très divers. On
peut considérer que, plutôt que d'être à proprement parler du domaine de la gestion, la
programmation linéaire relève des mathématiques de la Recherche Opérationnelle et a des
applications en gestion ainsi qu’en économie, en statistique, en physique, etc. Il s'agit d'un
outil versatile et puissant, régulièrement cité par les entreprises comme un des modèles les
plus utilisés de la Recherche Opérationnelle.
Dans ce cours, on supposera que les étudiants ont déjà découvert les applications
classiques de la programmation linéaire: problèmes de maximisation du profit sous
contraintes de disponibilité de ressources rares, minimisation des coûts sous contraintes de
satisfaction de la demande, problèmes de mélanges, etc. On supposera également qu'ils ont
fait connaissance avec la méthode du simplexe et qu'ils ont eu l'occasion de résoudre
quelques exemples numériques à l'aide de cette méthode. Rappelons que la méthode du
simplexe est un algorithme de résolution proposé par George Dantzig vers 1947; voir
Dantzig 1963 ou Chvátal 1983. Cette méthode simple, robuste et efficace permet
d’attaquer avec succès des problèmes comportant plusieurs dizaines de milliers de
variables et de contraintes. Elle resta en fait sans concurrence pendant près de 40 ans,
jusqu’à la découverte d’une famille d’algorithmes connus sous le nom de « méthodes de
points intérieurs »; voir par exemple Taha 1992. A ce jour, plusieurs méthodes de
résolution coexistent souvent dans les logiciels commerciaux, mais la méthode du
simplexe reste une des meilleures alternatives disponibles pour la solution de nombreux
problèmes de programmation linéaire.
Notre objectif principal sera de traiter une des questions fondamentales de la
programmation linéaire: l’analyse de sensibilité, ou analyse post-optimale, dont l'objet est
d'étudier la façon dont une modification des hypothèses du modèle affecte la solution
optimale calculée précédemment. Il s'agit donc d'une "What-if analysis": que se passe-t-il
par exemple si
• le profit unitaire de chaque activité augmente ou diminue légèrement, ou a été mal
estimé?
6
• les contraintes de capacité sont flexibles et peuvent être ajustées en y mettant le prix?
2. Modèle de programmation linéaire et terminologie élémentaire.
Sous sa forme la plus générale, le modèle de programmation linéaire (P.L.) est le modèle
d'optimisation
n
minimiser (ou maximiser)
z(x) = ∑ c j x j
(fonction objectif)
j =1
sous les contraintes (s.c.)
≤ 
 
∑ a ij x j =  b i
j=1
≥ 
 
n
(i = 1,..., m).
Les nombres cj, aij, bi sont les paramètres du modèle; ce sont des nombres connus avant la
résolution (coût unitaire, capacité disponible, coefficients techniques, etc). Pour i = 1, …,
m et j = 1, …, n, on appelle:
cj = coefficients de la fonction objectif z(x) (appelée également fonction économique)
aij = coefficients des contraintes
bi = membres de droite (M.d.D.) des contraintes.
Les variables (de décision) xj sont indéterminées a priori: la résolution du modèle consiste
précisément à déterminer la valeur des variables qui optimise la fonction objectif z(x) tout
en respectant les contraintes formulées. Remarquons que la fonction objectif et les
membres de gauche des contraintes sont des fonctions linéaires des variables, ce qui
justifie l’appellation donnée au modèle.
En termes généraux, il est utile d'interpréter {1,...,n} comme un ensemble d'activités
économiques (par exemple, la fabrication d’armoires de différents modèles, ou
l’investissement dans un projet) qu'une firme peut entreprendre à différents niveaux. La
valeur de la variable xj indiquera le niveau choisi (« programmé ») pour l'activité j (j =
1,...,n). On peut alors voir cj comme le profit ou le coût unitaire associé à l'activité j. Si
{1,...,m} est un ensemble de ressources consommées par les activités, alors bi est la
quantité disponible de la ressource i et aij est la quantité de la ressource i consommée par
unité de l'activité j.
Nous utiliserons encore la terminologie suivante:
7
Solution (point) réalisable: c'est un point x qui satisfait à toutes les contraintes, c'est-à-dire
n
un point x∈ℜ n telque ∑ a ij x j ≤b i pour touti = 1,..., m.
j =1
Région, espace réalisable - Polyèdre des contraintes: c'est l'ensemble P des points
réalisables, c'est-à-dire
n


P = x ∈ℜ n : ∑ a ij x j ≤ b i pour i = 1,..., m .
j=1


Géométriquement, P est un polyèdre convexe, c'est-à-dire une région définie comme
l'intersection de m demi-espaces.
Solution optimale: c'est un point x* réalisable et qui optimise z(x) sur P, c'est-à-dire, pour
un problème de maximisation, un point x* tel que
x* ∈ P et z(x*) ≥ z(x) pour tout x ∈ P.
Valeur optimale: c’est la valeur z(x*) atteinte par toute solution optimale x*.
3. Forme standard des problèmes de programmation linéaire.
Pour appliquer la méthode du simplexe, nous supposerons que le P.L. à résoudre est sous
forme standard, c'est-à-dire qu'il comporte une contrainte de non-négativité pour chaque
variable et que les autres contraintes sont mises sous forme d’égalités. Un P.L. sous forme
standard s'écrit donc
n
max / min z = ∑ c j x j
j =1
n
s.c.
∑a
ij
x j = bi
(i = 1,..., m)
(FS)
j =1
x j ≥ 0 (j = 1,..., n)
(comparer avec la forme générale proposée dans la section précédente). Remarquons que
cette hypothèse n'est absolument pas restrictive: en effet, tout P.L. peut être mis sous forme
standard au prix d'une augmentation (parfois considérable) du nombre de contraintes et de
variables. Il suffit pour cela de procéder aux trois types de remplacements décrits cidessous.
8
1)
Toute contrainte d'inégalité
n
∑a
j
xj ≤ b
(1)
j =1
peut être remplacée par un système de contraintes « équivalent »:
n
 ∑ a jx j + s = b
 j =1

 s≥0
(2)
(3)
(« équivalent » signifie ici qu'il existe une bijection entre les solutions de l’inégalité (1) et
celles du système (2)-(3)). On appelle s la variable d'écart (slack) de la contrainte (1).
L’interprétation d’une variable d’écart en termes économiques est très simple: si b est le
n
nombre d'unités disponibles d'une certaine ressource, et ∑ j=1 a j x j le nombre d'unités de
cette ressource utilisée par la solution x, alors la quantité s = b – ∑ j=1 a j x j représente le
n
nombre d'unités résiduelles, non utilisées par la solution x.
Géométriquement, pour un problème à deux variables, on peut interpréter s comme une
n
mesure de la « distance » entre la droite de contrainte ∑ j=1 a j x j = b et le point x (en
particulier, s = 0 si et seulement si le point x se trouve sur la droite de contrainte).
2)
Toute contrainte d'inégalité
m
∑ a jx j ≥ b
j =1
est « équivalente » au système
n
(4)
 ∑ a jx j − s = b
 j =1

(5)
s ≥ 0
où s est une variable de surplus. Une interprétation simple existe à nouveau: si b
m
représente une demande à satisfaire et ∑ a j x j représente une quantité produite, alors...
j =1
3)
Si la variable xj n'est pas contrainte à être non négative, on peut la remplacer dans la
fonction objectif et dans toutes les contraintes par l’expression
x j' − x j"
(où xj', xj" sont deux nouvelles variables) et introduire les contraintes additionnelles:
xj' ≥ 0, xj" ≥ 0.
Par exemple, si xj représente l'état d'un compte financier, alors xj' peut être interprété
comme un solde positif et xj" comme un solde négatif .
9
Conclusion: en combinant les transformations 1), 2), 3) décrites ci-dessus, n’importe quel
programme linéaire peut être réécrit sous forme standard. L'avantage essentiel de cette
transformation est qu'elle va nous permettre d'utiliser notre connaissance des systèmes
d'équations linéaires. La méthode du simplexe va en effet consister essentiellement en la
résolution successive de systèmes linéaires, et les contraintes de non négativité seront
traitées implicitement.
4. La méthode de Gauss-Jordan.
Rappel: comment résout-on un système d'équations linéaires de la forme
n
∑a
ij
x j = bi
(i = 1,..., m) ?
(L)
j=1
Réponse: par la méthode de Gauss-Jordan, ou méthode d'éliminations successives.
Supposons que les m équations soient linéairement indépendantes (le système est de rang
m; ceci implique en particulier que n ≥ m). Il est alors possible de trouver m colonnes
linéairement indépendantes parmi les colonnes de la matrice des coefficients (aij).
Supposons par exemple que les colonnes 1 à m soient linéairement indépendantes.
Appelons les variables correspondantes (x1,...,xm) variables en base et les variables
restantes (xm+1,...,xn) variables hors base (remarquons qu'en général, il existe de
nombreux choix possibles pour les variables en base: il suffit que les colonnes associées
soient linéairement indépendantes).
On peut ensuite transformer le système par éliminations successives jusqu'à obtenir un
système sous la forme:
x1
x2
...
xm
+
+
a1, m + 1 x m + 1 + ... + a1n x n = b1
a 2, m + 1 x m + 1 + ... + a 2n x n = b 2
+
+
...
...
a m, m + 1 x m + 1 + ... + a m n x n = b m
_____________ 
variables en base
_________________________
variables hors base
(Dico)
10
Le système (Dico) est appelé le dictionnaire du système (L) associé aux variables de base
x1,..., xm: il est équivalent à (L) (c’est-à-dire qu’il possède les mêmes solutions que (L)) et
peut être interprété comme définissant les variables en base en terme des variables hors
base (comme on le voit en faisant passer xm+1, ..., xn dans le membre de droite de
(Dico)).
Une solution particulière (solution de base) associée à (Dico) est obtenue en fixant
xm+1,...,xn (variables hors base) à 0 et en posant x i = b i pour i = 1,...,m.
La méthode du simplexe repose exclusivement sur la considération de solutions de base.
Remarquons qu’une solution de (L) est une solution réalisable de (FS) si et seulement si
toutes ses composantes sont non négatives. En particulier, la solution de base associée au
dictionnaire (Dico) est réalisable si et seulement si bi ≥ 0 pour i = 1,...,m. Cette
observation élémentaire sera constamment utilisée par la suite.
Bien sûr, un problème de programmation linéaire présente plusieurs caractéristiques qui le
différencient clairement d’un système d'équations linéaires:
•
il comporte une fonction objectif à optimiser, ce qui implique que l’on s’intéresse à
une solution bien particulière parmi les solutions réalisables plutôt qu’à une solution
quelconque comme dans le cas des systèmes d’équations;
•
il comporte également des contraintes de non négativité; il est facile de se convaincre
que, sans elles, le problème (FS) tomberait dans une des catégories suivantes: (i) pas
de solution réalisable, ou (ii) une solution réalisable unique (et donc nécessairement
optimale), ou (iii) problème non borné; un tel problème pourrait être résolu par
simple résolution du système de contraintes.
5. La méthode du simplexe: exemples numériques.
Nous allons maintenant présenter le déroulement de la méthode du simplexe sur quelques
exemples numériques avant d'en donner une description plus générique. Dans cette
présentation, nous traiterons la fonction objectif comme une variable supplémentaire en
réécrivant (FS) sous la forme:
11
max / min z
n
s. c.
z − ∑cj xj = 0
j =1
n
∑a
ij
x j = b i (i = 1,..., m)
j =1
xj ≥ 0
( j = 1,..., n )
(forme standard modifiée). Il ne faut voir là qu'une commode convention didactique. Il sera
cependant important de bien garder à l'esprit la nature très particulière de la contrainte
"fonction objectif".
Exemple 1.
(Il est instructif de représenter cet exemple graphiquement
géométriquement les itérations successives de la méthode du simplexe.)
max z = 3 x1 + 2 x2
s.c.
x 1 + 2 x2
2 x 1 + x2
+ x1 – x2
x2
x1, x2
≤ 6
≤ 8
≥ –1
≤ 2
≥ 0
et
d’interpréter
(→ remplacer par contrainte)
(→ s1)
(→ s2)
(multiplier par –1, + s3)
(→ s4)
Forme standard modifiée:
max z
s.c.
z – 3 x1 – 2 x2
x1 + 2 x2 + s1
=6
2 x 1 + x2
+ s2
– x 1 + x2
+ s3
x2
+ s4
x1, x2 , s1, ..., s4 ≥ 0
=0
=8
=1
=2
Variables en base: s1, s2, s3, s4 (et, en toute rigueur, z ; mais nous omettrons souvent de
mentionner z explicitement parmi les variables en base).
Variables hors base: x1, x2
Solution de base associée: (z, x, s) = (0, 0, 0, 6, 8, 1, 2).
12
Est-il possible d’améliorer la solution de base courante ? Pour augmenter z, il faudrait
pouvoir augmenter x1 ou x2 . Essayons avec x1. Par conséquent, x1 doit devenir variable
de base (« x1 entre en base »). On peut à présent se poser les deux questions suivantes: en
admettant que les variables actuellement hors base le restent, à l’exception de x1,
1) jusqu'où x1 peut-il augmenter?
2) quelle variable doit-elle sortir de base (c’est-à-dire, doit-elle devenir hors base?)
(remarquer que le nombre de variables de base doit toujours être exactement égal à m,
c'est-à-dire à 4 dans notre exemple).
En supposant que x2 reste hors base (et donc égal à 0), on doit avoir x1 ≤ 6 et 2x1 ≤ 8. Les
contraintes 3 et 4 ne placent aucune restriction sur l'augmentation de x1. En effet, lorsque
x2 = 0, la contrainte 3 est équivalente à –x1 ≤ 1, et la contrainte 4 ne contient pas x1. Au
total, la contrainte la plus restrictive pour x1 est la seconde, et donc x1 ≤ 4 (ceci est une
réponse à la question 1).
Si x1 = 4 et x2 = 0, alors s1 = 2, s2 = 0, s3 = 5 et s4 = 2. Donc, on peut supposer que s2 est
à présent hors base (réponse à la question 2).
En termes économiques, on peut interpréter simplement le raisonnement précédent. Nous
avons tout d’abord découvert une activité profitable (l’activité modélisée par la variable
x1), dont nous cherchons donc à augmenter le niveau. Cette augmentation de niveau est
cependant limitée par l’existence d’une ressource rare, en l’occurrence celle modélisée par
la deuxième contrainte.
On parvient ainsi à la situation suivante:
x1, s1, s3, s4 en base
x2, s2 hors base
Appliquons la méthode de Gauss-Jordan pour obtenir le dictionnaire associé aux nouvelles
variables en base (c'est-à-dire, éliminons x1 de toutes les équations sauf celle où apparaît la
variable sortante s2 et donnons un coefficient de 1 à x1dans cette dernière équation):
max z
s.c. z
– 1/2 x2
+ 3/2 s2
=
3/2 x2 + s1 – 1/2 s2
=
x1 + 1/2 x2
+ 1/2 s2
=
3/2 x2
+ 1/2 s2 + s3
=
x2
+ s4 =
x1, x2, s1, s2, s3, s4 ≥ 0.
12
2
4
5
2
13
Solution de base: (z,x,s) = (12, 4, 0, 2, 0, 5, 2)
Nous sommes ainsi revenus à une situation similaire à celle de départ et nous pouvons à
nouveau nous poser la même question: est-il possible d’améliorer la solution de base
courante ?
Pour tenter d’augmenter z, augmentons x2. Donc, x2 entre en base. De combien x2 peut-il
augmenter?
En supposant que s2 reste hors base, on doit avoir:
3 / 2 x2 ≤ 2 
1 / 2 x 2 ≤ 4 
 ⇒ x2 ≤ 4 / 3
3 / 2 x2 ≤ 5 
x 2 ≤ 2 
Si x2 = 4/3, alors s1 doit s’annuler et donc s1 peut sortir de base. On obtient ainsi:
x1, x2, s3, s4 en base
s1, s2 hors base.
Appliquons la méthode de Gauss-Jordan pour éliminer x2 de toutes les équations, sauf
celle où apparaît s1 (la variable sortante):
max z
s.c.
z
+ 1/3 s1 + 4/3 s2
= 38/3
x2 + 2/3 s1 – 1/3 s2
= 4/3
x1
– 1/3 s1 + 2/3 s2
= 10/3
–
s1 +
s2 + s3
= 3
– 2/3 s1 + 1/3 s2
+ s4 = 2/3
x1, x2, s1, s2, s3, s4 ≥ 0 .
Solution de base: (z, x, s) = (38/3, 10/3, 4/3, 0, 0, 3, 2/3). Cette solution est optimale
puisque, dans toute solution réalisable,
z = 38/3 – 1/3 s1 – 4/3 s2
et que s1 = s2 = 0 dans la solution actuelle.
14
Exemple 2.
max
s.c.
20 x1 + 10 x2
x 1 + 2 x2
x1 +
x2
x1
x2
x1 ≥ 0, x2
≤ 120
≤ 100
≤ 70
≤ 50
≥
0
Sous forme normale modifiée, ce problème devient:
max z
s.c.
z – 20 x1 – 10 x2
= 0
x 1 + 2 x 2 + s1
= 120
x 1 + x2
+ s2
= 100
x1
+ s3
= 70
x2
+ s4 = 50
x1 ≥ 0, x2 ≥ 0, si ≥ 0 (i = 1,...,4)
Solution de base (z, x, s) = (0,0,0,120,100,70,50).
Pour améliorer la solution courante, x1 entre en base et peut augmenter jusqu'à 70. Par voie
de conséquence, s3 sort de la base. Après élimination de x1, on obtient:
max z
s.c. z
– 10 x2
2 x2
x2
x1
+ 20 s3
=
+ s1
–
s3
=
+ s2 –
s3
=
+
s3
=
x2
+ s4 =
x1 ≥ 0, x2 ≥ 0, si ≥ 0 (i = 1,...,4)
1400
50
30
70
50
A présent, on a donc:
x1, s1, s2, s4 en base,
x2, s3 hors base.
Solution de base associée: (1400, 70, 0, 50, 30, 0, 50).
15
50
(par la contrainte 1), 30
2
(par la contrainte 2) et 50 (par la contrainte 4). En combinant ces conclusions, on voit que
50
l’augmentation de x2 est limité à = 25.
2
Si x2 entre en base avec valeur 25, alors s1 sort. Après élimination de x2, on trouve:
Si la variable x2 entre en base, son augmentation est limitée à
max z
s.c. z
x2
+ 5 s1
+ 1/2 s1
– 1/2 s1 + s2
x1
– 1/2 s1
+ 15 s3
– 1/2 s3
– 1/2 s3
+ s3
+ 1/2 s3
= 1650
= 25
= 5
= 70
+ s4 = 25
On a maintenant:
x1, x2, s2, s4 en base
s1,s3 hors base
et la solution de base associée est (z,x,s) = (1650, 70, 25, 0, 5, 0, 25). Cette solution de
base est optimale puisque z = 1650 – 5 s1 – 15 s3 et s1 = s3 = 0.
Dans les deux exemples précédents, la méthode du simplexe nous a permis d’identifier une
solution optimale du problème posé. Il faut cependant remarquer que tout problème de
programmation linéaire n'admet pas nécessairement de solution optimale. En particulier,
on voit facilement que certains problèmes n'admettent aucune solution réalisable. Il suffit,
pour s'en convaincre, de considérer le mini-exemple suivant:
max x1
s.c. x1 ≤ 1
x1 ≥ 2.
Pour une illustration plus "réaliste", on peut également penser à une situation où la
demande excède la capacité de production d'un atelier, ou bien au cas d'un projet qui ne
peut pas être terminé dans les délais impartis. On dit que de tels problèmes sont
irréalisables.
Par ailleurs, même si il est réalisable, un problème peut ne posséder aucune solution
optimale. Ici encore, un petit exemple numérique fournit une illustration immédiate de
cette observation:
16
max x1
s.c. x1 ≥ 2.
De tels problèmes sont dits non bornés: quelle que soit la valeur Z, il existe une solution
réalisable x ∈ P telle que la valeur de la fonction objectif en x est meilleure que Z.
L’exemple suivant montre comment la méthode du simplexe peut identifier les problèmes
non bornés.
Exemple 3.
min
s.c.
z = – 3 x 1 + 2 x2 – x 3
x1 – 2 x2 + 4 x3 + s1
– 2 x1+ 4 x2 – x3
+ s2
x1, x2, x3, s1, s2
= 8
= 6
≥ 0 .
(3)
(4)
(5)
Ce problème est déjà sous forme standard. On le met sous forme standard modifiée en
remplaçant (3) par la contrainte z + 3 x1 – 2 x2 + x3 = 0.
Variables en base: s1, s2
Variables hors base: x1, x2, x3
Solution de base: (x, s) = (0, 0, 0, 8, 6), avec z(x) = 0.
Choisissons comme variable entrante une variable avec coefficient négatif dans z (puisque
z doit diminuer). Deux variables sont candidates: x1 ou x3. Le critère de Dantzig propose
de trancher ce dilemme en sélectionnant la variable qui possède le coefficient le plus
négatif dans z (le plus positif pour un problème de maximisation). Remarquons qu’il s’agit
là d’un critère intuitivement attirant et empiriquement efficace, mais qui ne doit pas
nécessairement être appliqué pour obtenir une implantation correcte de la méthode du
simplexe.
Supposons donc que x1 entre en base.
Si x2 et x3 restent hors base (et donc, égaux à 0), de combien peut augmenter x1 ? La
contrainte (4) impose x1 ≤ 8. Par contre, la contrainte (5) ne place aucune borne supérieure
sur x1 puisqu'elle est équivalente (sous l'hypothèse x2 = x3 = 0) à −2x1 ≤ 6, et que cette
inégalité est satisfaite par toute valeur non négative de x1.
Donc la variable sortante est la variable de base de la contrainte (4), c'est-à-dire s1.
17
Eliminons x1 de toutes les équations autres que (4):
min z
s.c. z
x1
x1,
+ 4 x2 – 11 x3 – 3 s1
– 2 x2 + 4 x3 + s1
7 x3 + 2 s1 + s2
x2, x3, s1, s2 ≥ 0
= –24
= 8
= 22
(3’)
(4’)
(5’)
A présent, les variables de base sont x1, s2, les variables hors base sont x2, x3, s1, et la
solution de base est (x, s) = (8, 0, 0, 0, 22).
On a z = −24 − 4 x2 + 11 x3 + 3 s1.
Variable entrante: x2 peut entrer en base puisqu'il a un coefficient négatif dans z.
Si x3 et s1 restent hors base, de combien peut augmenter x2?
• L’équation (4’) ne pose aucune contrainte sur x2 (elle est équivalente à: – 2 x2 ≤ 8).
• L’équation (5’) ne pose aucune contrainte sur x2 (puisque x2 n'y intervient pas).
Donc x2 peut augmenter de façon illimitée.
Conclusion: le problème est non borné. Lorsque x2 augmente indéfiniment, il est toujours
possible de trouver des valeurs de x1, x3, s1, s2 telles que (x,s) est réalisable et telles que z
tend vers −∞.
 x1 = 8 + 2 x 2
s = 22
2
Plus précisément, toute solution de la forme: 
 x 2 = arbitraire
 x 3 = s1 = 0
est réalisable quelque soit x2 ≥ 0 et la valeur correspondante de la fonction objectif,
donnée par: z = −24 – 4x2, est arbitrairement petite.
Exercice: Vérifier cette affirmation en substituant les valeurs proposées pour x1, x2, x3,
s1, s2 dans la formulation de départ (3)–(5).
18
6. La méthode du simplexe.
Ayant à présent acquis quelque familiarité avec la méthode du simplexe, nous pouvons
tenter d’en décrire les caractéristiques essentielles. La méthode du simplexe procède par
itérations successives. Au début de chaque itération, le problème à résoudre est sous forme
standard « modifiée ». Plus précisément, le système est écrit sous la forme générique:
max/min z
n
s.c. z − ∑ c x = v
j=1 j j
n
∑ a x =b
(i = 1,..., m)
i
j = 1 ij j
xj ≥ 0
(j = 1,..., n)
(6)
(7)
(8)
(9)
La valeur des coefficients a ij , c j , bi et v varie d’itération en itération. Le système (7)–(8)
est un dictionnaire associé à un ensemble de variables en base ( xj : j ∈ B ) (où l’ensemble
B varie en cours d’exécution) et z (que nous omettrons souvent de mentionner
explicitement, puisque z est toujours en base). Notons, en particulier, que c j = 0 si x j est
en base.
Avant de pouvoir démarrer l’exécution de la méthode du simplexe, il est nécessaire de
disposer d'une solution de base initiale réalisable, c'est-à-dire d'une solution de base x ∈ P
(où P désigne la région réalisable). Pour formuler plus précisément cette condition,
appelons solution de base initiale la solution de base associée au dictionnaire disponible au
début de la première itération. Nous supposerons que la propriété suivante est satisfaite:
Hypothèse 0: La solution de base initiale est réalisable.
Remarquons cependant qu’il s’agit là d’une hypothèse non triviale: trouver une solution de
base initiale est en effet très simple (il suffit d’appliquer la méthode de Gauss-Jordan),
mais rien ne garantit que la solution ainsi obtenue sera réalisable ! En fait, nous avons déjà
observé dans la section précédente que certains problèmes de programmation linéaire
n’admettent aucune solution réalisable. Par ailleurs, même si le problème considéré est
réalisable, trouver, c'est-à-dire calculer, une solution réalisable peut constituer en soi un
problème difficile (on peut établir rigoureusement que trouver une solution réalisable est
exactement aussi difficile que résoudre un problème de programmation linéaire). Il existe
des techniques générales permettant de construire une solution de base initiale réalisable
ou de décider que le problème considéré est irréalisable (méthode du grand M, méthode
19
des deux phases), mais nous n'entrerons pas ici dans la description de ces techniques et
nous nous contenterons donc d’adopter l’Hypothèse 0.
Nous verrons dans quelques instants que la réalisabilité des solutions de base est préservée
par la méthode du simplexe: si l’Hypothèse 0 est satisfaite, alors, tout au long des
itérations, la solution de base associée au dictionnaire (7)–(8) (c’est-à-dire, la solution
obtenue en posant xj = 0 pour j ∉ B) est réalisable. En d’autres termes, à chaque itération,
b i ≥ 0 pour i = 1,...,m.
A chaque itération de la méthode du simplexe, le dictionnaire courant est transformé en un
nouveau dictionnaire. Cette transformation repose sur la sélection d'une variable entrante,
disons xe, telle que c e > 0 pour un problème de maximisation (et ce < 0 pour un
problème de minimisation). Plus précisément, une itération de la méthode du simplexe
consiste en l’exécution des trois étapes décrites ci-dessous.
Méthode du simplexe.
Etape 1: Sélection de la variable entrante.
Choisir une variable entrante, disons xe, telle que c e > 0 pour un problème de
maximisation ( ce < 0 pour un problème de minimisation).
Si il n'y a plus de telle variable, alors stop: la solution de base courante est optimale.
Etape 2: Sélection de la variable sortante.
(i) Si a ie ≤ 0 pour tous les indices i = 1, ..., m, alors stop: le problème est non borné
(pas de solution optimale).
(ii) Sinon, choisir une variable sortante, disons xq, de la façon suivante:
déterminer une ligne p (équation pivot) telle que
bp
a pe
-
b

= min i : a ie > 0, i = 1,..., m
 a ie

(critère du quotient)
xq est la (seule) variable de base de la ligne p.
Etape 3: Mise à jour du dictionnaire et de la solution courante.
Définir une nouvelle base par: B∪{e}\{q}, calculer le dictionnaire associé en éliminant xe
de toutes les équations (7) et (8) sauf l'équation pivot, et calculer la solution de base
correspondante. Retourner à l'étape 1.
20
Ceci termine (provisoirement) la description (d’une itération) de la méthode du simplexe.
Nous allons à présent établir rigoureusement que cette méthode est correcte.
Tout d’abord, nous devons nous assurer que la solution de base obtenue au terme de
chaque itération est bien réalisable (il s’agit donc ici de vérifier la validité de l’affirmation
énoncée en début de section).
Lemme. Si la solution de base associée au dictionnaire initial est réalisable, alors
chacune des solutions de bases produites par la méthode du simplexe est réalisable
Démonstration. On procéde par récurrence. Supposons que x(0), la solution de base
disponible au début d'une itération quelconque, est réalisable. Il suffit alors d’établir que
x(1), la solution calculée au cours de cette même itération, est également réalisable.
Supposons (sans perte de généralité) que x(0) est associé aux variables en base {x1, ...,
xm}. Le dictionnaire correspondant a donc la forme:
x1
x2
+ a1,m+1 x m+1
+ a 2 , m +1 x m +1
+L
+L
+ a1n x n =
+ a 2n x n =
b1
b2
+ a m , m +1 x m +1
+ L + a mn x n =
bm
O
xm
et
(0)
x j = 0 pour
(0)
xj = bj
pour
j = m + 1,..., n
j = 1,..., m .
Puisque x(0) est réalisable, b j ≥ 0 pour j = 1,..., m.
Supposons encore que xn est choisi comme variable entrante et xm comme variable
sortante (ligne pivot = m). La solution de base x(1) est alors obtenue en annulant toutes les
variables (nouvellement) hors base, c'est-à-dire en posant
(1)
x j = 0 pour j = m, ..., n–1.
21
La valeur des variables (nouvellement) en base est calculée en résolvant le système
résiduel. On obtient donc:
x (1)
n =
bm
a mn
et
(1)
x j = b j − a jn x (1)
n
= b j − a jn b m / a mn
pour j = 1,..., m − 1.
(1)
Pour démontrer que x(1) est bien réalisable, il nous reste simplement à montrer que x j ≥ 0
pour j = 1, ..., m.
Tout d'abord, puisque b m ≥ 0 et a mn = a pe > 0 (voir étape 2(ii) de la méthode du
bm
simplexe), on voit que x (1)
≥ 0.
n =
a mn
Par ailleurs, pour j = 1, ..., m–1:
•
si a jn ≤ 0, alors x (1)
j = b j − a jn
• si a jn > 0, alors
bm
b
≥ 0 (puisque b j ≥ 0 et a jn m ≤ 0);
a mn
a mn
bj
bm
≤
(par l’étape 2(ii), où m = p et n = e), et donc x (1)
j ≥ 0.
a mn a jn
(1)
En conclusion: x (1)
est réalisable.
j ≥ 0 pour j = 1, ..., n, et donc x
CQFD
Nous sommes prêts pour le résultat principal de cette section:
Théorème 1. Si la méthode du simplexe stoppe à l'étape 1, alors la solution courante est
optimale. En d’autres termes :
i) Pour un problème de maximisation, si c j ≤ 0 pour chaque j = 1, …, n, alors la solution
de base courante est optimale.
ii) Pour un problème de minimisation, si c j ≥ 0 pour chaque j = 1, …, n, alors la solution
de base courante est optimale.
Démonstration. Supposons que le problème considéré est un problème de maximisation
(la démonstration serait similaire pour un problème de minimisation). Par le lemme
22
précédent, la solution courante est réalisable. Par ailleurs, lorsque la méthode du simplexe
termine à l’étape 1, le problème à résoudre a la forme (6)–(9), avec z = v + ∑ j∉B c j x j ,
c j = 0 pour tout j ∈ B (puisque les variables de base sont toujours éliminées: voir la
discussion préliminaire et l'étape 3 de la méthode du simplexe) et c j ≤ 0 pour j ∉ B (par
l’étape 1). Donc, pour la solution de base courante, z = v, et pour toute solution réalisable,
z ≤ v (puisque xj ≥ 0 pour j = 1,...n). Par conséquent, la solution courante est optimale.
C.Q.F.D.
Théorème 2. Si la méthode du simplexe stoppe à l'étape 2(i), alors le problème est non
borné.
Démonstration. Considérons à nouveau le cas d'un problème de maximisation.
Supposons, comme dans la démonstration du lemme, que B = {1, ..., m} et e = n (donc
c n > 0). Si la méthode du simplexe s’arrête à l’étape 2(i), cela signifie que a ie = a in ≤ 0
pour i = 1, ..., m. Analysons les solutions du système (8) obtenues en posant xj = 0 pour j =
m+1, ..., n–1. Ce sont donc toutes les solutions (x1, ..., xn) pour lesquelles
 x 1 = b1 − a 1n x n

 x 2 = b 2 − a 2n x n
M

 x m = b m − a mn x n
 x = ... = x = 0
m+1
n −1

 x n arbitraire.
(10)
Remarquons que pour toute valeur de xn ≥ 0, la solution (unique) de (10) est réalisable
(puisque b i ≥ 0 et a in ≤ 0 pour i = 1, ..., m). Par ailleurs, la valeur de la fonction objectif
en cette solution est donnée par: z = v + ∑ j∉ B c j x j = v + c n x n . Il suffit maintenant de
remarquer que cette valeur de z peut être rendue arbitrairement grande, puisque c n > 0.
CQFD
Illustrons encore l’application de la méthode du simplexe sur un dernier exemple
numérique qui nous fournira l’occasion de formuler quelques remarques supplémentaires.
23
Exemple 4.
max x1 + 2 x2
s.c. x1 + 2 x2 ≤ 6
2 x 1 + x2 ≤ 8
x2 ≤ 2
x1 ≥ 0, x2 ≥ 0.
Sous forme standard modifiée, le problème s’écrit:
max z
s.c. z – x1 – 2 x2
=0
x1 + 2 x2 + s1
=6
2 x 1 + x2
+ s2
=8
x2
+ s3 = 2
x1, x2, s1, s2, s3 ≥ 0
(11)
(12)
(13)
(14)
1. Variable entrante: x2 (par le critère de Dantzig)
2. Variable sortante: critère du quotient:
6 8 2
min  , ,  = 2
2 1 1 
Donc, la ligne pivot est la ligne (14) et s3 est la variable sortante.
3. Eliminer x2:
max z
s.c. z – x1
x1
2 x1
+ 2 s3 = 4
+ s1
– 2 s3 = 2
+ s2
– s3 = 6
x2
+ s3 = 2
x1, x2, s1, s2, s3 ≥ 0
(11)
(12)
(13)
(14)
1. Variable entrante: x1
2 6 
2. Critère du quotient: min  ,  = 2
1 2
La ligne (12) est la ligne pivot et s1 est la variable sortante.
3. Eliminer x1
24
max z
s.c. z
+ s1
x1
+ s1
– 2 s3
– 2 s1 + s2 + 3 s3
x2
+ s3
x1, x2, s1, s2, s3 ≥ 0
= 6
= 2
= 2
= 2
Ce dictionnaire est optimal. Les variables en base sont x1, x2, s2 et les variables hors
base sont s1 et s3. La solution optimale est (x1, x2, s) = (2, 2, 0, 2, 0), avec valeur: z*
= 6.
Remarquons que la variable hors base s3 a un coefficient c j égal à 0 dans l'équation
« fonction objectif » z = 6 – s1 + 0 s3. Donc, si s3 entre en base, la valeur de la fonction
objectif ne devrait pas en être affectée. Pour vérifier ceci, essayons d'effectuer l'itération du
simplexe correspondante:
1.
2.
s3 entre en base
2  2
Critère du quotient: min  , 2  =
3  3
→ ligne pivot: (13)
variable sortante: s2
3.
Eliminer s3 (sauf dans (13)):
max z
s.c.
z
+ s1
x1
– 1/3 s1 + 2/3 s2
– 2/3 s1 + 1/3 s2 + s3
x2 + 2/3 s1 – 1/3 s2
x1, x2, s1, s2, s3 ≥ 0
= 6
= 10/3
= 2/3
= 4/3
Les variables en base sont x1, x2, s3 et les variables hors base sont s1 et s2.
10
La solution (x, s) = ( , 4 ,0,0, 2) est donc optimale, avec valeur z* = 6. On retrouve ainsi
3 3
3
(c’est heureux!) la même valeur optimale que celle obtenue pour la solution (2,2,0,2,0).
De façon plus générale, nous pouvons formuler l’énoncé suivant.
25
Théorème 3. Si il existe plusieurs solutions optimales, alors, dans chaque dictionnaire
optimal, c j = 0 pour une des variables hors base xj (et donc, cette variable peut entrer en
base sans changer la valeur de z).
Notons cependant que la réciproque de cet énoncé n’est pas valide.
Enfin, nous terminons cette longue section avec quelques remarques de natures diverses.
Remarque 1. Telle que nous l’avons présentée, la méthode du simplexe peut entrer dans un
cycle infini d’itérations! Pour éviter ce problème, il faudrait choisir de façon appropriée les
variables entrantes et sortantes dans les étapes 1 et 2 de chaque itération. Nous ne
discuterons pas ce point plus en détail ici.
Remarque 2:
Interprétation géométrique. En termes géométriques, l’ensemble des
solutions réalisables d’un problème de programmation linéaire forme un polyèdre. Les
solutions de base correspondent aux sommets (points extrêmes) de ce polyèdre et les
itérations successives de la méthode du simplexe définissent un chemin parcourant ces
sommets par ordre de valeur croissante (pour un problème de maximisation). Ainsi, lors de
la résolution de l'Exemple 2, nous avons énuméré trois solutions de base dont les
composantes (x1, x2) étaient respectivement (0,0), (70,0) et (70,25). Le lecteur vérifiera
qu’il s’agit bien là de trois des sommets du polyèdre associé, de valeur respective 0, 1400
et 1650.
On peut démontrer rigoureusement le résultat suivant:
Théorème 4. Pour un problème de programmation linéaire de la forme
optimiser z
s.c. x ∈ P,
seuls quatre cas peuvent se présenter:
(i) P = ∅ : le problème n'est pas réalisable;
(ii) P ≠ ∅ et l'optimum de z n'existe pas: le problème est non borné;
(iii) P ≠ ∅ et le problème possède une solution optimale unique qui coïncide nécessaire ment avec un sommet, ou point extrême de P;
(iv) P ≠ ∅ et le problème possède une infinité de solutions optimales qui forment un côté,
ou face, de P.
26
Remarque 3. Les manuels élémentaires de recherche opérationnelle et les logiciels
didactiques présentent souvent la méthode du simplexe sous forme de tableaux reprenant
les coefficients des contraintes (7)–(8) sous forme condensée. Ainsi, pour l'Exemple 3, les
tableaux successifs seraient:
Base
z
x1
x2
x3
s1
s2
Solution
Z
1
3
–2
1
0
0
0
s1
0
1
–2
4
1
0
8
s2
0
–2
4
–1
0
1
6
Z
1
0
4
–11
–3
0
–24
x1
0
1
–2
4
1
0
8
s2
0
0
0
7
2
1
22
Cette présentation permet d’automatiser les calculs lors d'une résolution manuelle, mais
obscurcit considérablement leur signification. Cette difficulté est renforcée par de
nombreuses conventions non standardisées. Par exemple, il est fréquent d'omettre la
colonne z dans cette présentation (puisqu’elle n'est jamais modifiée). De même, certains
auteurs multiplient la ligne z par –1 (c'est-à-dire qu’ils écrivent la fonction objectif sous la
forme − z + ∑ c j x j = − v ). Il ne s'agit que d'une convention d’écriture, mais qui ne
contribue pas à la clarté de la présentation !
Enfin, remarquons qu'aucun logiciel de programmation linéaire destiné à résoudre des
problèmes de taille réaliste n'utilise les tableaux du simplexe, en raison de l’inefficacité
des implantations informatiques de cette méthode.
7. Description matricielle des dictionnaires.
Pour la suite de notre discussion, il sera commode de disposer de notations matricielles qui
nous permettront de décrire de façon compacte les dictionnaires du simplexe. Considérons
donc à nouveau le programme linéaire sous la forme standard familière:
27
n
max z = ∑ c j x j
j=1
n
s.c. ∑ a ij x j = b i
j =1
xj ≥ 0
(i = 1,..., m)
(FS)
(j = 1,..., n).
Notons: c = [c 1 ,...,c n ],
x1 
x = M ,
 x n 
a 11 K a 1n 
A=
,
a m1 K a mn 
b 1 
b = M  .
b m 
En utilisant ces notations matricielles, (FS) peut alors s'écrire de façon compacte:
max z = c x
s.c.
Ax = b
(FS)
x≥0
où cx et Ax sont des produits matriciels (vecteur × vecteur et matrice × vecteur). Nous
allons à présent formuler l’hypothèse que le système Ax = b admet au moins une solution
et que rang(A) = m. (Ces hypothèse ne sont pas très restrictives, puisqu'une application de
la méthode de Gauss-Jordan permet de vérifier la première hypothèse et de supprimer, le
cas échéant, les lignes linéairement dépendantes du système.)
Soit maintenant x = (xB, xN) une solution de base de (FS), où xB représente le sousvecteur des variables en base et xN celui des variables hors base. Les variables en base et
hors base induisent également une partition des colonnes de A de la forme A = [ B | N ] et
l'on peut donc réécrire le système des contraintes sous la forme:
Ax = BxB + NxN = b.
(10)
A quoi correspond l'élimination des variables en base dans les contraintes, c’est-à-dire
l’application de la méthode de Gauss-Jordan ? Remarquons que le nombre de variables en
base, c'est-à-dire le nombre de colonnes de B, est exactement égal au nombre de
contraintes. Donc, B est une matrice carrée de dimension m×m. Supposons à présent que B
est également inversible et prémultiplions le système d’équations (10) par B–1. On obtient
ainsi le système équivalent:
28
xB + B–1 N xN = B–1 b.
(11)
Sous cette forme, chaque variable de base apparaît dans une et une seule contrainte,
comme requis dans un dictionnaire. Par ailleurs, la fonction objectif peut s'écrire
z = cx = cB xB + cN xN
(12)
où cB (respectivement cN) est le sous-vecteur des coefficients de la fonction objectif
associés aux variables en base (respectivement hors base). Pour éliminer les variables en
base de cette expression, on peut substituer (11) dans (12) et exprimer ainsi la fonction
objectif sous une forme équivalente, mais dans laquelle interviennent seulement les
variables hors base:
z = cB (B–1 b – B–1 N xN) + cN xN
= cB B–1 b + (cN – cB B–1 N) xN.
(13)
En annulant les variables hors base, c'est-à-dire en posant xN = 0 dans (11) et (13), on
obtient alors une solution de base pour laquelle
xB = B–1 b, xN = 0
(14)
et
z = cx = c B B −1 b.
(15)
On peut résumer la discussion précédente par quelques définitions:
Définition 1. Une base de (FS) est une sous-matrice carrée inversible de A. Si B est une
base, alors le dictionnaire associé à B est le système:
z
+ (c B B −1 N − c N )x N = c B B −1 b
(16)

 x B + B −1 N x N
= B −1 b.
(17)
La solution de base associée à B est la solution x = (xB, xN) = (B–1b, 0). La base B est
dite réalisable si la solution de base associée à B est réalisable, c’est-à-dire si toutes les
composantes du vecteur B–1b sont non négatives.
Cette discussion montre que, lorsqu’un ensemble de variables en base est connu, il n’est
pas nécessaire d’effectuer des itérations de la méthode du simplexe pour déterminer le
dictionnaire associé à ces variables en base. Il suffit d’identifier les vecteurs (cB,cN) et les
29
matrices (B,N) associés au choix des variables en base, d’inverser B, et de calculer le
système (16)-(17).
Bien sûr, ceci ne constitue pas un fait très surprenant: en effet, si l’on connaît l’ensemble
des variables en base, nous savons déjà que la méthode d’élimination de Gauss-Jordan
permet d’obtenir rapidement le dictionnaire associé à ces variables. Au delà de cette
observation élémentaire, le système (16)-(17) est surtout intéressant en ceci qu’il nous
fournit une représentation compacte (analytique) du dictionnaire considéré en terme des
données originales du problème (B, N, b, etc). Cette propriété se révèlera particulièrement
précieuse lorsqu’il s’agira d’effectuer l’analyse de sensibilité de la solution optimale
(puisque l’analyse de sensibilité cherche essentiellement à déterminer comment la solution
optimale d’un problème est affectée par une modification des données de départ).
Notons enfin, pour terminer, que les critères de réalisabilité et d'optimalité de la solution
de base courante sont aisément exprimés pour le dictionnaire (16)-(17) (voir Théorème 1):
• la solution de base associée à B est réalisable si et seulement si B–1b ≥ 0;
• pour un problème de maximisation, la solution de base associée à B est optimale si
cBB–1N − cN ≥ 0;
• pour un problème de minimisation, la solution de base associée à B est optimale si
cBB–1N − cN ≤ 0.
Exemple 5.
min z = –3 x1 + 6 x2 – 4 x3
s.c.
x1 – 2 x 2 + x 3
= 8
–2 x1 + 4 x2 – x3 + s2 = 6
x1, x2, x3, s2 ≤ 0 .
Considérons la solution (x1, x2, x3, s2) = (0, 7, 22, 0). On vérifie facilement que cette
solution est réalisable. De plus, s’il s’agit d’une solution de base (ce qui n’est pas a priori
évident), alors elle doit nécessairement correspondre au choix suivant des variables en
base et hors base, respectivement:
x B = [ x 2 , x 3 ] et x N = [ x1 ,s2 ] ,
et
 −2 1 
B=

 4 −1
(pourquoi ?)
30
A présent, puisque (x1, x2, x3, s2) = (0, 7, 22, 0) est réalisable, que xN = 0 et que B est
inversible, on peut conclure que cette solution est effectivement une solution de base.
Cherchons le dictionnaire associé. On a :
1 / 2 1 / 2 
,
B −1 = 
1 
2
 1 0
N=

 −2 1 
c B = [ 6 − 4] , c N = [ −3
0] ,
et on calcule:
 −1 / 2 1 / 2 
B −1 N = 
,
1 
0
c B B − 1 N − c N = −3 − 1 − −3 0 = 0 − 1
8   7 
B −1 b = B −1   =  
 6  22 
c B B −1 b = − 46.
Le dictionnaire associé à B s’écrit donc:

−1
z + (c B B N − c N ) x N = z + [0


x + −1 / 2 1 / 2 x 1  = 7 
 B  0
1  s 2  22

ou encore
− s 2 = −46
z

 x 2 − 1 / 2 x 1 + 1 / 2 s2 = 7

x3
+ s 2 = 22

x1 
− 1]  = −46
s 2 
31
On en conclut que (x1, x2, x3, s2) = (0, 7, 22, 0) est une solution optimale du problème
considéré.
8. Analyse de sensibilité.
Armés de la représentation matricielle des dictionnaires du simplexe, nous voilà enfin prêts
pour aborder le sujet de l’analyse de sensibilité ou analyse post-optimale. En termes
généraux, l’analyse de sensibilité s’intéresse aux questions suivantes: si les paramètres cj
ou bi ou aij du problème de départ sont modifiés, la solution optimale en est-elle affectée,
et si oui, comment peut-on recalculer à peu de frais la nouvelle solution optimale ? Dans
les situations pratiques, il s'agit bien souvent d'une des phases les plus importantes du
processus de modélisation/résolution. En effet, les paramètres des modèles réels sont
rarement connus avec exactitude ou certitude (quelle sera la composition exacte du carnet
de commande le mois prochain ? quel est précisément le taux de production de telle ligne
d'assemblage ? quel est le coût de stockage de tel article ?). De plus, la valeur de certains
paramètres peut éventuellement être modifiée suite à l'analyse des résultats (augmentation
du budget d'investissement, accroissement des capacités, etc.). Il est alors utile d'évaluer, le
plus efficacement possible, l'impact de telles modifications sur les décisions prises.
Dans le cadre restreint de ce cours introductif, nous étudierons seulement certains aspects
de cette question générale. En particulier, nous limiterons notre analyse à des variations des
coefficients de la fonction objectif (cj) ou des membres de droite des contraintes (bi).
Comme dans les sections précédentes, nous nous intéresserons au problème de
programmation linéaire sous forme standard (FS). Nous supposerons en outre que le
problème (FS) admet une solution optimale, disons x* = (x*B,x*N) (faute de quoi
l’analyse de sensibilité n’a pas de raison d’être). Une telle solution peut être calculée par la
méthode du simplexe. Cette méthode fournit également une base optimale B et le
dictionnaire associé à B, sous la forme (16)-(17).
8.1. Variations de la fonction objectif.
Supposons que la fonction objectif c est remplacée par c'. Ceci n'a aucune influence sur les
contraintes (17) (la solution courante reste réalisable), mais bien sur l’expression (16) de la
32
fonction objectif. On peut calculer l’expression de la nouvelle fonction objectif en fonction
des variables hors base sous la forme:
z + (c'BB–1N − c'N) xN = c'B B–1 b
(16')
Deux cas sont à présent possibles:
(i) si c'BB–1N − c'N ≥ 0 pour un problème de maximisation (≤ 0 pour un problème de
minimisation), alors x* reste optimal avec valeur c'BB–1b ;
(ii) si une des composantes de c'BB–1N − c'N est strictement négative pour un problème
de maximisation (strictement positive pour un problème de minimisation), alors on
ne peut pas conclure à l’optimalité de la solution courante x* et il faut continuer les
itérations du simplexe à partir du système (16')−(17).
Les possibilités (i) et (ii) épuisent, en principe, l’ensemble des questions que l’utilisateur
peut se poser sur la sensibilité de la solution optimale à des variations de la fonction
objectif. En particulier, le calcul du coût réduit d’une variable xk peut être traité dans ce
cadre.
Définition 2. Pour j = 1,...,n, le coût réduit de la variable xj dans le dictionnaire optimal
(16)−(17) est la plus petite valeur de |δ| telle que, lorsque cj est remplacé par cj + δ dans la
fonction objectif du problème (FS), la variable xj devient candidate à entrer en base dans
(16)-(17).
Pour comprendre l'utilité pratique de cette définition, il importe de réaliser que, dans la
solution optimale x* du problème (FS), m variables au plus prennent une valeur non nulle:
en effet, par définition des solutions de base, x ∗j = 0 pour chaque variable hors base x ∗ .
j
En termes économiques, ceci signifie que m au plus des activités possibles (production,
stockage, investissement, etc) sont effectivement exercées. Les autres activités (hors base)
ne sont pas « profitables », du moins si l’on tient compte des contraintes liant les
différentes activités entre elles. Dans ce contexte, il devient légitime de se demander pour
quelles valeurs des coefficients cj de la fonction objectif chacune de ces activités hors base
resterait non profitable. La plupart des logiciels de programmation linéaire répondent à
cette question en mentionnant la valeur du coût réduit de chaque variable dans leurs
rapports d’analyse de sensibilité.
Il est clair que, si la variable xj est en base dans (16)−(17), alors son coût réduit est nul par
définition. Nous concentrerons donc notre attention sur le cas des variables hors base. Pour
ces variables, lorsque (FS) est un problème de maximisation, l’intuition suggère que la
33
valeur de δ considérée dans la Définition 2 doit être positive ou nulle. La même définition
s’applique cependant à un problème de minimisation, auquel cas la valeur de δ est négative
ou nulle. Mais remarquons bien que le coût réduit lui-même, c’est-à-dire |δ|, est toujours
non négatif !
Note. Une certaine confusion règne dans la littérature quant à la formulation exacte à
adopter pour la définition des coûts réduits. Ainsi, différents auteurs appellent « coût
réduit » la quantité δ ou –δ, plutôt que |δ|. Ceci est d’autant plus gênant que les logiciels de
PL communiquent généralement la valeur des coûts réduits sans préciser leur définition.
La convention adoptée ici semble la plus simple à mémoriser et ne prête pas à confusion.
Considérons une variable hors base particulière, disons xk. Appelons c’ le vecteur obtenu
en remplaçant ck par ck + δ (les autres coefficients de c restant inchangés) et Ak la colonne
de N associée à xk (nous supposons ici que xk est une variable hors base dans la solution
optimale courante). Pour que xk puisse entrer en base, il faut que c'BB–1Ak − c'k soit
négatif ou nul (si (FS) est un problème de maximisation). Puisque c'B = cB et c'k = ck + δ,
cette condition se traduit par
cBB–1Ak − ck − δ ≤ 0
ou encore δ ≥ cBB–1Ak − ck. Le membre de droite de cette inégalité n’est rien d’autre que
la composante k du vecteur cBB–1N − cN (noté − c k dans le système (6)-(9)).
On a ainsi établi le résultat suivant:
Théorème 5. Le coût réduit de la variable xk est égal à | ck | , c'est-à-dire à la valeur
absolue du coefficient de xk dans la ligne (16) du tableau optimal, pour k = 1, ..., n.
Notons que ce résultat s’applique à toutes les variables, qu’elles soient en base ou hors
base (puisque | ck | est nul pour les variables en base) et aux problèmes de minimisation
comme à ceux de maximisation (Nous n’avons pas traité explicitement le cas des
problèmes de minimisation et préférons laisser ce soin au lecteur.)
Pour être tout à fait complet, précisons encore quelque peu la propriété essentielle du coût
réduit de xk: lorsque le coefficient ck de xk varie de | ck | unités ou moins, alors non
seulement xk n’est pas candidat à entrer en base, mais la solution optimale n’est affectée en
rien par cette modification. Formellement:
34
Théorème 6. Supposons que xk soit une variable hors base pour le dictionnaire optimal
(16)-(17) et supposons que le coefficient ck de xk augmente de δ unités dans la formulation
(FS) (c’est-à-dire, ck est remplacé par ck + δ). Pour un problème de maximisation, si
δ ≤ | c k | (pour un problème de minimisation, si δ ≥ − | c k | ), alors la solution de base x*
reste optimale pour le problème ainsi modifié.
Revenons enfin, une dernière fois, sur l’interprétation économique du coût réduit. Quand
le problème (FS) est vu comme un problème de maximisation du profit, cette
interprétation est très simple: si le profit unitaire attaché à l’activité non profitable k
(associée à xk) subit une augmentation inférieure ou égale à | c k | , alors la solution optimale
n’est pas affectée par cette modification et, en particulier, l’activité économique k reste
non profitable.
Pour un problème de minimisation des coûts, une analyse similaire à la précédente
conduirait à une interprétation similaire du coût réduit | c k | : si le coût unitaire attaché à
l’activité non profitable k subit une diminution (en valeur absolue) inférieure ou égale à
| c k | , alors la solution optimale n’est pas affectée par ce changement et, en particulier,
l’activité économique k reste non profitable.
Exemple 6.
max z = 3x1 + 2x2
(18)
s.c. x1 + 2x2 ≤ 6
← s1
(19)
2x1 + x2 ≤ 8
← s2
(20)
x2 ≤ 2
← s3
(21)
x1, x2 ≥ 0
(22)
(ce problème est presque identique à l’Exemple 1 de la Section 5). Les variables en base à
l'optimum sont x1, x2, s3 (rappel: le nombre de variables en base est égal au nombre de
contraintes). Donc,
1 2 0 
B = 2 1 0 
0 1 1 
( x 1 )( x 2 )(s3 )
35
B
−1
2 / 3 0
 −1 / 3

=  2 / 3 −1 / 3 0
−2 / 3
1 / 3 1
c B = [3
2
0]
1
N = 0
0
c N = [0
0
1
0
0]
c B B −1 = [1 / 3 4 / 3 0]
c B B −1 N = [1 / 3 4 / 3]
z
 x
1

⇒



x2
+ 1 / 3 s1
− 1 / 3 s1
+ 2 / 3 s1
− 2 / 3 s1
+ 4 / 3 s2
+ 2 / 3 s2
− 1 / 3 s2
+ 1 / 3 s2
+ s3
= 38 / 3
= 10 / 3
= 4/3
= 2/3
On en déduit donc que le coût réduit de s1 vaut 1/3 et le coût réduit de s2 vaut 4/3.
Attardons-nous quelques instants sur une interprétation économique possible de ce
résultat. Supposons que la contrainte (19) soit associée à l’existence d’une ressource (par
exemple, un minerai) dont les activités 1 et 2 consomment un certain nombre d’unités. La
firme ne dispose que de 6 unités de la ressource et la contrainte (19) modélise cette
disponibilité limitée. La variable d’écart s1 = 6 – x1 – 2x2 peut alors être interprétée comme
le nombre d’unités de la ressource qui ne sont pas utilisées lorsque les activités 1 et 2 sont
exercées aux niveaux x1 et x2, respectivement. En particulier, dans le plan de production
optimal, la ressource est entièrement utilisée et s1 = 0.
Le modèle (18)–(22) suppose implicitement que la firme ne tire aucun profit des unités
inutilisées (puisque le coefficient de s1 dans la fonction objectif (18) est nul). Imaginons à
présent que la firme parvienne à dégager un profit de 0,25 (unités monétaires) sur chaque
unité inutilisée de la ressource (par exemple, en revendant ces unités sur un marché
secondaire). La solution optimale s’en trouve-t-elle modifiée ? La réponse est non: puisque
le coût réduit de s1 vaut 1/3, la solution optimale reste inchangée tant que le profit par unité
de ressource inutilisée n’excède pas 1/3. Par contre, si le profit par unité inutilisée de la
ressource s’élevait à 0,50, alors l’activité « revente de la ressource » deviendrait profitable
(la nouvelle solution optimale serait: (z, x, s) = (13, 4, 0, 2, 0, 5, 2)).
36
D’autres renseignements peuvent être extraits du dictionnaire optimal. Demandons nous,
par exemple, dans quel intervalle peut varier c2 (le coefficient de x2) sans affecter
l'optimalité de (x*1, x*2) = (10/3, 4/3). (La variable x2 est en base à l’optimum et les coûts
réduits ne procurent donc aucune information à ce sujet.)
Pour répondre à la question, posons c'2 = 2 + δ. On a alors c'B = [3, 2 + δ, 0 ]. Exprimons
les conditions d’optimalité:
 −1 / 3 2 / 3 
c' B B N − c' N = [3 2 + δ 0]  2 / 3 −1 / 3 − [0 0]
−2 / 3 1 / 3 
4 1 
1 2
= + δ
− δ ≥ 0.
3 3 
3 3
−1
Ces conditions sont satisfaites pour autant que −
1
≤ δ ≤ 4 , ce qui signifie que x* reste
2
optimal tant que c2 varie dans l'intervalle [3/2, 6]
8.2. Variations des membres de droite des contraintes.
Si le membre de droite des contraintes, c’est-à-dire le vecteur b, est remplacé par un
nouveau vecteur b', alors la condition d'optimalité cBB–1N − cN ≥ 0 (ou ≤ 0) n'en est pas
affectée. La nouvelle solution de base (xB,xN) = (B–1b',0) associée à la base courante est
donc optimale pour autant qu'elle soit réalisable. Puisque cette solution satisfait (par
construction) au système des contraintes Ax = b', elle sera réalisable, et donc optimale, si
et seulement si B–1b' est non négatif. Cette dernière condition permet de conduire
l’analyse de sensibilité relative aux changements du membre de droite des contraintes.
Il est peut-être nécessaire d’insister sur la signification précise de ces observations.
Lorsque b est remplacé par b’, et que B–1 b' ≥ 0, la solution optimale reste celle associée à
la même base B; autrement dit, les mêmes variables restent en base à l’optimum. Mais, en
général, la solution optimale, c’est-à-dire la valeur prise par les variables en base à
l’optimum, subit une modification: xB devient B–1b’ au lieu de B–1b (en termes
économiques, les mêmes activités restent profitables suite à la modification des ressources,
mais elles sont exercées à un niveau différent). De même, la valeur optimale de la fonction
objectif (le profit optimal) est généralement affectée par la modification du vecteur b.
37
Appliquons par exemple cette approche à la question suivante: dans quel intervalle peut
varier bi, le membre de droite de la contrainte i, sans affecter l'optimalité de la base
courante ? Il suffit pour répondre à cette question de remplacer bi par b'i et d’exprimer que
B–1 b' ≥ 0.
Exemple 6 (suite).
Pour l’Exemple 6 traité plus haut, voyons dans quel intervalle peut varier b2 sans affecter
l’optimalité de la base B:
B
−1
−2 + 2 / 3 b' 2 
6 


b' = B  b' 2  =  4 − 1 / 3 b' 2  ,
−2 + 1 / 3 b' 2 
2 
−1
donc B–1 b’ ≥ 0 si et seulement si b'2 ∈ [6,12].
Introduisons à présent la notion de prix dual des contraintes. Pour comprendre ce concept,
considérons d'abord un problème de type « maximisation du profit », où chacune des
contraintes modélise la disponibilité limitée d’une des ressources:
n
max z( x) = ∑ c j x j
j=1
n
s.c.
∑ a ij x j ≤ b i (i = 1,..., m)
j=1
x j ≥ 0 (j = 1,..., n).
Pour de tels problèmes, il est légitime de s’interroger sur l’ampleur du « manque à gagner »
causé par la rareté des ressources. En d’autres termes, il est intéressant pour la firme de
connaître le profit additionnel qu’elle pourrait enregistrer si elle s’appropriait une unité
supplémentaire de la ressource i.
Similairement, pour un problème de minimisation des coûts sous contraintes de demande,
de la forme:
38
n
min z( x ) = ∑ c j x j
j=1
n
s.c. ∑ a ij x j ≥ b i (i = 1,..., m)
j=1
x j ≥ 0 (j = 1,..., n)
la firme peut s'interroger sur l'augmentation des coûts que provoquerait une augmentation
marginale de la demande. De telles interrogations conduisent naturellement à la définition
suivante:
Définition 3. Pour un problème de programmation linéaire, le prix dual (ou prix interne,
ou prix marginal) de la contrainte i est la variation − positive, négative ou nulle − de la
valeur optimale du problème lorsque le membre de droite de la contrainte i augmente d'une
unité, c'est-à-dire lorsque bi est remplacé par bi + 1.
Dans un problème de maximisation du profit, il est facile de se convaincre que le prix dual
de la contrainte i est le prix maximum que la firme sera prête à payer pour remplacer bi par
bi + 1. Ceci justifie la terminologie « prix interne »: il s’agit de la valeur à laquelle la firme
évalue une unité de la ressource i, en termes de l’usage interne qu’elle pourrait faire de
cette unité. Une interprétation similaire peut être établie dans la cadre d'un problème de
minimisation des coûts.
Pour calculer les prix duaux, posons y* = cBB–1. En examinant le dictionnaire (16)−(17),
on constate que la valeur optimale du problème avant modification du vecteur b est égale à
cBB–1b = y* b =
m
∑y b
∗
i
i
. Supposons que la base B reste réalisable, et donc optimale,
i =1
suite à la modification de b. On conclut alors que, lorsque bi augmente d’une unité, la
valeur optimale du problème augmente de yi*. On parvient ainsi au résultat suivant:
Théorème 7. Pour i = 1, …, m, le prix dual de la contrainte i est égal à yi*, où (y1*,...,
ym*) = cBB–1.
Le Théorème 7 n’est valide que pour un intervalle de variation du membre de droite de
chaque contrainte i tel que la base B reste optimale après modification de bi dans cet
intervalle (c’est-à-dire, tel que l’ensemble des variables en base reste inchangé). Nous
supposerons dorénavant que la définition des prix duaux ne s’applique que sous cette
restriction, et nous pourrons donc parler de « domaine de validité des prix duaux ».
39
Exemple 6 (suite).
Nous avons calculé plus haut le vecteur y* : y* = cB B–1 = [1/3 4/3 0].
Le prix dual de la contrainte 3 est nul: donc, si b3 passe de 2 à 3 unités, la valeur optimale
du problème ne change pas (cette conclusion pouvait être attendue, puisque la contrainte 3
n’est pas active à l'optimum).
Si b2 passe de 8 à 9 unités, par contre, la valeur des variables en base est donnée par
4
6
−1
−1  
B b' = B 9 = 1  ,
1 
2
c’est-à-dire (x1,x2,s3) = (4,1,1), et la valeur optimale passe de 38/3 à 38/3 + 4/3 =14.
Remarquons que la base courante est bien réalisable (puisque (x1,x2,s3) ≥ 0). En fait, dans
notre analyse précédente, nous avons établi que la base B reste optimale pour toute valeur
de b'2 ∈ [6,12]. Donc, [6,12] est le domaine de validité du prix dual de la contrainte 2.
De même, si b1 passe de 6 à 7 unités, alors la valeur optimale du problème augmente de
1/3 (on vérifie que ce prix dual est valide dans l'intervalle [4,7]). Nous avions déjà anticipé
ce résultat lors de notre discussion du coût réduit de s1, dans la section précédente. En
termes d’achat, 1/3 est le juste prix auquel la firme évalue une unité supplémentaire de la
ressource 1. En termes de revente (comme dans la Section 7.1), 1/3 est le juste prix auquel
la firme évalue la « dernière » unité de cette ressource en sa possession. Si le prix du
marché est inférieur à 1/3, alors la firme préfère acheter (ou conserver) une unité de cette
ressource et la consommer dans son plan de production. Par contre, si le prix du marché est
supérieur à 1/3, alors la firme préfère ne pas acquérir (ou ne pas conserver) cette dernière
unité de ressource. Cette interprétation justifie bien la terminologie « prix interne ».
9. Dualité.
Dans cette dernière section, nous allons établir un des résultats fondamentaux de la théorie
des programmes linéaires, le théorème de dualité forte. Commençons par un exemple
introductif.
Une histoire écossaise ...
McElpee et McKedalle sont les propriétaires respectifs de deux
partageant l’ensemble du marché des armoires à Simplex City.
produisent des armoires identiques, dans les trois modèles standards
fabrication de ces trois modèles requiert des planches en stratifié
firmes rivales se
Les deux firmes
A1, A2 et A3. La
(pour les parties
40
visibles) et des planches en aggloméré non recouvert (pour les parties cachées), en les
quantités suivantes:
Stratifié
Aggloméré
Profit unitaire
A1
A2
A3
3
1
500
3
3
650
5
4
800
(par exemple, chaque armoire A1 requiert 3 planches de stratifié et 1 planche
d’aggloméré et rapporte £500). Les firmes sont identiques en tous points ... excepté que
McElpee (comme son nom l’indique) utilise la programmation linéaire pour établir ses
plans de production, alors que McKedalle (comme son nom le suggère) n’a jamais rien
compris aux méthodes scientifiques.
Un beau jour, son stock de planches étant épuisé, McElpee appelle son rival pour
s’enquérir de la possibilité de lui racheter une partie de ses stocks. McKedalle possède
3000 planches de stratifié et 2000 planches d’aggloméré dont il n’a pas encore
déterminé le meilleur usage. En particulier, il ne connaît pas encore la valeur réelle que
représente ce stock de planches pour sa firme. Il propose donc à McElpee de lui faire
une offre de prix en fonction de laquelle il donnera sa réponse.
Suite à cette conversation, McElpee se précipite sur son logiciel de programmation
linéaire et a tôt fait d’établir le modèle suivant:
max z = 500A1 + 650A2 + 800A3
s.c.
3A1 + 3A2 + 5A3 + s1
= 3000
A1 + 3A2 + 4A3
+ s2 = 2000
A1, A2, A3, s1, s2 ≥ 0
(18)
(19)
(20)
(21)
dont la solution optimale est (A1,A2,A3,s1,s2) = (500,500,0,0,0), de valeur £575.000.
Il ne lui semble donc pas trop difficile de faire à McKedalle une offre d’apparence
raisonable, quoique largement profitable pour McElpee. Par exemple, en achetant les
planches stratifiées à £120 et les planches en aggloméré à £80, McElpee débourserait
£520.000 et s’assurerait ainsi un bénéfice confortable de £55.000.
Le lendemain, McElpee appelle donc à nouveau McKedalle et lui formule son offre à
£120 et £80. Après une longue nuit de réflexion, cependant, McKedalle, finit par flairer
l’astuce. En effet, aux prix annoncés, chaque armoire A1 coûte 3×120 + 1×80 = £440,
et laisse donc un profit unitaire de £60 à McElpee. Mais dans ce cas, et si les £120 et
£80 représentent réellement la valeur interne des matières pour les deux firmes,
McKedalle n’a aucune raison de laisser son rival récolter le profit et préfère donc
produire lui-même les armoires A1. (Il pourrait, par exemple, produire lui-même 1000
armoires A1 et vendre les 1000 planches d’aggloméré inutilisées à McElpee, ce qui lui
procurerait un revenu total de £580.000.) Il rejette donc l’offre de McElpee, qui s’en
trouve bien marri.
41
Echaudé par cette expérience, McElpee décide d’approcher plus systématiquement le
problème de la détermination des prix. Il lui faudrait fixer des prix ps et pa, raisonne-t-il,
de telle sorte qu’aucune activité ne paraisse profitable à McKedalle. Ces prix devraient
donc satisfaire au système de contraintes suivant:
3ps + pa ≥ 500
3ps + 3pa ≥ 650
5ps + 4pa ≥ 800
ps ≥ 0
pa ≥ 0.
(22)
(23)
(24)
(25)
(26)
Par ailleurs, le prix total déboursé devrait être aussi faible que possible. En d’autres
termes, McElpee doit résoudre le problème:
minimiser PT = 3000ps + 2000pa
sous les contraintes (22)-(26).
(27)
En résolvant ce programme linéaire, McElpee obtient la solution optimale ps = £141,66,
pa = £75 et PT = £575.000. Le prix total à payer est donc exactement égal au bénéfice
optimal qui pourrait être réalisé en acquérant les stocks !! En termes économiques, le
marché est en parfait équilibre.
L’égalité observée dans l’exemple précédent n’est pas le fruit d’une simple coïncidence.
Pour mieux comprendre ce phénomène, généralisons d’abord le raisonnement tenu par
McElpee.
A tout problème de maximisation sous forme standard
max z = c x
s.c. Ax = b
x ≥ 0,
on associe un problème de minimisation, dit problème dual:
min w = b y
s.c. yA ≥ c
y non restreint en signe.
(P)
(D)
Le problème de fixation des prix (22)−(27) formulé par McElpee est donc exactement le
dual du problème de production (18) −(21). De même, au problème de minimisation sous
forme standard
min z = c x
s.c. Ax = b
(P)
x≥0
on associe le problème de maximisation dual
42
max w = b y
s.c. yA ≤ c
y non restreint en signe.
(D)
Dans ce contexte, (P) est appelé problème primal de (D). Remarquons que, si (P) comporte
n variables et m contraintes, alors (D) comporte m variables et n contraintes (une variable
par contrainte de (P), et une contrainte par variable de (P)).
Au prix d'une mise sous forme standard, tout PL a un problème dual. En particulier, le dual
du dual (c’est-à-dire, le problème dual de (D)) existe. On peut montrer que le dual du dual
est un problème de programmation linéaire équivalent au problème primal (cette dernière
affirmation est beaucoup moins évidente que les précédentes; nous ne la démontrerons pas
formellement, mais le lecteur pourra vérifier sa validité sur les exemples numériques).
Existe-t-il une relation entre les valeurs optimales de (P) et de (D) ? Le théorème suivant
apporte une première réponse à cette question.
Théorème de dualité faible. Si x est une solution réalisable de (P) et y est une solution
réalisable de (D), alors
cx ≤ by
lorsque (P) est du type 'maximisation'
et cx ≥ by
lorsque (P) est du type 'minimisation'.
Corollaire. Si (P) et (D) admettent des solutions optimales (disons x* et y*,
respectivement), alors
cx* ≤ by* lorsque (P) est du type 'maximisation'
et cx* ≥ by* lorsque (P) est du type 'minimisation'.
Démonstration du théorème (dans le cas où (P) est du type 'max'). Soient x et y des
solutions réalisables de (P) et (D) respectivement. Puisque c ≤ yA et x ≥ 0, on déduit:
cx ≤ yAx = yb = by.
CQFD
Exemple 5 (suite). Reprenons un exemple traité dans la Section 7:
min z = –3 x1 + 6 x2 – 4 x3
s.c.
x1 – 2 x 2 + x 3
= 8
–2 x1 + 4 x2 – x3 + s2 = 6
43
x1, x2, x3, s2 ≤ 0 .
Le dual de ce problème s’écrit:
max w = 8 y1 + 6 y2
s.c.
y1 – 2 y2
– 2 y1 + 4 y2
y1 – y2
y2
≤
≤
≤
≤
–3
6
–4
0.
En la solution primale (x1,x2,x3,s2) = (8,0,0,22), la fonction objectif z prend la valeur
−24.
De même, en (y1,y2) = (−5,−1), w vaut −46. Il s’ensuit que:
−46 ≤ max w ≤ min z ≤ −24.
Par ailleurs, la solution (x1,x2,x3,s2) = (0,7,22,0) est également réalisable pour (P) et la
fonction objectif y prend la valeur z = −46. On peut donc conclure que cette solution est
optimale pour (P), puisque nous savons par l’inégalité précédente que la valeur d’aucune
solution primale n’est inférieure à −46.
Plus généralement, pour montrer qu'une solution réalisable x* de (P) est également
optimale pour (P), il suffit d'exhiber une solution réalisable y* de (D) telle que cx* = by*.
Le théorème suivant montre que si x* est optimal, alors ceci est toujours possible:
Théorème de dualité forte. Si (P) admet une solution optimale x*, alors (D) admet une
solution optimale y* et cx* = by*. Plus précisément, si x* est une solution de base
optimale de (P) associée à la base B, alors y* = cBB–1 est optimal pour (D) et cx* = by*.
Démonstration. Nous allons seulement considérer le cas où (P) est un problème de
maximisation (l’autre cas est similaire). Soit x* une solution de base optimale de (P)
associée à la base B. Le dictionnaire obtenu à la dernière itération du simplexe peut s’écrire
(voir (16)-(17)):
z
+ (c B B −1 N − c N )x N = c B B −1 b


 x B + B −1 N x N
= B −1 b.
et x ∗B = B −1 b.
Par le critère d'optimalité du simplexe, cBB–1N − cN ≥ 0 (puisque (P) est un problème de
maximisation). Définissons à présent y* = cBB–1. On remarque que, trivialement:
44
c x* = cB B–1 b = y* b.
Au vu du théorème de dualité faible et des remarques formulées ci-dessus, il suffit
maintenant, pour établir que y* est une solution optimale de (D), de montrer que y* est
réalisable pour (D). Il suffit donc de montrer que
y* A ≥ c ,
c’est-à-dire, puisque A = [B N] et c = [cB, cN ], que
y * B ≥ c B

y * N ≥ c N .
Mais ces condition sont bien satisfaites, puisque
y* B = cB B–1 B = cB
et
y* N = cB B–1 N ≥ cN (comme mentionné plus haut).
CQFD
Pour illustrer le théorème et sa démonstration, reprenons une fois de plus l'Exemple 5.
Exemple 5 (suite).
Nous avons établi dans la Section 7 que la solution (x1, x2, x3, s2) = (0, 7, 22, 0) est bien
une solution de base optimale associée à la base
 −2 1
B=

 4 −1
et de valeur −46. Calculons
1 / 2 1 / 2
y* = c B B −1 = [6 − 4]
= [ −5 − 1].
1 
2
Comme prévu, y* est réalisable pour le problème dual et y*b = (−5×8) + (−1×6) = −46.
Il est intéressant de remarquer que le vecteur y* introduit dans le Théorème de dualité forte
est le même que celui intervenant dans le Théorème 7. Le Théorème 7 pourrait donc être
reformulée de la façon suivante: le prix dual de la contrainte i est égal à la valeur optimale
de la variable duale yi.
Mentionnons enfin, si il en est encore besoin, que le Théorème de dualité forte explique
l’équilibre de marché constaté par McElpee: pour le plan de production optimum, il est
45
possible d’affecter un prix interne à chacune des ressources de telle sorte que la valeur
totale des ressources utilisées soit égale au profit dégagé par leur utilisation.
Références.
V. Chvátal, Linear Programming, W.H. Freeman and Company, 1983.
G.B. Dantzig, Linear Programming and Extensions, Princeton University Press, 1963.
G.D. Eppen, F.J. Gould and C.P. Schmidt, Introductory Management Science (4ème éd.),
Prentice Hall, 1993.
H.A. Taha, Operations Research: An Introduction (5ème éd.), McMillan Publishing
Company, 1992.

Documents pareils