Optimisation de Menu par Programmation Linéaire
Optimisation de Menu par Programmation Linéaire
Cours d’optimisation
2
I: Introduction
Ali se demande comment gérer au mieux ses dépenses alimentaires tout en respectant ses
besoins quotidiens en énergie (2000 kcal), protéines (55g) et calcium (800 mg). Il sélectionne
six produits qui semblent être des sources nutritionnelles bon marché.
Maintenant, Ali se demande comment composer ses menus? Il décide donc d’imposer les
limites suivantes sur le nombre de services par jour pour chacun des aliments:
Céréales: au plus 4 services par jour,
Poulet : au plus 3 services par jour,
Oeufs : au plus 2 services par jour,
Lait entier : au plus 8 services par jour,
Tarte aux pommes : au plus 2 services par jour,
Poissons et haricots : au plus 2 services par jour.
4
Nous proposons de formaliser ce probléme comme celui de la recherche d’un menu composé
de :
x1 services de Céréales,
x2 services de poulet,
x3 services d’oeufs,
x4 services de lait entier,
x5 services de tarte aux pommes,
x6 services de poissons et haricots.
Afin de respecter les limites imposées, le menu doit satisfaire :
0 x1 4
0 x2 3
0 x3 2
0 x4 8
0 x5 2
0 x6 2.
Le menu doit satisfaire aussi les contraintes sur les besoins en:
Energie:
110x1 + 205x2 + 160x3 + 160x4 + 420x5 + 260x6 2000
5
Protéines:
4x1 + 32x2 + 13x3 + 8x4 + 4x5 + 14x6 55
Calcium:
2x1 + 12x2 + 54x3 + 285x4 + 22x5 + 80x6 800.
Pour composer le menu le moins cher, Ali cherche les valeurs de x1 , x2 , ..., x6 qui satisfont les
inégalitès précédentes et qui rendent la valeur du coût très petite que possible. La formulation
mathématique de ce problème de régime est donc :
Minimiser 3x1 + 24x2 + 13x3 + 9x4 + 20x5 + 19x6
Sous les contraintes :
0 x1 4
0 x2 3
0 x3 2
0 x4 8
0 x5 2 (0.1)
0 x6 2.
110x1 + 205x2 + 160x3 + 160x4 + 420x5 + 260x6 2000
4x1 + 32x2 + 13x3 + 8x4 + 4x5 + 14x6 55
2x1 + 12x2 + 54x3 + 285x4 + 22x5 + 80x6 800
Les problèmes comme celui du régime sont appelés problèmes de programmation linéaire
ou PL. La programmation linéaire est la branche des mathématiques appliquées qui traite ces
problèmes.
6
Exemple de PL :
Maximiser 5x1 + 4x2 + 3x3 Sous les contraintes :
2x1 + 3x2 + x3 5
4x1 + x2 + 2x3 11
(0.2)
3x1 + 4x2 + 2x3 8
x1 , x 2 , x 3 0
Un autre problème pourrait être:
Minimiser 3x1 + x2
Sous les contraintes :
x1 + 6x2 x3 + x4 3
7x2 + 2x4 = 5
x1 + x2 + x3 = 1 (0.3)
x3 + x4 2
x2 , x 3 0
Définition1 : Soient c1 , c2 , ..., cn des nombres réels. La fonction f définie sur les variables
réelles x1 , x2 , ..., xn par :
f (x1 , x2 , ..., xn ) b
f (x1 , x2 , ..., xn ) b
sont appellées des inéquations linéaires. Les équations et inéquations linéaires sont appelées
ici des contraintes linéaires.
7
Définition 4 :
Une solution réalisable qui maximise la fonction objective d’un problème PL (sous la forme
standard) est appelée solution optimale.
La valeur associée à une solution optimale est appelée valeur optimale du problème.
Par exemple x1 = 4, x2 = 0, x3 = 0, x4 = 9/2, x5 = 2, x6 = 0 est la solution optimale de
(0.1). Ainsi la valeur optimale correspondante est 92.5.
Remarque : Attention, tous les problèmes PL n’admettent pas une solution optimale unique ;
certains problèmes peuvent avoir de nombreuses solutions optimales alors que d’autres peuvent
n’en avoir aucune. Ce dernier cas peut se produire pour des raisons radicalement opposées :
Soit A = (aij ) une matrice de rèels de taille m n, b = (b1 , ...., bm ) et c = (c1 , ..., cn ) deux
vecteurs de rèels de taille m et n respectivement. Résoudre le problème linéaire défini par
A, b, c consiste à trouver des réels x1 , x2 , ..., xn satisfaisant les m inéquations (une pour chaque
i entre 1 et m ) :
n
X
aij xj bi , Ax b
j=1
n
X
aij xj bi , Ax b
j=1
n
X
aij xj < bi , Ax < b
j=1
n
X
aij xj > bi , Ax > b
j=1
n
X
aij xj = bi , Ax = b
j=1
Exemple:
x1 + 3x2 + x3 2
2x1 + 5x2 + x3 8
(0.6)
x1 x2 + x3 5
max(2x1 + x2 x3 )
1 3 1 x1 2
2 5 1 x2 8
1 1 1 x3 5
Maximiser
n
X
cj xj
j=1
Sous conditions:
Ax b
Cx = d (0.7)
x 0
est appelé forme standard d’une PL. On peut se ramener toujours à cette forme quitte à
remplacer :
x = x+ x− avec x+ 0 et x− 0
a = b est équivalent à a b et b a
10
V. Définitions
Définition 1:
L’ensemble fx 2 Rn /Ax b, Cx = dg : l’ensemble des solutions réalisables (admissibles),
est appelé polyèdre. Cet ensemble est convexe.
Définition 2 :
Compréhension du problème.
Construction du modéle.
12
x11 , x12 , x13 , x14 , x21 , x22 , x23 , x24 , x31 , x32 x33 , x34
Toute solution à ce système d’inéquation est une solution, c’est-à-dire est une répartition
réalisable des produits stockés entre les points de vente. Parmi toutes ces solutions, nous
allons chercher les plus économiques. Supposons que cij soit le coût du transport du dépôt
13
Nous devons donc chercher à minimiser cette fonction. Nous avons donc le modèle mathématique
suivant:
xij 0
x11 + x21 + x31 10
x12 + x22 + x32 12
x13 + x23 + x33 14
x14 + x24 + x34 9
x11 + x12 + x13 + x14 40
x21 + x22 + x23 + x24 50
x31 + x32 + x33 + x34 30
min(c11 x11 + c12 x12 + ... + c34 x34 )
Nous verrons, dans les paragraphes suivants, comment résoudre un tel problème.
Ces inégalités peuvent être transformées en égalités par l’adjonction de variables dites d’écart
mesurant les excédents des facteurs. Soient x5 , x6 , x7 les variables d’écart pour les contraintes
respectives à l’équipement, la main d’ouvre et la matière première.
L’excédent en ressource d’équipement est:
x7 = 15 (x1 + x2 + x3 + x4 )
Un calcul élémentaire des marges brutes unitaires permet d’exprimer la marge brute totale
en fonction des niveaux d’activités :
11
6x1 + x2 + 7x3 + 8x4
2
Définition : Tout problème de programmation linéaire peut se mettre sous la forme suivante:
Trouver les nombres x1 , ..., xn soumis aux conditions suivantes:
xi 0
≤
a x + a12 x2 + ... + a1n xn b1
11 1
..
.
am1 x1 + am2 x2 + ... + amn xn ≤
bm
c1 x1 + ... + cn xn .
La résolution des programmes linéaires a plus de deux variables ne pourra se faire par
des méthodes géométriques. Comme la résolution des systèmes d’inéquations linéaires pose
de nombreux problèmes, nous allons nous ramener en introduisant des variables d’écart à un
système d’équations linéaires.
Afin de schématiser à l’extrême les procédures algébriques de résolution, nous allons convertir
notre programme en un tableau et mettre en évidence les propriétés de ce tableau ici d’un
programme canonique.
Dans le paragraphe suivant, nous verrons, comment à partir d’un programme linéaire quel-
conque, nous ramenons à un tableau analogue à un tableau d’un programme canonique.
Considérons un programme canonique :
xi 0
a11 x1 + a12 x2 + ... + a1n xn b1
..
.
am1 x1 + am2 x2 + ... + amn xn bm
bi 0
max(c1 x1 + ... + cn xn )
x1 x2 xn e1 e2 em
a11 a12 a1n 1 0 0 b1
a21 a22 a2n 0 1 0 b2
.. .. .. .. .. .. ..
. . . . . . .
am1 am2 amn 0 0 1 bm
c1 c2 cn 0 0 0 0
x1 = 0, , xn = 0, e1 = b1 , , e m = bm
et
c1 x1 + + cn xn = 0.
Cette solution n’est pas évidement la solution maximale. Le fait remarquable que nous venons
de décrire est tout tableau initialisé donne directement une solution au programme considéré.
Exemple
Trois machines M1 , M2 etM3 peuvent produire chacune deux types de pièces P1 et P2 . Le
temps de fabrication d’une pièce de type Pi sur la machine Mj est donné dans le tableau
suivant en heures:
M1 M2 M3
P1 3 4 4
P2 4 6 5
19
Solution
1) Le programme est le suivant :
xij 0
x11 + x12 + x13 = 6
x21 + x22 + x23 = 8
3x11 + 4x21 14
4x12 + 5x22 24
4x13 + 6x23 24
min(z = 21x + 28x + 20x + 30x + 24x + 30x )
11 21 12 22 13 23
IX. Cas où les contraintes sont des inéquations dans les deux sens ou des
équations
Supposons que l’on ait un programme du type:
xi 0
a11 x1 + a12 x2 + ... + a1n xn b1
..
.
ar1 x1 + ar2 x2 + ... + arn xn br
ar+11 x1 + ar+12 x2 + ... + ar+1n xn br+1
..
.
am1 x1 + am2 x2 + ... + amn xn bm
max(c1 x1 + ... + cn xn )
Nous introduisons les variables d’écarts positives, en les ajoutant lorsque le seconde mem-
bre est supérieur au premier et en les retranchant dans le cas contraire. Nous obtenons le
programme suivant:
xi , ej 0
a11 x1 + a12 x2 + ... + a1n xn + e1 = b1
..
.
ar1 x1 + ar2 x2 + ... + arn xn + er = br
ar+11 x1 + ar+12 x2 + ... + ar+1n xn er+1 = br+1
..
.
am1 x1 + am2 x2 + ... + amn xn em = bm
max(c1 x1 + ... + cn xn )
23
x1 x2 xn e1 er er+1 em
a11 a12 a1n 1 0 0 0 0 b1
.. .. .. .. .. .. .. ..
. . . . 0 . . . .
ar1 ar2 arn 0 0 1 0 0 br
..
ar+11 ar+12 ar+1n 0 0 0 1 . br+1
.. .. .. .. .. .. .. ..
. . . . . . 0 0 . 0 .
am1 am2 amn 0 0 0 0 1 bm
c1 c2 cn 0 0 0 0 0
Ce tableau n’est pas initialisé: En effet, nous n’avons qu’une partie des vecteurs constituant
la matrice identité. Les contraintes bi 0 nous empêchent de remplacer les vecteurs colonnes
du type
0 0
.. ..
. .
0 0
1 par des vecteurs de types 1 .
0 0
.. ..
. .
0 0
D’après le tableau précédent, il manque m-r vecteurs colonnes de la matrice identité.
Le tableau devient:
x1 x2 xn e1 er er+1 em η1 ηm−r
a11 a12 a1n 1 0 0 0 0 0 0 b1
.. .. .. .. ... .. .. .. .. ..
. . . . 0 . . . . 0 .
ar1 ar2 arn 0 0 1 0 0 0 0 br
..
ar+11 ar+12 ar+1n 0 0 0 1 . 1 0 0 br+1
.. .. .. .. .. .. .. .. .. ..
. . . . . . 0 0 . 0 . . .
am1 am2 amn 0 0 0 0 1 0 0 1 bm
c1 c2 cn 0 0 0 0 0 w w
x1 x2 xn e1 er er+1 em η1 ηm−r
a11 a12 a1n 1 0 0 0 0 0 0 b1
.. .. .. .. .. .. .. .. .. ..
. . . . 0 . . . . . 0 .
ar1 ar2 arn 0 0 1 0 0 0 0 br
..
ar+11 ar+12 ar+1n 0 0 0 1 . 1 0 0 br+1
.. .. .. .. .. .. .. .. .. ..
. . . . . . 0 0 . 0 . . .
am1 am2 amn 0 0 0 0 1 0 0 1 bm
Pm
c01 c02 c0n 0 0 0 0 0 0 0 j=r+1 wbj
Avec
c0i = ci w(ar+1i + + am1 ), 1 i n
25
Un tel tableau est initialisé. Les colonnes de référence sont ici les colonnes associées
aux variables e1 , e2 , , er , η 1 , , ηm−r . Les coefficients de la fonction économique sont, au
dessus de ces colonnes, tous égaux à 0.
Exemple: Soit à résoudre le système suivant:
x + y + 3z 15
2x + y + 5z 20
x + 2y + z 10
max(x + 3y + z)
x, y, z 0
On introduit les variables d’écart:
x + y + 3z e1 = 15
2x + y + 5z e2 = 20
x + 2y + z + e3 = 10
max(x + 3y + z)
x, y, z, e1 , e2 , e3 0
Le tableau associe est:
x y z e1 e2 e3
1 1 3 1 0 0 15
2 1 5 0 1 0 20
1 2 1 0 0 1 10
1 3 1 0 0 0
Initialisons le tableau:
x y z e1 e2 e3 η1 η2
1 1 3 1 0 0 1 0 15
2 1 5 0 1 0 0 1 20
1 2 1 0 0 1 0 0 10
1 3w 3 2w 1 8w w w 0 0 0 35w
x + 3y + z + wη1 + η2
Méthode de simplexe
On sait la solution, si elle existe, se trouve au moins sur un sommet du domaine des solu-
tions réalisables, la recherche de la solution optimale s’effectue uniquement sur ces sommets.
L’algorithme du simplexe examine comme première solution un des sommets (en général
l’origine), qui constitue la solution de base de l’algorithme, puis il se déplace de sommet
en sommet, afin d’améliorer la fonction économique à chaque étape. Après un nombre fini
d’itérations, il arrive à un sommet à partir duquel tout déplacement vers un autre sommet
n’améliore plus cette valeur. On est alors au sommet optimal.
L’algorithme du simplexe consiste à parcourir le polyèdre des points réalisables de sommet
en sommet jusqu’à ce qu’on ne puisse plus améliorer la solution. Au point de départ, la fonc-
tion objectif est nulle, et il s’agit de l’augmenter. Si certains de ses coefficients sont positifs,
il apparaît clairement qu’en augmentant l’une des variables correspondant à un coefficient
positif, on augmente cette fonction objectif. On a donc un critère d’obtention de l’optimum:
tant que la dernière ligne d’un tableau du simplexe contient au moins un coefficient positif,
la solution examinée peut être améliorée.
Remarques et définitions:
1) L’ajout des variables d’ecart dans un système de contraintes AX b permet d’obtenir
facilement une solution de départ réalisable, puisque les coefficients de ces variables constituent
une matrice unité et un ensemble de m-vecteurs unités est linéairement indépendant.
2) Considérons un système de m équations linéaires AX = b comportant n variables
(m < n).
Les n-m variables qui sont annulées sont dites des variables hors base alors que les m
variables restantes sont appelées variables de base.
Lorsque la solution de base satisfait les contraintes de non négativité, la solution est
alors appelée solution de base réalisable.
29
Les solutions de base réalisables sont la caractéristique algébrique des points extrêmes
de la région des solutions réalisables.
3) Chaque solution de base réalisable est équivalente à un point extrême. Il peut exister plus
d’une solution réalisable correspondant au même point extrême.
4) Une solution de base réalisable est dite dégénérée lorsque une ou plusieurs variables de
base prend une valeur 0.
5) Une solution de base réalisable dont les m variables de base sont positives est dite solution
de base réalisable non dégénérée.
6) Dans un programme linéaire comportant m contraintes, deux solutions de base réalisables
sont dites adjacentes si l’ensemble respectif des variables de base de chaque solution a m-1
variables de base en commun.
Principe du processus itératif
A partir d’une solution de base réalisable, on obtient une nouvelle solution de base
réalisable adjacente, meilleure ou aussi bonne, en transformant une variable hors base en une
variable de base dite variable entrante et en même temps, rendre une variable de base actuelle
en variable hors base dite variable sortante. Cette opération algébrique permet d’obtenir une
nouvelle solution réalisable.
positifs, on considère le plus grand. La colonne pivot est la colonne qui le contient. La variable
correspondante sera la variable entrante car elle ne va plus s’annuler.
Remarque: S’il existe plusieurs coefficients correspondant à cette valeur positive maximale,
on peut choisir celui que l’on veut.
Choix de la ligne pivot
La variable entrante va prendre la place d’une des variables de base, appelé variable
sortante. Il faut maintenant trouver quelle valeur maximum peut prendre cette variable
entrante afin de maximiser la fonction objectif. Pour cela, chaque coefficient de la dernière
colonne est divisé par le coefficient correspondant de la colonne pivot. Si la colonne pivot est:
a1j
a2j
a3j
..
.
anj
cj
bi
On calcule les rapports aij
pour 1 i n lorsque aij > 0. On obtient de cette façon, pour
chaque contrainte prise séparément, la valeur maximale que peut prendre la variable entrante.
bk bi
On sélectionne le plus petit rapport positif: Oncherche l’indice k tel que 0 akj aij
, en ne
considrant les i que si aij > 0.
bk
La k-ième ligne est la ligne pivot, et akj est le pivot: la ligne pivot est la ligne k telle que akj
soit positif et minimal. La variable correspondant à cette ligne est la variable sortante.
Troisième étape: Itération
S’il existe un coefficient ci positif dans le nouveau tableau, on retourne à la première étape
(choix du pivot) puis à la deuxième (réduction du tableau). On réitère ce processus jusqu’à ce
que tous les coefficients de la fonction économique soient négatifs. Cela se produira forcément.
31
x1 + x2 + e1 = 1
x2 + e2 = 2
3x1 + 4x2 + e3 = 12
x1 + x3 + e4 = 3
max(3x1 x2 + x3 )
xi , ei 0
Le premier tableau se présente donc ainsi:
x1 x2 x3 e1 e2 e3 e4
e1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 3 4 0 0 0 1 0 12
e4 1 0 1 0 0 0 1 3
Z 3 -1 1 0 0 0 0 0
Le plus grand coefficient positif de la fonction économique est c1 = 3. La colonne pivot est
donc la première colonne. La variable x1 est donc entrante.
32
La première ligne est la ligne pivot. Les seuls coefficients positifs non nuls de cette colonne
bi b1
sont a11 = 1, a31 = 3 et a41 = 1. Calculons les rapports ai1
correspondants. On a a11
= 1,
b3 b4
a31
= 4, a41
= 3.
Le plus petit rapport est le premier, donc la ligne pivot est la première. Le pivot associé
est a11 = 1. La variable entrante est x1 et la variable sortante est e1 .
Deuxième étape : Réduction du tableau
On divise la ligne pivot par le pivot puis on annule ensuite les coefficients du tableau
situées au-dessus et au-dessous du pivot, en soustrayant la ligne pivot aux autres lignes.
x1 x2 x3 e1 e2 e3 e4
x1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 0 1 0 -3 0 1 0 9 L3 L3 3L1
e4 0 -1 1 -1 0 0 1 2 L4 L4 3L1
Z 0 -4 1 -3 0 0 0 -3 L5 L5 3L1
x1 x2 x3 e1 e2 e3 e4
x1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 0 1 0 -3 0 1 0 9
x3 0 -1 1 -1 0 0 1 2
Z 0 -3 0 -2 0 0 -1 -5 L5 L5 L4
33
Tous les coefficients de la fonction économique sont négatifs, on a donc la solution optimale.
Elle est définie par x1 = 1, x2 = 0, x3 = 2, e1 = 0, e2 = 2, e3 = 9 et e4 = 0. Dans ce cas,
max(3x1 + x2 + x3 ) = 5.
Exemple 2:
On considère le programme linéaire suivant:
3x1 + 2x2 + 4x3 + 3x4 70
7x + 8x2 + 10x3 + 12x4 120
1
x1 + x2 + x3 + x4 15
max(6x1 + 11 x + 7x3 + 8x4 )
2 2
x 0 i
x1 x2 x3 x4 e1 e2 e3
e1 3 2 4 3 1 0 0 70
e2 7 8 10 12 0 1 0 120
e3 1 1 1 1 0 0 1 15
Z 6 11/2 7 8 0 0 0 0
x1 x2 x3 x4 e1 e2 e3
e1 5/4 0 3/2 0 1 -1/4 0 40 L1 L1 1/4L2
x4 7/12 2/3 5/6 1 0 1/12 0 10 L2 1/12L2
e3 5/12 1/3 1/6 0 0 -1/12 1 5 L3 L3 1/12L2
Z 4/3 1/6 1/3 0 0 -2/3 0 -80 L4 L4 2/3L2
x1 x2 x3 x4 e1 e2 e3
e1 0 -1 1 0 1 0 -3 25 L1 L1 3L3
x4 0 -53/3 3/5 1 0 1/5 -7/5 3 L2 L2 7/5L3
x1 1 4/5 2/5 0 0 -1/5 12/5 12 L3 12/5L3
Z 0 -9/10 -6/5 0 0 -2/5 -36/15 -96 L4 L4 16/5L3
Ce tableau est le dernier car tous les coefficients de la dernière ligne sont négatifs. La
solution optimale correspondante est x1 = 12, x4 = 3, e1 = 25. La fonction économique vaut
en ce point 96.
L’idée de la méhode du simplexe est, partant d’une solution de base réalisable, d’augmenter
la valeur d’une des variables hors base, la variable entrante, de façon à diminuer (si on
minimise) ou à augmenter (si on maximise) la valeur du critère. L’expression du coût réduit
en fonction des variables hors base qui apparaît dans la première ligne du dictionnaire, permet
de choisir la variable entrante.
Exemple 3:
Résoudre le système suivant en utilisant la méthode du dictionnaire:
2x1 + 4x2 + 5x3 + 7x4 42
x1 + x2 + 2x3 + 2x4 17
x1 + 2x2 + 3x3 + 3x4 24
max(7x1 + 9x2 + 18x3 + 17x4 )
xi 0
35
e2 = 17 x1 x2 2x3 2x4
Les variables e1 , e2 et e3 dites variables de base sont exprimées en fonction des variables
x1 , x2 , x3 , x4 dites variables hors base.
Une solution de base est une solution dans laquelle toute les variables hors base sont
nulles. Dans ce cas, x1 = x2 = x3 = x4 = 0 implique e1 = 42, e2 = 17 et e3 = 24.
Cette solution est dite réalisable car les valeurs des variables sont strictement positives.
Pour faire croître Z, on augmente la valeur d’une variable dont le coefficient dans la
ligne de Z est plus grande positive. Disons x3 .
e3 0 ce qui impose x3 8,
Cette opération revient à se déplacer d’un sommet de polyèdre (0, 0, 0, 0) à un autre sommet
(0, 0, 8, 0) le long d’une arrête jusqu’à rencontrer un nouvel hyperplan (e3 = 0).
Pour pouvoir itérer cette opération, il faut obtenir un nouveau dictionnaire en échangeant
les rôles de x3 et e3 .
1 2 5
e1 = 2 x1 x2 2x4 e3
3 3 3
1 1 2
e2 = 1 x1 + x2 + e3
3 3 3
1 2 1
x3 = 8 x1 x2 x4 e3 Dictionnaire II
3 3 3
Z = 144 + x1 3x2 x4 6e3
36
e1 0 ce qui impose x1 6,
e2 0 ce qui impose x1 3,
x1 = 3 + x2 3e2 + 2e3
e1 = 1 x2 2x4 + e2 + e3
x3 = 7 x2 x4 + e2 x7 Dictionnaire III
Exemple 5:
On considère le programme linéaire suivant.
x1 + 2x2 + 7x3 + 2x4 50
x + 3x2 + 5x3 + 2x4 30
1
2x1 + 6x2 + 4x3 + 3x4 10
max(x1 + 2x2 5x3 + 2x4 )
xi 0
e1 = 1 2x3
e3 = 2 + x1 3x2 4x3
Z = 2x1 x2 + 8x3
Après avoir choisi x3 comme variable entrante en base, on trouve que les trois variables de
base e1 , e2 , e3 limitent la croissance de x3 à 12 . Ainsi chacune de ces trois variables peut être
38
choisie pour quitter la base. Nous choisissons e1 . Après avoir pivoté, on obtient le dictionnaire:
1 1
x3 = e1
2 2
e2 = 2x1 + 4x2 + 3e1
e3 = x1 3x2 + 2e1
Z = 4 + 2x1 x2 + 4e1
Ce dictionnaire diffère de tous les autres rencontrés jusqu’à présent. En effet, dans la
solution réalisable associée à ce dictionnaire, les variables de base e2 et e3 sont nulles. Les
solutions de base ayant une (ou plusieurs) variable(s) de base nulle(s) sont dites dégénérées.
La dégénérescence peut avoir des effets de bord ennuyeux. Ce fait est illustré par les
itérations suivantes de l’exemple précédent. En effet, x1 entre en base et e2 quitte la base.
A cause de la dégénérescence, la contrainte e2 0 limite l’incrément de x1 à zéro. Ainsi la
valeur de x1 reste inchangée, de même que les valeurs des autres variables et de la fonction
objectif Z. C’est ennuyeux, puisque la motivation première de l’algorithme du simplexe est
d’augmenter la valeur de la fonction objectif à chaque itération. Pour cette itération, notre
désir reste insatisfait et le pivot nous donne le dictionnaire suivant:
11
x3 = e1
22
3 1
x1 = 2x2 + e1 e2
2 2
7 1
e3 = x2 + e1 e2
2 2
Z = 4 + 3x2 e1 e2
Cela n’affecte pas la solution associée. Les itérations du simplexe qui ne modifient pas la
solution de base sont dites dégénées. Vous pourrez vérifier que l’itération suivante est à
nouveau dégénérée, mais celle d’après ne l’est pas et fournit la solution optimale.
39
1 1
x3 = e1
2 2
17 3
x1 = e1 e2 2e3
2 2
7 1
x2 = e1 e2 e3
2 2
19 5
Z = 4 + e1 e2 3e3
2 2
e1 = 1 2x3
17 3
x1 = 17e1 e2 2e3
2 2
7 1
x2 = 7x3 e2 e3
2 2
27 5
Z = 19x3 e2 3e3
2 2
Dans un sens, la dégénérescence est accidentelle. En effet, une variable de base ne peut
disparaître (i.e valoir zéro) que si les opérations successives du pivot mènent exactement à
la suppression dans chaque ligne d’une même variable. Pourtant la dégénérescence dit que
presque tous les problèmes pratiques mènent à une solution de base réalisable dégénérée à une
certaine itération de l’algorithme du simplexe. Quoi qu’il se passe, la méthode du simplexe
peut stagner en passant par quelques itérations (parfois nombreuses) dégénérées sur une ligne.
En règle générale, un tel bloc d’itérations se termine par la découverte d’une itération non
dégénérée. Mais ce n’est pas toujours le cas et nous allons vous présenter un contre-exemple.
V.2 Les cycles
Est-ce que la méthode du simplexe peut engendrer un nombre infini d’itérations sans
jamais trouver la solution optimale ? La réponse est OUI. Pour justifier ce fait, considérons
le dictionnaire suivant:
Exemple:
40
Solution:
Introduction des variables d’écart:
1 11 5
e1 = x1 + x2 + x3 9x4
2 2 2
e2 = 1 x1
1 3 1
e3 = x1 + x2 + x3 x4
2 2 2
Z = 10x1 57x2 9x3 24x4
La variable entrante sera toujours la variable hors base ayant le plus grand coefficient
dans la ligne du dictionnaire associée à la fonction objectif Z.
Si plusieurs variables peuvent être choisies pour quitter la base, on prendra celle de plus
petit indice. Ainsi, nous obtenons pour les six prochaines itérations, les dictionnaires
suivants:
1 1 1
x2 = x3 + 2x4 + e1 e2
2 4 4
1 3 11
x1 = x3 + 4x4 + e1 e2
2 4 4
1 3 11
e3 = 1 + x3 4x4 e1 + e2
2 4 4
29 27 53
Z = x3 98x4 e1 e2
2 4 4
1 5
x2 = x1 2x4 e1 e2
2 2
3 11
x3 = 2x1 8x4 + e1 e2
2 2
e3 = 1 x1
1 1 1 5
x4 = x1 x2 e1 + e2
2 2 4 4
1 9
x3 = 2x1 4x2 e1 + e2
2 2
e3 = 1 x1
21 141
Z = 20x1 9x2 + e1 e2
2 2
1 3 1
x4 = x1 + x2 + x3 e2
2 2 2
e1 = 4x1 8x2 2x3 + 9e2
e3 = 1 x1
1 3 1
e2 = x1 + x2 + x3 x4
2 2 2
1 11 5
e1 = x1 + x2 + x3 9x4
2 2 2
e3 = 1 x1
On retrouve donc le premiér dictionnaire après avoir introduire les variables d’ecart.
Puisque le dictionnaire construit après la sixième itération est identique au dictionnaire
initial, la méthode bouclera sur les mêmes itérations indéfiniment, sans jamais trouver la
solution optimale (laquelle, comme nous le verrons plus tard, vaut 1). Ce phénomène est
connu sous le nom de cycle. Plus précisément, nous disons que la méthode du simplexe cycle
si un dictionnaire apparaît dans deux itérations différentes (et donc la séquence d’itérations
menant de ce dictionnaire à lui-même peut être répétée sans fini). Il faut noter que les cycles
ne peuvent apparaître qu’en présence de dégénérescence: puisque la valeur de la fonction
objectif augmente avec chaque itération non dégénérée et reste inchangée après celles qui le
sont, toutes les itérations dans une séquence menant d’un dictionnaire à lui-même doivent
être dégénérées. Les cycles sont la raison pour laquelle la méthode du simplexe peut ne pas
terminer; le théorème suivant montre que c’est l’unique raison.
Théorème 1 : Si la méthode du simplexe ne termine pas, alors elle doit cycler.
C’esst pourquoi, dans la plupart des implémentations de l’algorithme du simplexe, le
problème du cycle n’est pas pris en compte.
Plusieurs méthodes existent pour prévenir le phénomène de cycle. La méthode classique
de perturbation et la mèthode lexicographique évitent de cycler par un choix judicieux de la
variable sortante à chaque itération du simplexe. La règle du plus petit indice, méthode plus
récente, se base sur le choix de la variable entrante et aussi de celle sortante. Cette dernière
méthode, quant à elle, ne nécessite pas de calcul supplémentaire, mais elle ne laisse pas le
choix des variables entrantes et sortantes.
La règle du plus petit indice: Lorsque plusieurs variables sont candidates pour entrer
(resp. sortir) de la base, on prend toujours celle ayant le plus petit indice. La motivation
43
I. Introduction
Définition 1:
On appelle un programme primal un modèle de programmation linéaire associé à un
problème donné ou encore modèle original.
Pour chaque modèle de programmation linéaire, il existe un et un seul autre modèle de
programmation linéaire appelé un programme dual (ou bien son dual).
Comme le modèle original a deux formes importantes qui sont la forme canonique et la
forme standard, alors le modè le dual aussi a ces deux formes.
Définition 2:
On dit qu’un programme linéaire est dans sa forme symétrique si les variables sont toutes
non négatives et que toutes les contraintes de type dans le cas d’une maximisation où
toutes les contraintes de type dans le cas de minimisation de la fonction objectif.
Autrement:
Pn Pm
maximiserZ =
i=1 ci xi
minimiserW = i=1 bi yi
Pn Pn
Primal : i=1 aij xj bi , 81 i m Dual : aij yi ci , 81 j m
i=1
xj 0 yi 0
Remarque:
1) Si la fonction objectif du primal doit être maximiser, celle du dual doit être minimiser
et inversement.
3) Les coefficients des variables dans les contraintes du dual sont ceux du primal mais
transposés: les coefficients de la ième ligne du primal deviennent les coefficients de la
ième colonne du son dual.
4) A chaque contrainte du primal de type , lui associe une variable du dual positive.
5) A chaque variable de décision non négative dans le primal, lui correspond une contrainte
non négative dans son dual.
6) La dualité est une notion symétrique: L’un des programmes au choix est appelé le
programme primal et l’autre le programme dual.
Autrement:
P Pm
maximiserZ = ni=1 ci xi minimiserW =
i=1 bi yi
Pn Pn
Primal : i=1 aij xj bi , 81 i m Dual : aij yi ci , 81 j m
i=1
xj 0 yi 0
Autrement:
Pn Pm
maximiserZ =
i=1 ci xi
minimiserW = i=1 bi yi
Pn Pn
Primal : i=1 aij xj = bi , 81 i m Dual : aij yi ci , 81 j m
i=1
xj 0 yi sans restriction de signe
Autrement:
P Pm
minimiserZ = ni=1 ci xi maximiserW =
i=1 bi yi
Pn Pn
Primal : a x bi , 81 i m Dual : aij yi ci , 81 j m
i=1 ij j
i=1
xj 0 yi 0
Nombre de contraintes
Nombre de variables duales
A la contrainte i
Correspond la variable yi
Contrainte de type () yi 0
Contrainte de type
yi 0
Contrainte de type = y sans restriction de signe
i
Nombre de variables(décisions)
Nombre de contraintes
Contrainte de type
xi 0
()
x 0
Contrainte de type
i
xi sans restriction de signe
Contrainte de type =
CT X BT Y
50
CT X BT Y
On déduit donc que C T X inf(B T Y ) pour toute solution réalisable Y du son dual et
que sup(C T X) B T Y pour toute solution réalisable X du primal. Par suite sup(C T X)
inf(B T Y ) pour toute solution réalisable X et Y du primal et du son dual respectivement.
Etant donné un programme primal de programmation linéaire et son dual, on a exactement
l’un des trois cas suivant:
Si un programme présente des solutions réalisables mais pas de solution optimale finie,
l’autre programme n’admet pas de solution réalisable.