Pour commencer l'algorithme du simplexe, il faut partir d'une base admissible (valeurs des variables qui vérifient toutes les contraintes, les variables hors base étant égales à 0).
Souvent, on peut utiliser les variables d'écarts comme base initiale. Considérons par exemple le PL ci-dessous:
Il peut être mis sous forme standard en ajoutant des variables d'écarts :
forme une base admissible car, si , on trouve , qui sont bien positifs (donc vérifient les contraintes ). On peut donc, dans ce cas, appliquer l'algorithme du simplexe avec comme base initiale.
Cependant, parfois il est plus difficile de trouver une première base admissible. Considérons le programme linéaire suivant, légèrement modifié par rapport au précédent :
Si alors et , ce qui n'est pas une base admissible (car négatifs). La méthode du simplexe à 2 phases consiste à modifier le PL en ajoutant des variables artificielles , :
On a fait exprès de mettre des signes devant et pour qu'ils constituent une base admissible de ce nouveau PL . En effet, si alors et , qui sont bien positifs. L'idée est ensuite d'utiliser l'algorithme du simplexe sur ce nouveau PL pour sortir et de la base. On obtiendra alors une base constituée uniquement d'éléments parmi , qui sera aussi une base du PL initial .
Ecrivons le PL sous forme de tableau :
= | |||||||
---|---|---|---|---|---|---|---|
-2 | 1 | 1 | 0 | -1 | 0 | 0 | -4 |
1 | -2 | 0 | 1 | 0 | -1 | 0 | -2 |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
On met des coefficients positifs sur le second membre :
= | |||||||
---|---|---|---|---|---|---|---|
2 | -1 | -1 | 0 | 1 | 0 | 0 | 4 |
-1 | 2 | 0 | -1 | 0 | 1 | 0 | 2 |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
Faisons rentrer , en utilisant la première ligne comme pivot (on regarde la valeur min de comme d'habitude) :
= | |||||||
---|---|---|---|---|---|---|---|
1 | -1/2 | -1/2 | 0 | 1/2 | 0 | 0 | 2 () |
-1 | 2 | 0 | -1 | 0 | 1 | 0 | 2 |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
= | |||||||
---|---|---|---|---|---|---|---|
1 | -1/2 | -1/2 | 0 | 1/2 | 0 | 0 | 2 |
0 | 3/2 | -1/2 | -1 | 1/2 | 1 | 0 | 4 () |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
Faisons rentrer , en utilisant la deuxième ligne comme pivot (on regarde la valeur min de comme d'habitude) :
= | |||||||
---|---|---|---|---|---|---|---|
1 | -1/2 | -1/2 | 0 | 1/2 | 0 | 0 | 2 |
0 | 1 | -1/3 | -2/3 | 1/3 | 2/3 | 0 | 8/3 () |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
= | |||||||
---|---|---|---|---|---|---|---|
1 | 0 | -2/3 | -1/3 | 2/3 | 0 | 0 | 10/3 () |
0 | 1 | -1/3 | -2/3 | 1/3 | 2/3 | 0 | 8/3 |
0 | 0 | 0 | 0 | -1 | -1 | 1 | 0 |
On obtient alors une base admissible et que l'on peut utiliser comme point de départ d'une seconde application de l'algorithme du simplexe, cette fois sur .