Vous êtes sur la page 1sur 18

La phase I de l’algorithme du simplexe

• Phase I duale : fonction objectif artificielle

• Phase I primale : second membre artificiel

• Phase I primale : problème auxiliaire

• Les algorithmes à deux phases

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 134


La phase I de l’algorithme du simplexe
Partant d’un PL standard, si la base initiale (formée des variables d’écart)
est primal/dual admissible, ou si une base primal/dual admissible est
fournie par une méthode had hoc, la phase II de l’algorithme primal/dual
du simplexe permet de déterminer une solution optimale, si elle existe, ou
de prouver que le problème est non borné ou sans solution admissible.
Que faire lorsqu’un tableau primal ou dual admissible n’est pas connu ?
Deux approches principales sont possibles.
1. Modifier temporairement les données du problème afin que la base
initiale soit admissible.

2. Définir un problème auxiliaire pour lequel une base admissible est facile
à trouver et dont la solution optimale fournit un tableau admissible du
problème de départ ou prouve qu’il n’en existe pas.
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 135
La phase I duale : utiliser un objectif artificiel
Soit le programme linéaire
Maximiser z = 2x1 − x2
s.c. x1 + x2 ≥ 3
x2 ≤ 2
x1 − x2 ≤ 1
x1 , x2 ≥ 0

dont le tableau initial n’est ni primal-admissible ni dual-admissible


x1 x2 x3 x4 x5 z
−1 −1 1 0 0 0 −3
T0 = 0 1 0 1 0 0 2
1 −1 0 0 1 0 1
−2 1 0 0 0 1 0

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 136


Supposons un instant que la fonction objectif soit nulle (c = 0). Le tableau
initial serait alors
x1 x2 x3 x4 x5 z
−1
−1 −1 1 0 0 0 −3
0 1 0 1 0 0 2
T̂ 0 =
1 −1 0 0 1 0 1
−2 1 0 0 0 1 0 p.m.
0 0 0 0 0 1 0

Ce tableau est dual-admissible et on peut appliquer la phase II de


l’algorithme dual du simplexe (avec la règle de Bland car la solution basique
duale est dégénérée).
Le premier pivot est α11 = −1 (les candidats pour entrer dans la base sont
x1 et x2, Bland ⇒ x1 est retenu).

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 137


x1 x2 x3 x4 x5 z
1 1 −1 0 0 0 3
0 1 0 1 0 0 2
T̂ 1 =
0 −2
−2 1 0 1 0 −2
0 3 −2 0 0 1 6 p.m.
0 0 0 0 0 1 0
x1 x2 x3 x4 x5 z
1 0 −1/2 0 1/2 0 2
0 0 1/2 1 1/2 0 1
T̂ 2 =
0 1 −1/2 0 −1/2 0 1
0 0 −1/2 0 3/2 1 3 p.m.
0 0 0 0 0 1 0

Le tableau T̂ 2 est primal-admissible, on peut donc supprimer la fonction


objectif auxiliaire . . .
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 138
. . . et terminer l’optimisation à l’aide de la phase II de l’algorithme primal
du simplexe.

x1 x2 x3 x4 x5 z
1 0 −1/2 0 1/2 0 2
T2 = 0 0 1/2 1 1/2 0 1
0 1 −1/2 0 −1/2 0 1
0 0 −1/2 0 3/2 1 3
x1 x2 x3 x4 x5 z
1 0 0 1 1 0 3
T3 = 0 0 1 2 1 0 2
0 1 0 1 0 0 2
0 0 0 1 2 1 4

Le tableau est optimal, la solution optimale est x∗1 = 3, x∗2 = 2 et z ∗ = 4.


J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 139
La phase I primale : utiliser un second membre artificiel
Soit le programme linéaire
Maximiser z = 2x1 − x2
s.c. x1 + x2 ≥ 3
x2 ≤ 2
x1 − x2 ≤ 1
x1 , x2 ≥ 0

