Rappels sur les tableaux et l’algorithme du simplexe • À tout tableau est associée non seulement une base du problème initial (primal) mais également une base du problème dual. • Les valeurs des variables basiques primales se lisent dans la dernière colonne du tableau. • Les valeurs de la solution basique duale se lisent dans la dernière ligne du tableau. • Les variables de décision du dual sont associées aux variables d’écart du primal. Réciproquement, les variables d’écart du dual sont associées aux variables de décision du primal. J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 125 • Les solutions basiques primale et duale associées à un tableau ont même valeur et vérifient les écarts complémentaires. • Dans tous les tableaux visités par l’algorithme du simplexe la solution basique primale est toujours admissible. • L’algorithme s’arrête dès qu’une solution basique duale admissible est atteinte, le tableau étant alors optimal. • Le tableau optimal contient non seulement la solution (optimale) du problème initial mais également celle de son dual. J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 126 L’algorithme dual du simplexe (phase II) Considérons le PL canonique Max z = −x1 − 2x2 s.c. 2x1 + x2 ≤ 6 −x1 − x2 ≤ −4 x2 ≥ 0 x1 , de tableau initial T0 = x1 2 −1 1 x2 1 −1 2 x3 1 0 0 x4 0 1 0 z 0 0 1 6 −4 0 T 0 n’est pas (primal-)admissible mais est dual-admissible ! J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 127 On peut donc chercher à résoudre le problème dual tout en travaillant dans le tableau primal. Dans T 0, la fonction objectif duale (à minimiser) s’écrit w = yb. Il faut donc augmenter une variable de décision duale associée à un élément bi < 0 afin de diminuer w. Le seul candidat est b2 = −4, la variable primale x4 va donc quitter la base primale et la variable duale y2 associée va entrer dans la base duale. Afin de conserver l’admissibilité duale, le pivot doit être choisi dans une colonne r vérifiant ! " −γk −γr = max | α2k < 0 . α2r α2k Comme −γ1/α21 = −1 et −γ2/α22 = −2, il faut pivoter sur α21 et faire entrer x1 dans la base en lieu et place de x4. J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 128 T0 = x1 2 −1 1 x2 1 −1 2 x3 1 0 0 x4 0 1 0 z 0 0 1 T1 = x1 0 1 0 y3 x2 −1 1 1 y4 x3 1 0 0 y1 x4 2 −1 1 y2 z 0 0 1 6 −4 0 −2 4 −4 Le tableau T 1 est toujours dual-admissible mais, maintenant, β1 est négatif, x3 va donc quitter la base primale et y1 entrer dans la base duale. Le seul pivot négatif dans la première ligne est α12 = −1. J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 129 T1 = x1 0 1 0 x2 −1 1 1 x3 1 0 0 x4 2 −1 1 z 0 0 1 T2 = x1 0 1 0 y3 x2 1 0 0 y4 x3 −1 1 1 y1 x4 −2 1 3 y2 z 0 0 1 −2 4 −4 2 2 −6 Le tableau T 2 est primal et dual admissible, il est donc optimal. La solution optimale primale est x∗1 = x∗2 = 2 (x∗3 = x∗4 = 0) et la solution optimale duale est y1∗ = 1, y2∗ = 3 (y3∗ = y4∗ = 0). On a évidemment z ∗ = w∗ = −6. J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 130 Tableau primal / Algo. dual x2 x3 x4 x1 2 1 1 0 6 −1 −1 0 1 −4 1 2 0 0 0 0 1 0 −1 1 1 1 0 0 2 −1 1 −2 4 −4 0 1 0 y3 1 0 0 y4 −1 1 1 y1 −2 1 3 y2 2 2 −6 J.-F. Hêche, ROSO-EPFL T0 Tableau dual / Algo. primal y1 y2 y3 y4 −2 1 1 0 1 −1 1 0 1 2 6 −4 0 0 0 T1 −2 1 −2 1 0 0 1 −1 4 0 1 0 1 1 4 T2 0 1 0 x3 1 0 0 x4 −1 −1 2 x1 2 1 2 x2 3 1 6 Recherche opérationnelle SC & PH 131 Algorithme dual du simplexe (phase II) Données : Un tableau dual-admissible. Résultat : Un tableau optimal ou un certificat d’absence de solutions admissibles. (1) Choix d’une variable sortante : Choisir une ligne i avec βi < 0, la variable basique xj avec j = σ(i) quitte la base. S’il n’existe pas de variable sortante : STOP le tableau courant est optimal. (2) Choix d’une variable entrante : Choisir une colonne hors base r maximisant les quotients caractéristiques duaux ! ! "" −γj −γk r∈ k∈N | = max | αij < 0 αik αij S’il n’existe pas de variable entrante : STOP le dual est non borné et le primal sans solutions admissibles. (3) Mise à jour de la base et du tableau : Pivoter autour de αir et retourner en (1). J.-F. Hêche, ROSO-EPFL Recherche opérationnelle SC & PH 132 Remarque. Si, pendant l’application de l’algorithme dual, un tableau non admissible est atteint pour lequel aucun pivot ne peut être trouvé, cela signifie que le problème dual est non borné et donc que le problème primal n’admet pas de solution admissible. En effet, dans une telle situation, on a bi < 0 et αij ≥ 0 ∀ j. Ceci correspond à la contrainte (impossible si xj ≥ 0 ∀ j) # 0≤ αij xj = bi < 0. xD Dual non borné xE ⊕ ... ... ... ... ⊕ ⊕ ... ... ... ... ⊕ J.-F. Hêche, ROSO-EPFL z 0 .. 0 1 ∗ − ∗ ∗ Sans solution admissible (primale) xD xE z 0 ∗ ⊕ . . . . . . . . . . . . ⊕ .. − 0 ∗ ∗ ... ... ... ... ∗ 1 ∗ Recherche opérationnelle SC & PH 133