@Entry[1]
Problèmes avec l'algorithme du simplexe
(2) Où trouver une solution de base pour commencer ?
Le dual d'un programme linéaire
Motivation
Je peux aussi déduire des majorants de z par manipulation directe des inéquations:
10
10
20
50
0
40
25
x ≤
100
50
60
40
0
0
0
15
100
30
50
40
5
5
20
10
100
0
0
0
0
50
30
0
100
Si je calcule 2/5× (1) + 2/3× (2), j'obtiens
37.33x1+44x2+34.67x3+20x4+16x6+20x7
≤ 106.67 et, donc,
z=30x1+40x2+30x3+10x4+15x6+20x7 ≤ 106.67
Quel est le meilleur majorant que je peux trouver de cette façon ?
Le problème de base: maximiser ∑j=1n cjxj
avec m contraintes ∑j=1n ai,jxj ≤ bi
et xj ≥ 0
En essayant de trouver un majorant de la solution, j'ai cherché des multiplicateurs yi pour les contraintes avec les propriétés :
yi ≥ 0
∑i=1m ai,jyi ≥ cj
Et je veux trouver un ensemble de tels multiplicateurs qui me donne la valeur
la plus petite possible de ∑i=1m bi yi.
Un nouveau programme linéaire!
appelé le dual.
Propriété évidente: chaque solution réalisable du dual est supérieure ou égale à chaque solution réalisable du problème de base.
Le dual du dual
Le dual, à savoir minimiser ∑i=1m bi yi avec les contraintes
∑i=1m ai,jyi ≥ cj équivaut à maximiser
∑i=1m -bi yi avec les contraintes
∑i=1m -ai,jyi ≤ -cj.
(pour l'exprimer
en forme canonique)
On a multiplié les deux vecteurs b et c et la matrice a par -1, échangé les 2 vecteurs et transposé la matrice.
Donc, si on le fait une deuxième fois pour obtenir le dual du dual, on retrouve le problème de base.
La même solution !
Les deux problèmes ont la même solution
(c'est-à-dire la même valeur optimale de la fonction objective)
Le théorème le plus important de la programmation linéaire.
Démonstration compliquée.
Mais, il n'est pas difficile de voir que l'algorithme du simplexe
calcule (dans le cas d'un programme faisable et borné)
une valeur qui est une solution réalisable des deux
problèmes;
En effet, à la fin de l'exécution de l'algorithme, la dernière
ligne contient sa valeur initiale (la fonction objective) moins une somme
de multiples des autres lignes; mettons mj pour le multiplicateur de la ligne
j.
En regardant les valeurs finales dans cette dernière ligne, on trouve
Il reste trois cas possibles ou ni l'un ni l'autre n'a pas de solution optimale:
L'interprétation économique de la solution du dual
Si z est mon profit, yi est le maximum que je devrait payer (par unité) pour lâcher la contrainte (acheter plus d'une matière de base ...)
Un autre algorithme Celui de Khachiyan (1979) a l'avantage d'être certain de terminer dans un temps polynomial (dans la taille des entrées ... ) dans tous les cas.