dont le tableau initial n’est ni primal-admissible ni dual-admissible


x1 x2 x3 x4 x5 z
−1 −1 1 0 0 0 −3
T0 = 0 1 0 1 0 0 2
1 −1 0 0 1 0 1
−2 1 0 0 0 1 0

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 140


Supposons un instant que le second membre soit nul (b = 0). Le tableau
initial serait alors
x1 x2 x3 x4 x5 z p.m.
−1 −1 1 0 0 0 −3 0
T̂ 0 = 0 1 0 1 0 0 2 0
1 −1 0 0 1 0 1 0
−2 1 0 0 0 1 0 0

Ce tableau est primal-admissible et on peut appliquer la phase II de


l’algorithme primal du simplexe (avec la règle de Bland car la solution
basique primale est dégénérée).
Le premier pivot est α31 = 1.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 141


x1 x2 x3 x4 x5 z p.m.
0 −2 1 0 1 0 −2 0
T̂ 1 = 0 1 0 1 0 0 2 0
1 −1 0 0 1 0 1 0
0 −1 0 0 2 1 2 0
x1 x2 x3 x4 x5 z p.m.
0 0 1 2 1 0 2 0
T̂ 2 = 0 1 0 1 0 0 2 0
1 0 0 1 1 0 3 0
0 0 0 1 2 1 4 0

Le tableau T̂ 2 est dual-admissible, on peut donc supprimer le second


membre auxiliaire . . . et arrêter la résolution car le tableau obtenu est
également primal-admissible (pour le b d’origine) ; il est donc optimal.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 142


La phase I primale : utiliser un problème auxiliaire

On va construire un problème auxiliaire vérifiant les conditions suivantes :


• Il admet toujours des solutions admissibles.

• Il est facile de trouver une solution basique admissible du problème


auxiliaire.

• Il admet toujours une solution optimale.

• Le PL de départ admet des solutions admissibles si et seulement si la


valeur optimale du problème auxiliaire est nulle.

• Si la valeur optimale du problème auxiliaire est nulle, il est facile


d’obtenir un tableau admissible pour le PL de départ à partir du tableau
optimal du problème auxiliaire.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 143


Construction du problème auxiliaire

Si le tableau initial associé à un PL standard n’est pas admissible, le


système de contraintes a la forme

A1xD + Ix1E = b1 (b1 ≥ 0)


A2xD + Ix2E = b2 (b2 < 0)
En ajoutant x0 au membre de droite des contraintes pour lesquelles bi < 0,
on obtient

A1xD + Ix1E = b1
A2xD + Ix2E = b2 + 1x0
et si x0 prend une valeur δ suffisamment grande (≥ max{|bi| | bi < 0}), la
solution xD = 0, x1E = b1, x2E = b2 + 1δ et x0 = δ est admissible.
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 144
D’autre part, le PL de départ admet des solutions admissibles si et
seulement si le système précédent admet des solutions non négatives
vérifiant x0 = 0.
On associe donc au PL standard (P ) le problème auxiliaire (P aux)

Max (z, s.c. xD , xE ≥ 0) (P )


