(sous forme canonique : seulement des inégalités à part pour le max et les contraintes de positivité de )
Représentation graphique des contraintes avec Geogebra
Avec Geogebra, en dessinant le polytope, on trouve un optimum de pour et .
De manière générale, l'optimum d'un PL est atteint en un sommet du polytope des contraintes.
Mettre le problème sous forme standard (avec des au lieu de ).
On utilise des variables d'écarts , , .
Ecriture sous forme de tableau
= | ||||||
---|---|---|---|---|---|---|
2 | 1 | 1 | 0 | 0 | 0 | 8 |
1 | 2 | 0 | 1 | 0 | 0 | 7 |
0 | 1 | 0 | 0 | 1 | 0 | 3 |
-4 | -5 | 0 | 0 | 0 | 1 | 0 |
()
À chaque instant de l'algo, on a une base (ensemble de variables parmi , , , , non nulles). Les variables qui ne sont pas dans la base valent 0.
Remarque : cette base correspond à un sommet du polytope.
Dans la base initiale, on choisit en général les variables d'écarts, donc , , . Et donc .
Il faut que cette base soit admissibles, c-a-d vérifie les conditions du PL (si ce n'est pas le cas, on applique la méthode du simplexe à 2 phases).
On voit que (x, y, , , ) = (0, 0, 8, 7, 3) est une base admissible.
= | ||||||
---|---|---|---|---|---|---|
2 | 1 | 1 | 0 | 0 | 0 | 8 |
1 | 2 | 0 | 1 | 0 | 0 | 7 |
0 | 1 | 0 | 0 | 1 | 0 | 3 |
-4 | -5 | 0 | 0 | 0 | 1 | 0 |
On choisit de rentrer une variable dans la base qui permette d'augmenter z (c'est à dire avec un coeff négatif sur la dernière ligne)
On choisit par ex. de rentrer dans la base.
On utilise comme pivot la ligne telle que soit minimum :
2 | 1 | 1 | 0 | 0 | 0 | 8/1 |
1 | 2 | 0 | 1 | 0 | 0 | 7/2 |
0 | 1 | 0 | 0 | 1 | 0 | 3/1 |
-4 | -5 | 0 | 0 | 0 | 1 | 0 |
min(8, 7/2, 3) = 3 (ce qui correspond à la 3ème ligne ) donc on va mettre des 0 sur la colonne de sauf un 1 sur la 3ème ligne (pivot). Pour cela on fait des opérations sur des lignes, comme pour la méthode du pivot de Gauss.
(Remarque : comme auparavant c'était qui avait un 1 sur la 3ème ligne dans la base, il va être enlevé de la base.)
= | ||||||
---|---|---|---|---|---|---|
2 | 0 | 1 | 0 | -1 | 0 | 8 - = 5 |
1 | 0 | 0 | 1 | -2 | 0 | 7 - = 1 |
0 | 1 | 0 | 0 | 1 | 0 | 3 |
-4 | 0 | 0 | 0 | 5 | 1 | 0 + 5 = 15 |
On rentre (qui a un coeff négatif)
2 | 0 | 1 | 0 | -1 | 0 | 5/2 |
1 | 0 | 0 | 1 | -2 | 0 | 1/1 |
0 | 1 | 0 | 0 | 1 | 0 | 3 |
-4 | 0 | 0 | 0 | 5 | 1 | = 15 |
min(5/2, 1/1) = 1 on sort
= | ||||||
---|---|---|---|---|---|---|
0 | 0 | 1 | -2 | 3 | 0 | 5 - = 3 |
1 | 0 | 0 | 1 | -2 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 | 3 |
0 | 4 | 0 | 4 | -3 | 1 | = 15 + 4 = 19 |
On entre qui a un coeff négatif pour .
0 | 0 | 1 | -2 | 3 | 0 | 3/3 |
1 | 0 | 0 | 1 | -2 | 0 | |
0 | 1 | 0 | 0 | 1 | 0 | 3/1 |
0 | 4 | 0 | 4 | -3 | 1 | 19 |
min(3/3, 3/1) = 1 donc on va utiliser la 1ère ligne comme pivot (et on sort ). On commence par diviser par 3 pour avoir un 1 comme pivot puis on soustrait les lignes pour mettre des 0 :
= | ||||||
---|---|---|---|---|---|---|
0 | 0 | 1/3 | -2/3 | 1 | 0 | 1 |
1 | 0 | 2/3 | -1/3 | 0 | 0 | 1 + 2 = 3 |
0 | 1 | -1/3 | 2/3 | 0 | 0 | 3 - = 2 |
0 | 4 | 1 | 2 | 0 | 1 | 19 + 3 = 22 |
Quand tous les coeffs de la dernière ligne sont positifs, on ne peut plus augmenter la valeur de et donc on arrête l'algo et on en déduit l'optimum.
Ici on retrouve bien un optimum , obtenu avec (variables hors base) et (ligne 2), (ligne 3), (ligne 1).