Chapitre 16
Chapitre 16
Chapitre 16
PROGRAMMATION LINÉAIRE
Seul le cas des variables continues sera étudié dans cette section. On commen-
Index
cera par exposer les fondements de la programmation linéaire qui sont simples et
non susceptibles d’améliorations (§ I-1). On examinera ensuite l’interprétation
économique des résultats, ce qui est important pour l’usage de cette technique en
gestion (§ I-2, page 1109), avant d’aborder (§ I-3, page 1111) l’analyse post-opti-
male intégrée dans les programmes de traitement informatique des problèmes de
programmation linéaire. Cet exposé rapide des fondements de l’analyse post-opti-
male est nécessaire car, en gestion, les paramètres utilisés sont connus avec une
certaine plage d’incertitude et toute présentation de solution ponctuelle a intérêt à
être relativisée par une étude de sensibilité. On présentera enfin (§ I-4, page 1117)
la méthode du simplexe utilisée pour résoudre numériquement le problème d’opti-
misation linéaire faisant intervenir des variables continues ; de nos jours, son
intérêt est plus de faciliter la compréhension des résultats et celle des analyses de
sensibilité que strictement opérationnel car, comme on le verra, les tableurs sont
dotés de fonctionnalités permettant de traiter facilement des problèmes de dimen-
sion modeste.
1. L’ouvrage, un peu ancien, de Wagner [435] reste l’un des plus clairs et complet (voir chapitres II à V) dans ce
domaine (l’exemple numérique de la première section de ce chapitre est tiré de cet ouvrage). La lecture de ce
texte peut être complétée, notamment en ce qui concerne les outils actuellement disponibles, par l’ouvrage
d’Eric Jacquet-Lagrèze [241].
1106 Gestion de la production et des flux
Table des
matières
j=1
Le problème peut être posé également sous une forme dite standard qui ne
diffère de la forme canonique que par la transformation des inégalités en égalités.
Ceci n’est possible qu’au prix de la création d’une variable d’écart xn + i , par
thématique
contrainte i. Le coefficient aij affecté à cette variable d’écart est nul dans toutes les
Index
contraintes, sauf celle concernée par cette variable, et, dans ce dernier cas, est égal
à + 1 si l’inégalité est du type «inférieur ou égal», et à –1 dans le cas contraire.
Au problème posé, appelé problème primal correspond un problème dit dual
dans lequel:
- la fonction à minimiser (si le problème primal est un problème de maximum)
est une combinaison linéaire des bi ,
- cet optimum est lié à un ensemble de contraintes qui sont aussi des fonctions
linéaires des aij, mais bornées cette fois par les c j .
L’intérêt de l’examen simultané des problèmes dual et primal réside dans le fait
que des relations caractéristiques unissent leurs solutions et, en particulier, que la
valeur optimale prise par les deux fonctions à optimiser est la même. Ces deux
problèmes peuvent être présentés dans le tableau synoptique de la page 1107, ces
diverses notations y seront illustrées par un exemple numérique.
I-1.2 Solution analytique du problème
L’examen de la formulation standard du problème primal montre que les
contraintes se traduisent par un système comportant m équations et m + n incon-
1. Cette formulation «classique» est restrictive car il suffit qu’une seule de ces m contraintes soit du type ≤ ou =
pour que le problème de maximisation sous contrainte puisse être posé.
Chapitre XVI - Programmation linéaire 1107
TABLEAU 340
Formulations du problème
Problème primal Problème dual
Notation notation
matricielle en sommation en sommation matricielle
fonction à
optimiser
x0 = ∑ c j x j y0 = ∑ bi yi
j=1 i=1
j i
. Ax ≤ b avec: n m
. yA ≤ c avec:
A; x ; b
(m, n) (n, 1)(m, 1)
. ∑ x a ≤ b , pour i . ∑ y a ≤ c , pour j y; A; b
n
j=1
j ij i
m
i=1
i ij j
(1, m) (m, n) (1, n)
= 1, ... , m = 1, ... , n
Max x0 , avec: Min y0 , avec:
Max x0 Min y0
.x = ∑ c x n+m
. y = ∑ by n+m
fonction à
optimiser
avec x0 = cx et 0 j j 0 i i avec y0 = yb et
j=1 i=1
; b
c ; x
(1, n + m) (n + m, 1) . c = 0, ∀ j tel que . b = 0, ∀ i tel que
j i
y
(1, m + n) (m + n, 1)
. x≥0 . x ≥0
j . y ≥0
i . y≥0
. Dx = b, avec: . ∑ d x =b
n+m
ij j i . ∑ g y =c
n+m
ij i
. yG = c, avec:
j
Forme standard
j=1 i=1
D = [ A, I ] et I . avec: . avec: G = –I et I
thématique
Sous contraintes
nues. Le système peut toujours être satisfait avec n variables nulles, les m restantes
étant normalement non nulles, ce dernier ensemble constituant une base. Il est
intuitivement évident que x0 sera optimal pour une combinaison de variables non
nulles comportant le moins de variables possibles, c’est-à-dire m. Si nous permu-
tons alors les colonnes de la matrice D, de façon qu’aux m premières, correspon-
dent les variables constitutives de l’une des bases possibles et désignons par B
1108 Gestion de la production et des flux
Table des
matières
et d’un indicateur permettant de dire si l’optimum est atteint. L’algorithme, qui
sera présenté brièvement au § I-4, page 1117, calcule simultanément les solutions
des problèmes primal et dual (si elles existent), puisque le critère utilisé nécessite1
le calcul de la solution du problème dual (sous sa forme standard), que l’on
démontre être:
thématique
Index
–1 –1
y = [ c B B A – c, c B B ] relation 474
et qui, à l’optimum2, doit être positif ou nul. L’optimum n’est atteint que si y ≥ 0 .
Le premier bloc de ce vecteur ligne (noté yc ) correspond aux valeurs prises par
les variables d’écart dans le problème dual, tandis que le second bloc (noté ye )
correspond aux valeurs prises par les variables qui n’interviennent que dans la
011 –c 01 m
1. Le tableau de simplexe du départ se présente matriciellement: , où 0pq est une matrice de 0 à p
b A Im
lignes et q colonnes et Im une matrice unité de rang m. À n’importe quelle itération (et donc pour n’importe
–1
1 –cB
quelle base), le tableau du simplexe s’obtient en prémultipliant la matrice précédente par , ce qui
0m1 B
c B B –1 b c B B –1 A – c c B B –1
donne . La méthode du simplexe fournit donc simultanément une solution opti-
B –1 b B –1 A B –1
male au problème primal (en donnant les seules valeurs non nulles de ce problème) et une solution au problème
dual (en fournissant toutes les valeurs des variables).
2. On peut remplacer À par N ou D, ce qui, à une permutation près (pour N) ou quelques zéros supplémentaires
(pour D), fournit les mêmes conditions mais ne correspond plus immédiatement à y tel que nous l’avons défini.
Chapitre XVI - Programmation linéaire 1109
TABLEAU 343
Résultat du simplexe et interprétation des résultats
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
695 0 3 11 13 5
0 –4 –5 –9 –11 0 0 0 ---------
7
---
7
0 ------
7
------
7
0 ---
7
50 5 –5 10 –1
15 1 1 1 1 1 0 0 ------ 1 --- 0 ------ ------
7
0 ------
7 7 7 7
325 0 –6 13 –61 4
120 7 5 3 2 0 1 0 --------- ------ 0 ------ --------- 1 ---
7 7 7 7 7
55 0 2 12 –3 1
------ --- ------ ------ 0 ---
100 3 5 10 15 0 0 1 7 7 1 7 7 7
. Tableau numérique initial après permutation des colonnes pour «isoler» la base (l’ordre retenu pour les
variables rentrant dans la base doit être tel que l’on ait B –1 B = I )
0 2 4 5 7 1 6 3
15 1 1 1 0 1 0 1
011 –cN –cB
b N B
120 5 2 0 0 7 1 3
100 3 15 0 1 3 0 10
..
Interprétation mathématique des variables duales
Introduction supplémentaire d’une variable hors base dans la solution: exemple 1x2
x1 → 50 ⁄ 7 – 5 ⁄ 7 = 45 ⁄ 7 ; x6 → 325 ⁄ 7 + 6 ⁄ 7 = 331 ⁄ 7 ; x3 → 55 ⁄ 7 – 2 ⁄ 7 = 53 ⁄ 7
. contrainte 1: 1 ( 45 ⁄ 7 ) + 1 ( 1 ) + 1 ( 53 ⁄ 7 ) = 15 (saturation)
. contrainte 2: 7 ( 45 ⁄ 7 ) + 5 ( 1 ) + 3 ( 53 ⁄ 7 ) = 509 ⁄ 7 (non saturation, reste 331/7)
. contrainte 3: 3 ( 45 ⁄ 7 ) + 5 ( 1 ) + 10 ( 53 ⁄ 7 ) = 100 (saturation)
.
. fonction-objectif: 4 ( 45 ⁄ 7 ) + 5 ( 1 ) + 9 ( 53 ⁄ 7 ) = 692 ⁄ 7 (soit une perte de 3/7)
Resserrement d’une contrainte saturée: exemple b → 14 1
. x → 50 ⁄ 7 – 10 ⁄ 7 = 40 ⁄ 7 ; x → 325 ⁄ 7 + 61 ⁄ 7 = 386 ⁄ 7 ; x → 55 ⁄ 7 + 3 ⁄ 7 = 58 ⁄ 7
. contrainte 1: 1(40 ⁄ 7) + 1(58 ⁄ 7) = 14 (saturation)
1 6 3
TABLEAU 341
Formulation du problème
PRIMAL DUAL
Formulation Formulation Formulation
matricielle explicite matricielle
Max x0 (=cx), avec Min y0 (= yb), avec
c = 4 5 9 11 0 0 0 y = y1 y2 y3 y4 y5 y6 y7
Fonction à
optimiser
formulation
x’= x1 x2 x3 x4 x5 x6 x7
... canonique
Dans la
x0 = 4x1 + 5x2 + 9x3 + 11x4 y0 = 15y5 + 120y6 + 100y7
formulation
... canonique
Dans la
... standard
... standard
A x ≤ b, avec
Forme canonique
D= 1 1 1 1 1 00
(2)7x 1+5x 2+3x 3+2x 4+x 6 (2’) 1y 5 + 5y 6 + 5y 7 –y 2= 5 0 –1 0 0 -I
7 5 3 2 0 1 0
= 120 (3’) 1 y + 3 y +10 y – y = 9 0 0 –1 0
Table des
3 5 10 15 0 0 1
matières
5 6 7 3
(3)3x 1+5x 2+10x 3+15x 4+x 7 G= 0 0 0 –1 =
15 (4’)1y 5 + 2y 6 +15y 7 – y 4=11
= 100 1 1 1 1
b= 120 yi ≥ 0, ∀i A
x j ≥ 0, ∀ j 7 5 3 2
100 3 5 10 15
thématique
Index
Min cx
sous contraintes Ax ≥ b et x ≥ 0
Les variables duales associées aux contraintes productives s’analysent comme
un système de prix correspondant à une tarification au coût marginal puisque
chaque yi représente l’accroissement du coût global résultant d’une extension
d’une unité de la ième contrainte, c’est-à-dire de la satisfaction d’une unité supplé-
mentaire de demande de i1. Ce système de prix en outre est tel qu’il assure juste
la couverture des coûts de production, propriété qui résulte de l’égalité à
l’optimum, des deux fonctions-objectifs.
I-3 Introduction à l’analyse post-optimale
L’analyse post-optimale consiste en une étude de sensibilité des résultats
ponctuels fournis par la résolution du programme linéaire, lorsque l’on fait varier
une ou plusieurs valeurs des paramètres de c, b ou A. En pratique, on réserve le
terme d’analyse post-optimale à la recherche des domaines de variation de ces
paramètres qui n’entraînent pas de remise en cause de la base retenue dans la solu-
1. Notons que si la demande à satisfaire pour certains produits est faible et que, dans le processus productif, il est
inévitable de les produire en assez grande quantité (productions dites fatales), les contraintes correspondantes
ont de fortes chances de ne pas être saturées, les variables duales associées sont alors nulles, et de ce fait les tarifs
correspondants le sont aussi, ce qui, commercialement parlant, peut poser quelques problèmes.
1112 Gestion de la production et des flux
TABLEAU 342
Présentation de la solution
Primal Dual
Solution:
x B = B –1 b ; x N = 0 ;
x 0 = cB B –1 b
xB*' = x * x * x * = 50 325 55
1 6 3 ----- - --------- ------
7 7 7
1 0 1
B= 7 1 3
3 0 10
cB = La solution du problème
4 0 9 Solution optimale dual exprimé avec les résul-
xN*'= x * x * x * x * = 0 0 0 0 des problèmes primal et dual tats du primal est:
2 4 5 7
1 1 1 0
h 0 1 2 3 4 5 6 7 y * = cB B –1 A – c cB B –1
N= 5 2 0 0 50
xh* 695 55 325
--------- ------ 0 ------ 0 0 --------- 0
5 15 0 1
7 7 7 7 Variables Variables
695 3 d’écart canoniques
cN = 5 11 0 0 yh* --------- 0 --- 0 ------ ------ 0 5---
11 13 du dual du dual
7 7 7 7 7 soit ici:
Variable d’écart
Solution optimale si y1* y2* y3* y4* y5* y6* y7*
Table des
.ou cB B–1 D – c ≥ 0 et cB B–1 ≥ 0
matières
du dual y* = 0 3--- 0 11 13 0 5
------ ---
Variable d’écart
(formulation standard) ------
7 7 7 7
.ou cB B–1 A – c ≥ 0 et cB B–1 ≥ 0
du primal
(formulation canonique) prix-fantômes
.ou cB B–1 N – cB ≥ 0 et cB B–1 ≥0 Lorsqu’une variable d’écart est nulle, la du primal
variable duale correspondante est positive et
thématique
avec réciproquement coûts-fantômes
Index
du primal
cB B –1 D – c = 0 3--- 0 11
------ 0 0 0
7 7
1234
cB B –1 A – c = 0 3--- 0 11
------
7 7
163
cB B –1 = 13 5
------ 0 ---
7 7
2457
cB B –1 N – cB = 3--- 11
------ 0 0
7 7
tion ponctuelle de départ, les valeurs prises dans la base pouvant changer. Le terme
d’analyse paramétrée est utilisé pour les analyses de sensibilité qui acceptent de
remettre en cause les solutions de départ. On ne s’attardera ici que sur les analyses
portant sur les vecteurs c et b, d’une part parce que ce sont celles qui nous intéres-
sent au premier chef et, d’autre part, parce que l’analyse post-optimale portant sur
les coefficients de la matrice A, simple dans ses fondements, nécessite dans sa
présentation de longs développements de calcul matriciel.
Chapitre XVI - Programmation linéaire 1113
1 5⁄7 0 –5 ⁄ 7 10 ⁄ 7 0 –1 ⁄ 7
–1 –1
B A= 0 –6 ⁄ 7 0 13 ⁄ 7 ; B = –61 ⁄ 7 1 4⁄7
0 2⁄7 1 12 ⁄ 7 –3 ⁄ 7 0 1⁄7
Table des
matières
deux coefficients.
I-3.1.1 Modification d’un coefficient d’une variable hors base
Comme ∆cB est nul par hypothèse, les conditions se simplifient: la seconde
condition (relation 477) est toujours satisfaite, tandis que la première (relation
476) devient: yc* – ∆c ≥ 0 , d’où ∆c ≤ yc* .
Autrement dit, les coefficients des variables «hors base» peuvent varier sans
remettre en cause l’optimalité de la solution de départ, à condition que cette varia-
tion soit au plus égale à la valeur optimale duale correspondante s’il s’agit d’un
accroissement, et sans limitation si cette variation est négative.
Exemple : La variable x2 de notre exemple numérique est hors base, son coefficient peut
varier sans remettre en cause l’optimum x1* = ------ ; x6* = --------- ; x3* = ------ , si c2 ≤ 5 + --- ou, ce
50 325 55 3
7 7 7 7
3
qui revient au même, si ∆ c2 ≤ --- .
7
I-3.1.2 Modification d’un coefficient d’une variable de la base
Dans ce cas, la valeur prise par l’optimum x0 change du fait de la variation des
–1
cB puisque x0 = cB B b , sans que l’on ait pour autant de modification des valeurs
prises par la base (comme nous l’avons vu ci-dessus). Si un seul coefficient c j
1114 Gestion de la production et des flux
1 5 ⁄ 7 0 –5 ⁄ 7
[ ∆c1, 0, 0 ] ⋅ 3 11 ≥ 0
0 –6 ⁄ 7 0 13 ⁄ 7 + –∆c1, --7-, 0, -----7
-
0 2 ⁄ 7 1 12 ⁄ 7
3 5 11 5
c’est-à-dire: --- + --- ∆c1 ≥ 0 ; ------ – --- ∆c1 ≥ 0
7 7 7 7
–1
• ∆cB B + ye* ≥ 0
10 ⁄ 7 0 –1 ⁄ 7
13 5
[ ∆c1, 0, 0 ] ⋅ –61 ⁄ 7 1 4 ⁄ 7 + ----- -, 0, --- ≥ 0
7 7
–3 ⁄ 7 0 1⁄7
13 10 5 1
c’est-à-dire: ------ + ------ ∆c1 ≥ 0 ; --- – --- ∆c1 ≥ 0
7 7 7 7
Table des
matières
La réunion de ces conditions permet de définir le domaine suivant:
–3 ⁄ 5 ≤ ∆c1 ≤ 11 ⁄ 5
La valeur optimale varie dans cet intervalle de définition comme, x1* ∆c1 puisque x1* n’est pas
thématique
50 695 50
Index
affecté; c’est-à-dire que l’on a (voir figure 264): x0 = x0* + ------ ∆c1 = --------- + ------ ∆c1
7 7 7
FIGURE 264
Modification d’un coefficient d’une variable de la base
x0
805 = 115
7
110
50 ∆c 1
105 695 + 7
x0 = 7
100 695
95 7
∆c1
–1 –3/5 0 1 2 11/5
c1
3 3,4 4 5 6 6,2
Chapitre XVI - Programmation linéaire 1115
1 3 13 + 10∆c – 3∆c ≥ 0
ce qui conduit au second système de contraintes: 5 – ∆c + ∆c ≥ 0
1 3
Ces systèmes de contraintes se traduisent graphiquement par le domaine de validité défini par
la zone en bleu pâle de la figure 265, page 1116.
Les valeurs de x1 et de x3 restant inchangées, la valeur prise par la fonction-objectif est:
50 55 695 50 55
x0 = x0* + ------ ∆c1 + ------ ∆c3 = --------- + ------ ∆c1 + ------ ∆c3 . Ajoutons, pour en terminer sur ce point, que
7 7 7 7 7
la généralisation à plus de deux coefficients, ne pose qu’un problème de «visualisation» du
domaine de validité des variations simultanées de ces coefficients.
I-3.2 Modification du second membre d’une contrainte
On remarque tout d’abord que cette analyse peut être effectuée à partir du
problème dual puisque les constantes des seconds membres des contraintes sont
aussi les coefficients de la fonction-objectif du dual. On peut toutefois faire sans
difficulté l’analyse directe de ce cas. En effet, les conditions d’optimalité (= coûts-
fantômes y*) ne font pas intervenir le vecteur b, on est donc assuré que la solution
est optimale, mais rien ne garantit alors que cette solution (= B–1b) reste faisable,
c’est-à-dire que toutes les composantes du vecteur x restent positives. On doit
donc avoir:
–1 –1
B ( b + ∆b ) = xB* + B ∆b ≥ 0 relation 480
1116 Gestion de la production et des flux
FIGURE 265
Modification simultanée de plusieurs coefficients de la fonction-objectif
3+ ∆c3
3+
5∆c 1
13/3
5∆c 1
+ 2
+ 2
∆c 3
∆c 3
>0
>0
<0
c3
1 12∆
+
5 ∆c 1 <0
c3
-9/5 1 11 -
+ 12∆
5∆c 1
11 - 5 ∆c1
0
<0
> 0
>0
-5/5
∆c 3 <
3
3
+ ∆c
- 3∆c
3
- 3∆c
c 1 +
- ∆ ∆c 1
5 -
1
10∆c
1
10∆c
Table des
matières
13 +
-5
13 +
thématique
Un raisonnement direct fournit la réponse au problème posé, mais on peut aussi
Index
utiliser l’inéquation matricielle 480.
- Raisonnement direct. La base de la solution optimale de départ intègre les
variables d’écart correspondant à ces contraintes. Pour qu’une variable
d’écart reste dans la base, il est donc nécessaire que la diminution du seuil,
dans le cas présenté de contraintes de type < (ou de leur accroissement dans
le cas contraire), ne soit pas supérieure à la valeur optimale d’origine de la
variable d’écart, puisqu’au mieux la contrainte est saturée. Par contre, on
pourra toujours desserrer une contrainte déjà non saturée. Il est évident que
la variation d’une variable d’écart est sans incidence sur l’optimum, puisque
le coefficient qui lui est associé dans la fonction-objectif est nul.
Exemple: La variable x6 de notre exemple numérique appartient à la base et sa valeur à
l’optimum est x6 = 325 ⁄ 7 . Le seuil b2 de la contrainte correspondante peut donc varier
de telle sorte que: ∆b2 ≤ 325 ⁄ 7 . La solution optimale reste donc inchangée tant que l’on
a: b2 ≤ 515 ⁄ 7 .
- Application de la condition formulée. Si une seule contrainte non saturée k
varie, les autres inéquations sont satisfaites car l’écart ∆bi correspondant est
nul, il ne reste donc plus qu’à voir si l’inéquation correspondante k est satis-
faite. On peut montrer d’après l’algorithme du simplexe que l’élément de la
–1
kème ligne et de la kème colonne de la matrice B est forcément égal à 1, il
s’ensuit que l’inéquation qui nous intéresse a pour formulation: xk* + ∆bk ≥ 0
Exemple: En reprenant notre exemple, on peut écrire:
Chapitre XVI - Programmation linéaire 1117
50 ⁄ 7 10 ⁄ 7 0 –1 ⁄ 7 0 50 ⁄ 7 0
* + B –1 ∆b =
xB 325 ⁄ 7 –61 ⁄ 7 1 4 ⁄ 7
+ ⋅ ∆b 2 = 325 ⁄ 7 + ∆b 2 ≥ 0
55 ⁄ 7 –3 ⁄ 7 0 1 ⁄ 7 0 55 ⁄ 7 0
ce qui entraîne: ∆b2 ≤ 325 ⁄ 7 .
0
FIGURE 266
Analyse post-optimale d’une contrainte saturée
thématique
x0
Index
46620
427
13 ∆b 1
695 + 7
x0 = 7
695
90 7
∆b1
-5 0 325/61
b1
10 15 20,33
Table des
matières
Nous illustrerons la démarche en nous appuyant sur l’exemple numérique
suivant:
- maximiser x0 , avec x0 = 4x1 + 5x2 + 9x3 + 11x4 (qui correspond à la fonc-
tion-objectif),
thématique
Index
- sous contraintes:
1x1 + 1x2 + 1x3 + 1x4 ≤ 15
7x1 + 5x2 + 3x3 + 2x4 ≤ 120
3x1 + 5x2 + 10x3 + 15x4 ≤ 100
x1 ≥ 0 ; x2 ≥ 0 ; x3 ≥ 0 ; x4 ≥ 0
Cette formulation retenue ici est la formulation canonique (voir page 1106).
L’utilisation de l’algorithme du simplexe nécessite une transformation préalable
des inégalités en égalités, par l’introduction de variables d’écart (elles-mêmes
positives ou nulles). L’introduction de la variable d’écart x5 dans la première
contrainte, par exemple, conduit à la formulation équivalente suivante:
1x1 + 1x2 + 1x3 + 1x4 + 1x5 = 15
1. Lorsque les variables x j , au lieu d’être toutes continues, ne peuvent prendre que des valeurs entières positives
ou nulles, on parle alors de programme linéaire en nombres entiers (ou de programmation linéaire en nombres
entiers). Lorsque certaines variables sont continues et que les autres variables ne peuvent prendre que des valeurs
entières positives ou nulles, le problème posé est alors habituellement qualifié de programme linéaire mixte.
Chapitre XVI - Programmation linéaire 1119
plus forte possible pour une solution qui comportera le moins de variables posi-
matières
tives possibles (cette intuition peut être explicitée, comme on le verra ultérieure-
ment, à partir des taux marginaux de substitution et du taux de rentabilité
marginale, associés à toute variable candidate à entrée dans la base). On peut
ajouter que l’on ne peut rendre nulles a priori plus de 4 variables, faute de risquer
thématique
Le choix d’une solution initiale ne pose guère de difficulté pour les problèmes
de ce § I-4.1, il suffit, en effet, de rendre nulles toutes les variables qui ne sont pas
des variables d’écart, la fonction-objectif prenant alors la valeur 0. On a donc
comme variables de base: x5 = 15, x6 = 120, x7 = 100 et comme variables hors-
base: x1 = 0, x2 = 0, x3 = 0 et x4 = 0.
Une fois trouvée cette solution initiale, la recherche progressive de la solution
optimale s’effectue en travaillant sur un tableau de calculs, appelé tableau du
simplexe, lequel est progressivement transformé en totalité au cours de chaque
itération qui comporte trois étapes de calcul. Le tableau initial du simplexe ne fait
que reprendre sous une forme tabulaire les coefficients du problème standard dont
l’indice est supérieur à zéro, après permutation des premiers et seconds membres
des contraintes, et après avoir regroupé dans un même membre les termes définis-
sant la fonction-objectif1. On part donc du problème suivant:
0 = – 4 x1 – 5 x2 – 9 x3 – 11 x4 – 0 x5 – 0 x6 – 0 x7 + x0
15 = + 1 x1 + 1 x2 + 1 x3 + 1 x4 + 1 x5 + 0 x6 + 0 x7
120 = + 7 x1 + 5 x2 + 3 x3 + 2 x4 + 0 x5 + 1 x6 + 0 x7
100 = + 3 x1 + 5 x2 + 10 x3 +15 x4 + 0 x5 + 0 x6 + 1 x7
pour aboutir au tableau initial du simplexe suivant:
x1 x2 x3 x4 x5 x6 x7
Table des
matières
0 –4 –5 –9 –11 0 0 0
15 1 1 1 1 1 0 0
thématique
Index
120 7 5 3 2 0 1 0
100 3 5 10 15 0 0 1
ment retenues dans la base. En toute rigueur, ce raisonnement doit être tenu pour
des variations infiniment petites dx j , c’est-à-dire que le produit de cette valeur
pour la variable j par une variation infinitésimale dx j correspond à la variation
infinitésimale dx0 consécutive à la non-introduction de dx j . Ceci confère à ces
valeurs la signification de dérivées partielles de la fonction-objectif par rapport
aux variables, en un point défini par les valeurs des variables actuellement rete-
nues. Il faut souligner que ces interprétations restent valables au début de
n’importe quelle itération. Dès lors, le critère de sélection de la variable entrante,
utilisé à la première étape de calcul d’une itération de la méthode du simplexe,
s’interprète parfaitement : il consiste à « sélectionner la variable hors base à
laquelle est associée la plus faible valeur dans la première ligne du tableau, à
condition que celle-ci soit négative» (la variable entrante de la première itération
sera donc ici x4 ). Si au début d’une itération quelconque on ne trouve plus de
valeur négative, c’est qu’il n’existe plus de possibilité d’accroître la valeur prise
par la fonction-objectif et que l’optimum est atteint. Il y a alors lieu d’arrêter la
recherche.
Une fois sélectionnée la variable entrante, il faut déterminer la variable sortante.
Au cours d’une itération quelconque, les coefficients de la colonne d’une variable
hors base, à l’exception de celui de la première ligne, s’interprètent économique-
ment comme le taux marginal de substitution de la variable hors base et des
variables de la base (repérées, rappelons-le, par des 1 cerclés en jaune). Ici une
unité de la variable entrante x4 se substitue simultanément à 1 unité de la variable
Table des
il prendrait comme valeur 15/1 = 15. Il est bien évident que si la variable entrante
x4 doit prendre la place de l’une des variables de base, c’est l’une de ces trois
valeurs trouvées (15; 60; 20/3) qu’elle doit prendre. La valeur que l’on retiendra
ne peut être que la plus faible, c’est-à-dire ici 20/3, puisque l’introduction de x4
s’effectue au détriment de toutes les variables de base. Le critère de sélection de
la variable sortante utilisé au cours de la deuxième étape de calculs d’une itération
de la méthode du simplexe consiste à «choisir la variable de base dont le quotient
de la valeur par le taux marginal de substitution est le plus faible possible».
La troisième et dernière étape de calcul d’une itération a pour but de calculer le
tableau du simplexe qui découle du choix de la nouvelle base, c’est-à-dire les
nouvelles valeurs prises par les variables de base, les nouveaux taux marginaux de
substitution et les nouvelles dérivées partielles de la fonction-objectif par rapport
aux variables. Cette dernière étape, qualifiée de changement de base, s’effectue
en deux temps. On divise tout d’abord la ligne de la variable sortante par le taux
marginal de substitution de la variable entrante à la variable sortante, connu encore
sous le nom de pivot (ici le pivot est 15), pour obtenir la ligne de la variable
entrante (qui remplace la variable sortante) et que l’on appelle encore nouvelle
ligne du pivot. Dans un second temps, on retranche aux autres lignes du tableau,
la valeur prise par la variable entrante dans la ligne, multipliée par la nouvelle
1122 Gestion de la production et des flux
Table des
matières
Dans le § I-4.1 nous avons décrit l’utilisation de la méthode du simplexe pour
résoudre des programmes linéaires dans lesquels la fonction-objectif est à maxi-
miser et où les contraintes sont toutes du type ≤. Levons maintenant ces deux
restrictions.
thématique
L’adaptation de la méthode à un problème de minimisation sous contrainte ne
Index
soulève guère de difficulté. On sait, en effet, transcrire un problème de minimisa-
tion en un problème de maximisation: minimiser ∑ c j x j est équivalent à maxi-
j
miser ∑ ( –c j )x j . Il suffit donc de changer le signe de tous les coefficients de la
j
fonction-objectif à minimiser pour se ramener à un problème de maximisation, et
donc être en mesure d’utiliser l’algorithme du simplexe tel qu’il est décrit au § I-
4.1. On peut ajouter que les variables du problème étant nécessairement positives
ou nulles, la solution d’un problème de minimisation dans lequel les coefficients
de la fonction-objectif (avant changement de signes) seraient tous positifs ne peut
qu’être obtenue avec des valeurs nulles pour les variables intervenant dans la
forme canonique du problème.
Chapitre XVI - Programmation linéaire 1123
TABLEAU 344
Exemple d’utilisation de la méthode du simplexe
.
ITÉRATION 1
Étape 1: sélection de la variable entrante
Min (–4, –5, –9, –11) = –11 choix de x4
. Étape 1: sélection de la –ariable sortante
0 1 2 3 4 5 6 7
15 / 1 = 15
x0 = 0 –4 –5 –9 –11 0 0 0
120 / 2 = 60 x5 = 15 1 1 1 1 1 0 0
100 / 15 minimum x
= 6,66 120 7 5 3 2 0 1 0
6=
x4 = 6,66 et x7 =0 (x7 variable sortante) x7 = 100 3 5 10 15 0 0 1
pivot = 15
0 1 2 3 4 5 6 7
x0 = 0 –4 –5 –9 –11 0 0 0
x5 = 15 1 1 1 1 1 0 0
Table des
matières
x6 = 120 7 5 3 2 0 1 0
x4 = 100 20 3 1 5 1 10 2 15 0 0 1 1 nouvelle
------- =------ --- = --- --- = --- ------ = --- ------ = 1 --- = 0 --- = 0 --- =------ ligne du
15 3 15 5 15 3 15 3 15 15 15 15 15 pivot
• Retrancher aux autres lignes du tableau la valeur prise par la variable entrante dans la
thématique
0 1 2 3 4 5 6 7
------ ( –11 ) – 4 – --- ( –11) – 5 – --- ( –11) – 9 – --- ( –11) – 11 – 1 ( –11) 0 – 0 ( –11) 0 – 0 ( –11)
x0 = 0 – 20 1 1 2 1
0 – ------ ( –11 )
3 5 3 3 =0 =0 =0 15
= 220 ⁄ 3 = –9 ⁄ 5 = –4 ⁄ 3 = –5 ⁄ 3 = 11 ⁄ 15
x5 = 15 – 20 1
1 – --- ⋅ 1 1 2 1–1⋅1 1–0⋅1 0–0⋅1 1
------ ⋅ 1 1 – --- ⋅ 1 1 – --- ⋅ 1 0 – ------ ⋅ 1
3 5 3 3= 1 ⁄ 3 =1 15
= 25 ⁄ 3 = 4⁄5 = 2⁄3 =0 =0 = 1 ⁄ 25
x6 = 120 – 20 1 1 2 2–1⋅2 0–0⋅2 1–0⋅2 1
------ ⋅ 2 7 – --- ⋅ 2 5 – --- ⋅ 2 3 – --- ⋅ 2 0 – ------ ⋅ 2
3 5 3 3 = =1 15
= 320 ⁄ 3 = 33 ⁄ 5 = 13 ⁄ 3 = 5⁄3 0 =0 = –2 ⁄ 15
x4 = 1⁄3 ⁄ 1 ⁄ 15
20 ⁄ 3 1⁄5 2 3 1 0 0
ITÉRATION 2
. Étape 1: sélection de la variable entrante
Min – 9---, – 4---, – 5---, 11
- = – 9---
5 5 3 ----- choix de x1
. 15 5
Étape 2: sélection de la variable sortante
x0 = 220/3
0
–9/5
1
–4/3
2
–5/3
3 4
0
5
0
6
0 11/15
7
. pivot = 4/5
Étape 3: changement de base
.
Diviser la ligne du pivot par le pivot
0 1 2 3 4 5 6 7
x0 = 220/3 -9/5 -4/3 -5/3 0 0 0 11/5
x1 = 25 4 125 4 4 2 4 5 1 4 5 4 4 5 4 1 4 1 nouvelle
------ ⁄ --- = --------- --- ⁄ --- = 1 --- ⁄ --- = --- --- ⁄ --- = ------ 0 ⁄ --- = 0 1 ⁄ --- = --- 0 ⁄ --- = 0 –------ ⁄ --- =–------ ligne du
3 5 12 5 5 3 5 6 3 5 12 5 5 4 5 15 5 12 pivot
x6 = 320/3 33/5 13/3 5/3 0 0 1 -2/15
x4 = 20/3 1/5 1/3 2/3 1 0 0 1/15
• Retrancher aux autres lignes du tableau la valeur prise par la variable entrante dans la
ligne, multipliée par la nouvelle ligne du pivot (ligne 2)
- ligne 1: multiplier la ligne 2 par –9/5 et la retrancher à la ligne 1
- ligne 3: multiplier la ligne 2 par 33/5 et la retrancher à la ligne 3
- ligne 4: multiplier la ligne 2 par 1/5 et la retrancher à la ligne 4
0 1 2 3 4 5 6 7
220 125 –9 9 –9 4 5 –9 5 5 –9 0 + –0 ⋅ –-----9- 5 –9 –9 11 –1 –9
- – --------- ⋅------
x 0 = -------- – --- + –1 ⋅ ------ – --- + – --- ⋅------ --- – ------ ⋅------ 0 + – --- ⋅ ------ 0 + –0 ⋅ ------ ------ + – ------ ⋅ ------
3 12 5 5 5 3 6 5 3 12 5 5 4 5 5 15 12 5
= 1105 ⁄ 12 =0 = 1⁄6 = –11 ⁄ 12 =0 = 9⁄4 =0 = 7 ⁄ 12
x1 = 125 ⁄ 12 1 5⁄6 5 ⁄ 12 0 5⁄4 0 –1 ⁄ 12
320 125 33 33 33 13 5 33 5 5 33 33 5 33 33 –1 33
x6 = --------- – --------- ⋅ ------ ------ – 1 ⋅ ------ ------ – --- ⋅ ------ --- – ------ ⋅ ------ 0 – 0 ⋅ ------ 0 – --- ⋅ ------ 1 – 0 ⋅ ------ –-----2- – -----
- ⋅ ------
3 12 5 5 5 3 6 5 3 12 5 5 4 5 5 15 12 5
= 455 ⁄ 12 =0 = –7 ⁄ 6 = –13 ⁄ 12 =0 = –33 ⁄ 4 =1 = 5 ⁄ 12
20 125 1 1 1 1 5 1 5 1 1 5 1 1 1 –1 1
x4 = ------ – --------- ⋅ --- --- – 1 ⋅ --- --- – --- ⋅ --- 1 – ------ ⋅ --- 1 – 0 ⋅ --- 0 – --- ⋅ --- 0 – 0 ⋅ --- ------– ------ ⋅ ---
3 12 5 5 5 3 6 5 12 5 5 4 5 5 15 12 5
= 55 ⁄ 12 =0 = 1⁄6 = 7 ⁄ 12 =1 = –1 ⁄ 4 =0 = 1 ⁄ 12
0 1 2 3 4 5 6 7
x0 = 1105/12 0 1/6 –11/12 0 9/4 0 7/12
x1 = 125/12 1 5/6 5/12 0 5/4 0 –1/12
x6 = 455/12 0 -7/6 –13/12 0 –33/4 1 5/12
x4 = 55/12 0 1/6 7/12 1 –1/4 0 1/12
Chapitre XVI - Programmation linéaire 1125
ITÉRATION 3
. Étape 1: sélection de la variable entrante
Min ---, – ------, --- ,------ = – ------
1 11 9 7 11 choix de x3
. 6 12 4 12 12
Étape 2: sélection de la variable sortante
0
x0 = 1105/12
1
0
2
1/6 -11/12
3 4
0 9/4
5 6
0 7/12
7
x3 = 55 ⁄ 7 et x4 = 0 ( x4 variable sortante)
pivot = 7/12
.. Étape 3 : changement de base
Diviser la ligne du pivot par le pivot
0 1 2 3 4 5 6 7
x0 = 1105/12 0 1/6 –11/12 0 9/4 0 7/12
x1 = 125/12 1 5/6 5/12 0 5/4 0 –1/12
x6 = 455/12 0 -7/6 –13/12 0 -33/4 1 5/12
55 7 55 1 7 7 7 7 12 7 7 1 7 nouvelle
x3 = ------ ⁄ ------ = ------ 0 ⁄ -----
7 2 1 –3 1
- = 0 --- ⁄ ------ = --- ------ ⁄ ------ = 1 1 ⁄ ------ = ------ – --- ⁄ ------ = ------ 0 ⁄ ------ = 0 –------ ⁄ ------ = --- ligne du
12 12 7 12 6 12 7 12 12 12 7 4 12 7 12 12 12 7 pivot
• Retrancher aux autres lignes du tableau la valeur prise par la variable entrante dans la
ligne, multipliée par la nouvelle ligne du pivot (ligne 4)
- ligne 1: multiplier la ligne 4 par –11/12 et la retrancher à la ligne 1
- ligne 2: multiplier la ligne 4 par 5/12 et la retrancher à la ligne 2
- ligne 3: multiplier la ligne 4 par –13/12 et la retrancher à la ligne 3
0 1 2 3 4 5 6 7
1105 55 –11 –11 1 2 –11 -------- –11 –11 12 –11 9 –3 –11 –11 7 1 –11
-– ------ ⋅ --------- 0 + –0 ⋅ --------
x0 = ----------- 12 --- – --- ⋅ --------- - –1 ⋅ --------- 0 + – ------ ⋅ --------- --- – ------ ⋅ --------- 0 + –0 ⋅ ---------
- ------ + –--- ⋅ ---------
12 7 12 6 7 12 12 12 7 12 4 7 12 12 12 7 12
= 695 ⁄ 7 =0 = 3⁄7 =0 = 11 ⁄ 7 = –13 ⁄ 7 =0 = 5⁄7
125 55 5 5 5 2 5 ----- 5 5 12 5 5 –3 5 5 1 1 5
x1 = -------- - – ------ ⋅ ------ 1 – 0 ⋅ ------ --- – --- ⋅ ------ - – 1 ⋅ ------ 0 – ------ ⋅ ------ --- – ------ ⋅ ------ 0 – 0 ⋅ ------ – ------ – --- ⋅ ------
12 7 12 12 6 7 12 12 12 7 12 4 7 12 12 12 7 12
= 50 ⁄ 7 =1 = 5⁄7 =0 = –5 ⁄ 12 = 10 ⁄ 7 =0 = –1 ⁄ 7
455 55 –13 – 13 7 2 –13 13 12 – 13 33 –3 –13 5 1 –13
x6 = --------
– 13 – 13
-– ------ ⋅ --------- 0 – 0 ⋅ --------- – --- – --- ⋅ --------- –------– 1 ⋅ --------- 0 – ------ ⋅ --------- –------ – ------ ⋅ --------- 1 – 0 ⋅ --------
- ------ – --- ⋅ ---------
12 7 12 12 6 7 12 12 12 7 12 4 7 12 12 12 7 12
= 325 ⁄ 7 =0 = –6 ⁄ 7 =0 = –13 ⁄ 7 = –61 ⁄ 7 =1 = 4⁄7
x3 = 55/7 0 2/7 1 12/7 -3/7 0 1/7
0 1 2 3 4 5 6 7
x0 = 695/7 0 3/7 0 11/7 13/7 0 5/7
x1 = 50/7 1 5/7 0 –5/12 10/7 0 –1/7
x6 = 325/7 0 –6/7 0 13/7 –61/7 1 4/7
x3 = 55/7 0 2/7 1 12/7 –3/7 0 1/7
1126 Gestion de la production et des flux
Table des
matières
Reste posé le problème de la détermination d’une solution initiale car x6
s’analysant comme un « surplus » et non comme un « reliquat », on ne peut lui
donner de valeur positive que lorsque certaines variables canoniques sont déjà
positives, ce qui n’est habituellement pas le cas lorsque l’on amorce un calcul de
thématique
simplexe. Pour amorcer le calcul itératif, il faudra donc, là encore, créer une
Index
variable artificielle.
Illustrons par un exemple numérique simple l’utilisation des variables artifi-
cielles et leur élimination dans le but d’obtenir une solution initiale. L’élimination
préalable de ces variables est assurée par l’introduction de ces variables artifi-
cielles dans la fonction-objectif avec une très forte pénalité qui aura pour effet de
commencer par «chasser» ces variables artificielles dans l’utilisation de l’algo-
rithme du simplexe (rappelons que les variables d’écart n’interviennent pas dans
la fonction-objectif, ou plus exactement interviennent avec des coefficients nuls).
L’exemple numérique retenu est le suivant, sous sa forme canonique:
- maximiser x0 , avec x0 = 2 x1 + 5 x2 + 4 x3
- sous contraintes:
x1 + 2 x2 + x3 = 10
4 x1 + x2 + x3 ≥ 15;
Ce problème devient, sous sa forme standard, en associant une forte pénalité M
aux variables artificielles dans la fonction-objectif (cette pénalité pourrait être, par
exemple, de – 1000 dans l’exemple numérique retenu, compte tenu des valeurs
1. À moins que le coefficient de l’une des variables canoniques de cette contrainte ne soit égal à 1, auquel cas cette
variable est retenue dans la solution initiale (et, bien sûr, elle ne peut l’être qu’au titre d’une seule contrainte).
Chapitre XVI - Programmation linéaire 1127
x1 x2 x3 x4 x5 y1 y2
25M 5M–2 3M–5 2M–4 –M 0 0
y1 10 1 2 1 0 1 0
y2 4 1 1 1 –1 0 1
Étant donné que la pénalité M est très grande et négative (la fonction-objectif
étant à maximiser; elle aurait été positive si la fonction-objectif avait été à mini-
miser), la variable entrante de la première itération est x1 . La variable sortante est
alors y2 et le pivot est 4. Les tableaux du simplexe des deux premières itérations
sont donnés dans le tableau 346 de la page 1128.
L’élimination des variables artificielles conduit donc à la solution réalisable x1
= 20/7 et x2 = 25/7, les autres variables étant nulles. Cette solution n’est pas opti-
male puisque x3 a une dérivée partielle négative (– 11/7). Il faut donc poursuivre
les itérations du simplexe. La pénalité M étant très grande, il est inutile de pour-
suivre les calculs dans les colonnes correspondant aux variables artificielles. On
partira donc du tableau 347 de la page 1128 (dans lequel il apparaît qu’il faut pour-
suivre les itérations en introduisant x3 ):
1128 Gestion de la production et des flux
TABLEAU 346
Tableau du simplexe à la fin des deux premières itérations
x1 x2 x3 x4 y1 y2
25 M 3M – 5 2M – 4 –M 0
PREMIÈRE ITÉRATION
1
–( 5 M – 2 )– ---
15 1 1 1 –( 5 M – 2 ) ---
–( 5 M – 2 ) ------ –( 5 M – 2 ) --- –( 5 M – 2 ) --- 4
4 0 4 4 4 0
5 M 15 7 M 18 3M 7 M 1 5M 1
= -------- + ------ = -------- – ------ = -------- – --- = ---- – --- = – -------- + ---
4 2 4 4 4 2 4 2 4 2
0 – 1 ⋅ – ---
15 1 1 1 1
10 – 1 ⋅ ------ 2 – 1 ⋅ --- 1 – 1 ⋅ --- 0 – 1 ⋅ ---
4 4 4 4 4
y1 0 1
25 7 3 1 1
= ------ = --- = --- = --- = – ---
4 4 4 4 4
x1 15 1 1 1 1
------ 1 --- --- – --- 0 ---
4 4 4 4 4
5 M 15 3M 7 M 1 5M 1
-------- + ------ -------- – --- ---- – --- 0 – -------- – ---
4 2 4 2 4 2 4 2
DEUXIÈME ITÉRATION
7 M 18 4
–-------- – ------ --- –-------- – ------ --- 4 4 7
7 M 18 25 7 M 18 3 7 M 18 1 – -------- – ------ ---
– -------- – ------ – ---
7M 18 1
–-------- – ------ ------ 0 0
4 4 7 4 4 7 4 4 7 4 4 7
18
165 11 1 = – M + ------ 1
= --------- = – ------ = --- 7 = – M – ---
7 7 7 7
x2 25 3 1 4 1
------ 0 1 --- --- --- – ---
7 7 7 7 7
Table des
matières
15 1 25
------ – --- ⋅ ------
1 1 1
– --- – --- ⋅ --- 1 1 1
--- – --- ⋅ – ---
4 4 7 1 1 3 1 4 4 7 1 4 1 4 4 7
x1 1 0 --- – --- ⋅ --- = --- 0 – --- ⋅ --- = – ---
20 4 4 7 7 2 4 7 7 2
= ------ = – --- = ---
7 7 7
thématique
TABLEAU 347
Index
Tableau du simplexe au début de la troisième itération
x1 x2 x3 x4
165/7 0 0 –11/7 1/7
x2 25/7 0 1 3/7 1/7
x1 20/7 1 0 1/7 -2/7
1. Voir, par exemple, Wagner (1975, [435]), p. 150-153, où l’algorithme modifié est présenté et illustré d’un
exemple numérique.
Chapitre XVI - Programmation linéaire 1129
une feuille de calcul les paramètres (aij, bi, cj) du problème, d’y ajouter des valeurs
initiales (par exemple 0) pour les variables xj du problème, de calculer dans des
cellules les valeurs prises par les premiers membres des contraintes, pour les
valeurs assignées aux xj, ainsi que la valeur x0 prise par la fonction-objectif. Le
thématique
premier écran de la figure 267, page 1130 montre la saisie effectuée pour les para-
Index
mètres (les couleurs ont été ajoutées pour vous permettre de mieux repérer la
structure du problème soumis) et le second écran est une variante du premier qui
affiche les formules des cellules calculées pour vous permettre de mieux
comprendre la façon de poser le problème.
Le lancement du solveur provoque l’affichage de la fenêtre de définition du
problème à résoudre de la figure 268. On y définit la cellule correspondant à la
fonction objectif (ici x0 mis dans la cellule B1), les cellules correspondant aux
variables xj (ici les cellules B3 à E3) et les contraintes, en commençant par celles
qui imposent aux xj d’être non négatifs (contenu de la cellule F4 devant être infé-
rieur ou égal au contenu de la cellule G4, pour la première contrainte, etc.).
Une fois le problème spécifié, il faut déclencher la résolution en appuyant sur
le boutant correspondant (cf. figure 268), ce qui provoque l’affichage de la fenêtre
de la figure 269, dans laquelle il faut sélectionner le résultat et les rapports des
résultats de l’optimisation. Ceux-ci sont reproduits dans les écrans des figures 270
à 274. On retrouve les résultats du tableau 343 de la page 1110. Pour aider à faire
1. Ces contraintes s’interprètent, dans l’exemple de certains problèmes de transport, comme l’exigence que les flux
partant de i aient une destination j, que ceux arrivant en j aient une origine i et que la somme des flux de départ
soit égale à celle des flux d’arrivée.
2. Voir, par exemple, Wagner (1975, [435]), p. 186-195.
1130 Gestion de la production et des flux
FIGURE 267
Initialisation de la procédure
Table des
matières
FIGURE 268
Définition du problème (paramètres du solveur)
thématique
Index
le rapprochement, les valeurs fractionnaires des résultats sont ajoutées à ces copies
d’écran. Le résultat de l’optimisation donne les valeurs optimales des xj et la
comparaison entre les premiers et seconds membres des contraintes montre que
seule la seconde contrainte n’est pas saturée.
Chapitre XVI - Programmation linéaire 1131
FIGURE 269
Sélection des affichages de résultats
FIGURE 270
Résultat de l’optimisation
4 4 4
∑ a1 j x j ∑ a2 j x j ∑ a3 j x j
J=1 J=1 J=1
Le premier rapport (figure 271, page 1132) ne fournit comme information addi-
tionnelle que les valeurs prises par les variables d’écart des contraintes non
saturées (ce qui présente un intérêt limité).
Le deuxième rapport (figure 272, page 1133) est plus intéressant car il fournit
les valeurs optimales des variables duales. La terminologie employée est un peu
différente de celle habituellement utilisée et retenue dans ce chapitre.
Le troisième rapport (figure 273, page 1133) n’amène pas d’information
nouvelle puisqu’il se contente d’indiquer que l’on ne peut pas augmenter la valeur
optimale d’une variable de la base sans dégrader l’optimum. La seconde informa-
tion fournie est quelque peu trompeuse: elle fournit la valeur de x0 lorsque l’une
des variables de la base est rendue nulle mais, implicitement sans modifier les
valeurs prises par les autres variables. Prenons l’exemple de x1 ; si l’on rend nulle
sa valeur, la poursuite des calculs dans le tableau du simplexe montre que les
ressources que ce choix dégage permettent non seulement d’introduire x2 (=10)
mais encore conduit à diminuer la valeur prise par x3 (qui tombe alors à 5) pour
1132 Gestion de la production et des flux
FIGURE 271
Premier rapport sur la solution optimale trouvée
695/7
x1* = 50 ⁄ 7
x2*
x3* = 55 ⁄ 7
x4*
4
4 4 Non saturée
∑ a1 j x j ∑ a2 j x j ∑ a3 j x j
J=1
J=1 J=1
x6* = 325 ⁄ 7
Saturée
Saturée
Table des
matières
thématique
Index
éviter de trop dégrader l’optimum, qui tombe à 95 et non 70,72 comme pourrait le
laisser comprendre ce rapport.
SECTION II GÉNÉRALISATION
II-1 Un nouveau contexte pour la programmation linéaire
Ce sont des problèmes de production qui sont à l’origine de la programmation
linéaire, il y a une cinquantaine d’années1 mais, jusqu’à une époque récente, sa
mise en œuvre pour résoudre des problèmes d’une certaine complexité ne pouvait
être que le fait de grandes entreprises en raison de la puissance de calcul requise
et des techniques utilisées pour définir le problème à résoudre par le programme
informatique. Ce contexte a bien changé.
Il n’est pas besoin d’insister sur le fait que l’évolution de la micro-informatique
se caractérise par une croissance importante et continue des puissances de traite-
ment et des capacités de stockage, par une baisse constante des coûts des matériels
et logiciels et par une réelle amélioration des facilités d’utilisation de ces moyens
informatiques, les mettant à portée de tous. Toutes les entreprises disposent main-
FIGURE 272
Deuxième rapport sur la solution optimale trouvée
x1* = 50 ⁄ 7
y1* – y2* = 3 ⁄ 7
x2*
y3*
x4*
4
∑ a3 j x j – y4* = 11 ⁄ 7
Prix-fantômes
J=1
x3* = 55 ⁄ 7
y5* = 13 ⁄ 7
y6* = 0
y7* = 5 ⁄ 7
FIGURE 273
Table des
matières
x3* = 55 ⁄ 7
x1* = 50 ⁄ 7
x4*
x2*
55 55
4 × 0 + 5 × 0 + 9 × ------ + 11 × 0 4 × ------ + 5 × 0 + 9 × 0 + 11 × 0
7 7
des cartes perforées pour résoudre des problèmes de structure stable. La descrip-
tion de ces problèmes s’effectue alors par un jeu de données décrivant simultané-
ment la structure du programme linéaire (variables, contraintes et fonction-
objectif) et les valeurs de paramètres retenues par un ensemble de triplets du type
«numéro de ligne – numéro de colonne – valeur du coefficient». Cette approche
présente deux inconvénients. Tout d’abord, les risques d’erreur dans le repérage
des données dans la matrice sont grands, en particulier lorsque les variables du
problème comportent plusieurs indices. Ensuite, et surtout, une transformation du
problème aussi marginale que la modification de la borne d’un indice peut
conduire à une réécriture complète des données du programme. Cette approche est
donc fortement consommatrice de temps, ce qui en limite l’intérêt.
Une nouvelle approche, apparue à la fin des années quatre-vingt1, résout ces
problèmes de manière très efficace en s’appuyant sur une séparation claire et nette
entre le modèle et les données utilisées, ce qui permet une mise au point très rapide
et une généralisation immédiate de la formulation obtenue à une classe de
problèmes. Cette nouvelle génération d’outils, connue sous le nom de modeleurs,
est en fait un programme de définition automatique des triplets s’appuyant sur une
analyse du modèle et des données et qu’un solveur (c’est-à-dire un programme de
résolution du problème d’optimisation posé) choisi pour résoudre le problème
utilisera. Les modeleurs s’appuient des langages non procéduraux (ou déclaratifs),
proches de la notation mathématique conventionnelle, permettant une description
concise du problème.
Table des
matières
- Le modèle consiste en une définition littérale préalable des indices, des varia-
bles et des paramètres puis par une description des contraintes et de la fonc-
tion-objectif, sous une forme traduisant, avec la même concision, ces
relations algébriques. Cette description utilise non seulement des variables
indicées, des coefficients, des opérateurs «+», «–», « x », «/» mais aussi les
thématique
opérateurs Σ et Π et les relations peuvent même être soumises à certaines
Index
conditions logiques. La compréhension de ce que fait le modèle est immé-
diate, contrairement aux approches antérieures qui obligeaient à un
décryptage fastidieux; il s’ensuit que sa maintenabilité, sa communicabilité
et sa portabilité sont fortes.
- La description des données commence par la liste des occurrences de chaque
indice, puis pour chaque coefficient (indicé), par la liste des valeurs numéri-
ques.
Dans ces conditions, la maintenance du programme linéaire est aisée.
- L’adjonction (ou la suppression) d’une contrainte se traduit par l’adjonction
(ou la suppression) d’une ligne du modèle et l’adjonction (ou la suppression)
1. Une présentation de cette approche par modeleur peut être trouvée dans Murphy, Stohr & Asthana (1992, [312]),
Rosenthal (1996, [366]), Jacquet-Lagrèze (1997, [241]) et Giard (1997, [184]). La viabilité technique et écono-
mique de cette approche est attestée par de très nombreuses réalisations (par exemple, deux importantes appli-
cations industrielles de ces approches ont été réalisées à l’IAE de Paris dans le cadre de contrats de recherche;
elles sont décrites dans Giard, Triomphe, André (1997, [201]), qui présente un exemple détaillé d’une utilisation
d’un modeleur intégré dans un SIAD, et dans Giard & Triomphe (1996, [199]). Plusieurs modeleurs sont dispo-
nibles sur le marché. Parmi les plus connus, on peut signaler GAMS (voir Brooke, Kendrick & Meeraus, 1988,
[68]) et XPRESS-MP. Plusieurs exemples de l’ouvrage de Jacquet-Lagrèze (1997, [241]) illustrent l’utilisation
de XPRESS-MP. Il comporte en outre une liste des principaux modeleurs et comporte les références bibliogra-
phiques de base.
Chapitre XVI - Programmation linéaire 1135
Table des
matières
TABLEAU 348
Relations entre la contrainte, z et δ
δ=1 δ=0
thématique
Index
z ∈ E1 Contrainte satisfaite Contrainte satisfaite
z ∈ E2 Contrainte non satisfaite Contrainte satisfaite
1. E1 et E2 sont complémentaires soit dans l’ensemble des réels, soit dans l’ensemble des réels positifs ou nuls (cas
du tableau 350, page 1137).
2. Pour qu’il en soit autrement, il faudrait que la contrainte ne puisse être satisfaite simultanément dans deux combi-
naisons situées dans l’une des diagonales du tableau. Il faut ajouter que, dans de nombreux problèmes, une seule
relation suffit. Par exemple, l’examen du tableau 350 montre que δ = 1 si z > 0 et que si z = 0, δ peut prendre
indifféremment les valeurs 0 ou 1; si le fait que δ soit positif entraîne, directement ou non, une dégradation de
la valeur de la fonction-objectif, δ aura alors «tendance» à rester nul et une seule contrainte sera suffisante.
3. Le cas d’ensembles E1 et E2 disjoints sera évoqué en note de la page 1140.
Chapitre XVI - Programmation linéaire 1137
TABLEAU 350
Création de contraintes permettant d’associer la variable indicatrice δ à la
proposition «z > 0 ⇔ δ = 1» (avec z ≥ 0)
La contrainte C1 La contrainte C2 Les contraintes C1 et C2 sont
«z ≤ Mδ» est «z ≥ mδ» est
thématique
simultanément
Index
Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0
Conclusions Si z = 0 Si z > 0
1. M est une constante positive dont la valeur est supérieure à toutes celles que peut prendre z; d’un point de vue
opérationnel, il est conseillé (voir Williams, [444], p. 38) de ne pas «surdimensionner» M, dans la mesure où il
est numériquement préférable de ne pas avoir de fortes variations des coefficients de la fonction-objectif.
1138 Gestion de la production et des flux
TABLEAU 351
Création de contraintes permettant d’associer la variable indicatrice δ à la
proposition «z ≤ 0 ⇔ δ = 1» (z quelconque)
La contrainte C3 La contrainte C4 Les contraintes C3 et C4 sont
«z ≤ M (1 – δ)» est «z ≥ mδ + ε (1− δ)» est simultanément
Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0
Conclusions (ou z ≥ ε) Si z ≤ 0
TABLEAU 352
†
Création de contraintes permettant d’associer la variable indicatrice δ à la
proposition «z ≥ 0 ⇔ δ = 1» (z quelconque)
Table des
matières
La contrainte C5 La contrainte C6 Les contraintes C5 et C6 sont
«z ≤ Mδ + ε (δ – 1)» est «z ≥ m (1 – δ)» est simultanément
Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0
Conclusions (ou z ≤ – ε) Si z ≥ 0
thématique
Index
Si z < 0
la décision élémentaire i est prise auquel cas xi est une variable de commande (cf.
page 1135), soit que la contrainte élémentaire i est satisfaite, on dira, pour plus de
généralité, que la proposition Pi est vraie. Dans ces conditions, six jeux de règles
assez évidentes peuvent être énoncés1. Les deux premiers portent sur la véracité
d’un sous-ensemble de propositions prises dans un ensemble; elles permettent,
1. L’appel à la logique prédicative peut, bien sûr, s’avérer judicieux pour traiter des cas plus complexes que ceux
évoqués ici (voir le chapitre IX de l’ouvrage de H. P. Williams, [444]).
Chapitre XVI - Programmation linéaire 1139
TABLEAU 353
†
Création de contraintes permettant d’associer la variable indicatrice δ à la
proposition «δ = 0 ⇒ z ≠ 0»‡ (z quelconque)
La contrainte C7 La contrainte C8 Conséquences de la prise en compte
«z ≤ Mδ1 + ε (δ1−1)» «z ≥ mδ2 + ε (1−δ2)» simultanée des contraintes C7 et C6
est est
Si δ1 = 1 Si δ1 = 0 Si δ2 = 1 Si δ2 = 0
• δ1 = 0 et δ2 = 1 ⇒ z < 0
Si z < 0 Si z = 0 Si z > 0
- Règles 2: «parmi les propositions P1, …, Pn, l’une d’entre elles, et une seule,
1. Cette proposition peut aussi s’énoncer sous la forme «P1 est vraie» ou «P2 est vraie» ou… «Pn est vraie»; dans
ce cas, on est en présence de ce que l’on appelle, en logique, un ou exclusif.
1140 Gestion de la production et des flux
TABLEAU 354
Création de contraintes permettant d’associer la variable indicatrice δ aux
propositions « δ = 0 ⇒ z = 0»† et «z ≠ 0 ⇒ δ = 1»‡ (z quelconque)
La contrainte C7 La contrainte C8 Conséquences de la prise en compte
«z ≤ Mδ» est «z ≥ mδ» est simultanée des contraintes C7 et C6
Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0 Si δ = 1 Si δ = 0
Conclusions Si z < 0 Si z = 0 Si z > 0
Table des
matières
‡. Attention, la proposition réciproque n’est pas vraie car (voir dernière colonne du tableau) car on peut avoir δ = 1 aussi bien avec z = 0
qu’avec z ≠ 0.
n
est nécessairement vraie» se traduit par la condition : ∑ xi = 1 . Si «parmi
1
thématique
i=1
les propositions P1, …, Pn, exactement k propositions (k ≤ n) doivent être
Index
vraies», il suffit de remplacer 1 par k dans le second membre de la contrainte;
si k = n, on retrouve une généralisation de la règle 4 ci-après.
- Règles 3: «si la proposition P1 est vraie, alors la proposition P2 doit être
vraie» se traduit par la condition: x1 ≤ x2 qui force x2 à prendre la valeur 1 si
x1 vaut 1; ceci n’empêche pas x2 à prendre la valeur 1 si x1 vaut 0, c’est-à-dire
que la proposition P2 peut être vraie alors que la proposition P1 est fausse. Si,
en outre, on a « P2 vrai » ⇒ « P3 vrai », il faudra ajouter x2 ≤ x3 ; la géné-
ralisation de ce raisonnement à une causalité en cascade est immédiate.
- Règle 4: «si la proposition P1 est vraie, alors la proposition P2 doit être vraie
et, réciproquement, si la proposition P2 est vraie, alors la proposition P1 doit
être vraie» se traduit par la condition: x1 = x2 qui oblige les deux propositions
à être simultanément vraies ou simultanément fausses. La généralisation à n
propositions devant être toutes simultanément vérifiées ou simultanément
non vérifiées se traduit par les n – 1 contraintes suivantes: x1 = x2 ; x2 = x3 ;
…; xn–1 = xn.
1. Un cas particulier de deux contraintes disjonctives est celui se traduisant par le fait que l’on ait soit z ≥ A, soit
z ≤ B, avec B < A. Dans ce cas, on introduit la variable binaire δ, valant 1 seulement si la première des deux
contraintes est satisfaite et 0 seulement dans le cas contraire, et les deux contraintes suivantes, où M est, comme
précédemment, une constante positive de valeur très élevée: z ≥ A – ( 1 – δ )M et z ≤ B + δM .
Chapitre XVI - Programmation linéaire 1141
1. En appliquant la contrainte C1 du tableau 350, page 1137, avec M = 2. On peut ajouter que l’on est en présence
d’un ou inclusif, lequel n’exclut pas la réalisation simultanée des propositions (contrairement au «ou exclusif»).
2. Il s’agit d’une utilisation de la contrainte C1 du tableau 350, page 1137, avec M = n.
n n n
3. Certains problèmes nécessitent l’usage de fonctions-objectifs du type ∑ ∑ aij xi xi' + ∑ bi xi . Le lecteur est
i = 1 i' = 1 i=1
invité à se reporter à l’ouvrage de Jacquet-Lagrèze (1997, [241]), p. 33 et suivantes.
1142 Gestion de la production et des flux
Table des
matières
utilisée qui, dans cet exemple, n’est ni concave (ce qui implique que le coût moyen
de production ne croisse jamais lorsque x croît), ni convexe (ce qui implique que
le coût moyen de production ne décroisse jamais lorsque x croît). Cette géné-
ralisation permet, notamment, de traiter le cas des rabais uniformes et rabais
thématique
progressifs en approvisionnement externe (figure 275, page 1143).
Index
FIGURE 274
Fonction de coût total quelconque
cj4
cj3
Kj4
Fonction du coût total cj2
Kj2
(ni concave ni convexe) Kj3 cj1 m Kj
Kj1
y j = ∑ di ⋅ xij = ∑ y jh
Mj0 = 0 Mj1 Mj2 Mj3 Mj4 i=1 h=1
FIGURE 275
Fonction de coût total associée à un rabais progressif ou à un rabais uniforme
K3
K2
K1 = 0 K1 = K2 = K3 = 0
M0 = 0 M1 M2 x M0 = 0M1 M2 x
M j1 z j2 ≤ y j2 < M j2 z j2
M j2 z j3 ≤ y j3 < M j3 z j3
M j3 z j4 ≤ y j4 < M j4 z j4
z j1 + z j2 + z j3 + z j4 = 1
Table des
matières
tranches non retenues (lorsque yk = 0, les deux bornes sont nulles, ce qui oblige la
Index
1. Les variables étant non négatives, la première contrainte double se réduit en réalité à x1 ≤ M1y1 ; la formulation
retenue a pour seul avantage de permettre la généralisation du raisonnement; il s’ensuit qu’après développement
dans cet exemple, il y a 8 contraintes.
1144 Gestion de la production et des flux
FIGURE 276
Fonction de coût total concave
K2 c3
K1 c2
c1
M1 M2 M3
transposition de ce qui vient d’être dit au cas de la borne inférieure est immé-
diate.
La généralisation du raisonnement à un nombre quelconque de plages de
valeurs est immédiate1 et conduit, dans le cas général, à créer un nombre de
contraintes égal à 2 x K contraintes mais il existe une formulation alternative plus
efficace numériquement lorsque le nombre de plages K est supérieur à 3,
puisqu’elle nécessite K + 1 contraintes (contre 2K – 1 contraintes) et la création
de K variables binaires additionnelles. Cette formulation s’appuie sur le fait que
toute valeur de x comprise entre Mk–1 et Mk peut encore s’écrire comme une
combinaison linéaire de ces bornes, c’est-à-dire: αk–1Mk–1 + αkMk, avec αk–1 + αk
= 1 et qu’il en est de même pour la fonction de coût qui, pour toute valeur de x
Table des
matières
comprise entre Mk–1 et Mk peut encore s’écrire αk–1Wk–1 + αkWk, où Wk est le coût
total pour la valeur de x prise à la borne k considérée; on remplace dans la formu-
lation les K variables xk, par K + 1 variables αk ; dans ces conditions, dans le reste
K
thématique
du problème, la production x est remplacée par ∑ αk Hk (avec Hk = Mk + Mk + 1)
Index
k=0
et, pour obliger à n’avoir au plus que deux valeurs non nulles de αk, de surcroît
pour deux bornes consécutives, il faut introduire K variables binaires βk, avec
K
∑ βk = 1 et K + 1 contraintes α0 ≤ β1 ; α1 ≤ β1 + β2 ; α2 ≤ β2 + β3 ; αk ≤ βk
k=1
+ βk+1 ; αK–1 ≤ βK–1 + βK ; αK ≤ βK.
Il faut ajouter que si la fonction-objectif consiste à maximiser une marge, au
lieu de minimiser un coût, l’utilisation de la technique proposée ici ne se justifie
pas, dès lors que la marge unitaire est une fonction non croissante (c’est-à-dire
concave) de la quantité produite.
En effet, la production totale est la somme des productions sur chacune des tran-
ches, c’est-à-dire x1 + x2 + x3, dans notre exemple (et, d’une manière générale,
∑ xi ), avec une contrainte de production pour chaque tranche: x1 < M1 ; x2 < M2 –
i
1. La fonction de coûts devient: z = ∑ ( ci xi + K i yi ) +…, sous contraintes: ∑ yi ≤ 1 et, pour chaque plage de valeurs i, délimitée par Mi-1
i i
et Mi (avec M0 = 0): M i – 1 y i ≤ x i ≤ M i y i .
Chapitre XVI - Programmation linéaire 1145
M1 ; x3 < M3 – M2. La marge totale est: c1x1 + c2x2 + c3x3 (et, d’une manière géné-
rale, ∑ ci xi ). La fonction-objectif forcera donc l’utilisation prioritaire de la
i
production la plus rentable, ce qui fait qu’il n’y a pas besoin de variable dichoto-
mique comme dans le cas d’une fonction-objectif de coût quelconque.
Table des
matières
thématique
Index