avec A1xD + Ix1E = b1 (b1 ≥ 0)
A2xD + Ix2E = b2 (b2 < 0)
−cD xD − 0x1E − 0x2E + z = 0
Max (z ", s.c. xD , xE ≥ 0, x0 ≥ 0) (P aux)
avec A1xD + Ix1E = b1
−1x0 + A2xD + Ix2E = b2
− cD xD − 0x1E − 0x2E + z = 0
x0 + z" = 0
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 145
Exemple

Soit le PL standard Max z = 2x1 − x2


s.c. −x1 − x2 + x3 = −3
− x2 + x4 = −2
x1 − x2 + x5 = 1
xi ≥ 0 i = 1, . . . , 5

On lui associe le problème auxiliaire


Max z " = −x0
s.c. −x0 − x1 − x2 + x3 = −3
−x0 − x2 + x4 = −2
x1 − x2 + x5 = 1
− 2x1 + x2 + z = 0 (pro memoria)
xi ≥ 0 i = 0, . . . , 5
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 146
Le tableau initial du problème est non admissible. On ajoute donc la
variable auxiliaire x0 dans les contraintes i vérifiant bi < 0 et on définit une
fonction objectif auxiliaire z " = −x0 (à maximiser).

x0 x1 x2 x3 x4 x5 z z"
−1 −1 −1 1 0 0 0 0 −3
−1 0 −1 0 1 0 0 0 −2
0 1 −1 0 0 1 0 0 1
0 −2 1 0 0 0 1 0 0
1 0 0 0 0 0 0 1 0

Ce tableau n’est toujours pas admissible (pour le problème auxiliaire) mais


en introduisant x0 dans la base en lieu et place de la variable d’écart
associée au bi le plus petit (ici x3), on obtient un tableau admissible.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 147


Algorithme primal du simplexe (phase I)
Données : Un tableau non admissible.
Résultat : Un tableau admissible ou un certificat d’absence de solutions admissibles.
(1) Construire le PL auxiliaire et un tableau initial admissible :
! Introduire la variable auxiliaire x0 dans toutes les contraintes vérifiant bi < 0.
! Ajouter la fonction objectif auxiliaire (à maximiser) z ! = −x0.
! Faire entrer x0 dans la base en pivotant sur αj0 où

j = min {i | bi = min {bk | bk < 0}} .

(2) Résoudre le PL auxiliaire à l’aide de la phase II de l’algorithme du simplexe et en


utilisant la règle de Bland.
! Si z ! = 0 à l’optimum, supprimer les colonnes de x0 et de z ! et la ligne de z !. Le
tableau restant est admissible pour le problème de départ.
! Si z ! < 0 à l’optimum, le problème de départ n’admet pas de solutions admissibles.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 148


Les algorithmes du simplexe à deux phases
En combinant les algorithmes présentés jusqu’ici, il est possible de résoudre
n’importe quel programme linéaire. Ces algorithmes du simplexe sont dits à
deux phases, chacune d’elles étant soit
• primale : la solution basique primale est et reste admissible,
• duale : la solution basique duale est et reste admissible.

En modifiant temporairement la fonction objectif, afin d’obtenir un tableau


initial dual-admissible, on obtient un algorithme « dual-primal » composé
d’une phase duale suivie d’une phase primale.
En modifiant temporairement le second membre, afin d’obtenir un tableau
initial primal-admissible, on définit un algorithme « primal-dual » composé
d’une phase primale suivie d’une phase duale.
J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 149
Classiquement, l’algorithme du simplexe à deux phases désigne un
algorithme « primal-primal » utilisant, si besoin est, un problème auxiliaire
dans une première phase.
Finalement, définissant correctement un problème auxiliaire dual, on peut
construire un algorithme « dual-dual » à deux phases.
Il existe également des algorithmes de pivotages à une phase. Ce type
d’algorithmes ne sera pas étudié ici mais nous pouvons citer, parmi les plus
connus, l’algorithme primal-dual du simplexe ou la méthode criss-cross.
Notons finalement que les algorithmes de points intérieurs, dont nous
parlerons brièvement, sont également des algorithmes à une phase (mais ils
n’utilisent pas de pivotages et ne visitent pas une suite de solutions
basiques).

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 150


Objectifs

• Savoir décrire les différents algorithmes du simplexe à deux phases. En


particulier, connaı̂tre les données initiales requises par chaque algorithme
et ses issues possibles.

• Pouvoir résoudre un programme linéaire à l’aide des algorithmes à deux


phases « dual-primal » et « primal-dual ». En particulier, connaı̂tre pour
chaque variante les règles de sélection du pivot et les conditions d’arrêt.

J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 151

Vous aimerez peut-être aussi