Description

Recherche Opérationnelle – Programmation linéaire : dualitéRecherche Opérationnelle Programmation linéaire: dualité Yves Correc Yves Correc 25/11/2007 6–1 Recherche Opérationnelle – Programmation linéaire : dualité Sommaire 6. PROGRAMMATION LINEAIRE: DUALITE ...............................................................................6–3 6.4. Le problème dual ...................................................................................................................6–3 6.4.1. Définitions .......................................................................................................................6–3 6.4.2. Interprétation économique ..............................................................................................6–3 6.4.3. Problème dual du simplexe ............................................................................................6–7 6.4.4. Algorithme dual du simplexe.........................................................................................6–10 6.4.5. Difficultés diverses ........................................................................................................6–13 6.4.6. Coûts de substitution ....................................................................................................6–16 6.4.7. Coûts marginaux...........................................................................................................6–17 6.5. Post-optimisation..................................................................................................................6–19 6.5.1. Paramétrage du second membre .................................................................................6–19 6.5.2. Paramétrage de la fonction économique......................................................................6–26 6.6. Compléments .......................................................................................................................6–29 6.6.1. Exercice 12-9-7-6-10 ...................................................................................................6–29 6.6.2. Exercice 1-14-6............................................................................................................6–31 6.6.3. Exercice raffinerie ........................................................................................................6–38 Yves Correc 25/11/2007 6–2 Recherche Opérationnelle – Programmation linéaire : dualité 6. PROGRAMMATION LINEAIRE: DUALITE 6.4. LE PROBLEME DUAL 6.4.1. Définitions Reprenons le problème de fabrication du début (problème des tables et des chaises). A l'optimum, la fonction économique s'écrit: -2 x5 - x4 = z - 26 Considérons la variable x5 (variable d'écart de distribution). Elle est nulle à l'optimum, ie la contrainte correspondante est saturée. Mais si l'on augmentait le second membre (RHS) de ∆b, on pourrait la débloquer, et ainsi augmenter la fonction économique, ici de 2 ∆b. De même un déblocage de la deuxième contrainte (x4) entrainerait une variation de la fonction économique z de ∆b. Par contre la première contrainte n’est pas saturée (x3=3), et l'on ne peut rien en attendre. Les quantités introduites ici sont les coûts marginaux affectés aux contraintes : Ce sont les coefficients des variables d’écart apparaissant dans l’écriture de la fonction économique à l’optimum (ce sont aussi, au signe près, les valeurs des variables duales yj, comme on le verra plus loin). Si l'on trouve à l’optimum des variables naturelles dans la fonction économique, leur coefficient sera un coût de substitution. Nous voyons ainsi apparaître des quantités donnant une idée de l'évolution de la solution du problème en fonction des petites variations des données. Ces quantités sont liées à une autre approche de notre problème, moins immédiate que l'approche géométrique, ou primale, utilisée jusqu'à présent. Après avoir traité le problème primal, nous allons donc introduire le problème dual associé: max c x Ax≤b x≥0 min y b yA≥c y≥0 …où le vecteur ligne y a pour composantes les variables duales yi (i=1,m). NB. Ici les deux problèmes sont exprimés sous forme canonique (inégalités). Le problème dual peut t t t encore s'écrire sous la forme A y ≥ c . 6.4.2. Interprétation économique Si l’interprétation "physique" du problème primal est évidente, celle du problème dual l’est moins. Une approche intéressante peut être de raisonner en termes d'unités physiques pour déterminer la signification des variables duales. On utilisera là le concept d'équation aux dimensions, employé en physique pour vérifier la cohérence des termes d'une équation, ramenés à des masses M, des longueurs L, et des temps T. Dans la formulation primale exposée plus haut, les variables xj correspondent à des quantités d'objets produits (sortie j), et la fonction économique z à une valeur . L'équation aux dimensions de la fonction économique nous donne immédiatement la signification des coefficients cj de la fonction économique Z = c x, qui correspondent à la valeur unitaire (valeur / sortie j) de ces objets: n valeur ∑ ( sortie j =1 )( sortie j ) = (valeur ) j Yves Correc 25/11/2007 6–3 comme cela ressort immédiatement de l'équation aux dimensions des contraintes: n entréei ∑ ( sortie j =1 )( sortie j ) ≤ (entréei ) pour (i=1. ce qui nous donne de la même manière la signification des coefficients aij de la matrice: C'est la quantité de la ressource i nécessaire à la fabrication d'une unité du produit j. on observe que le second membre correspond à une limitation des ressources utilisées. combien de chaque produit (xj) doit-on fabriquer pour maximiser la valeur totale des produits réalisés ? Pb Dual : …minimiser le coût de production Etant donné la disponibilité de chaque ressource (bi) et une borne inférieure à la valeur unitaire (cj) de chaque produit vendu. entrée = ressource.n) On peut alors voir que les contraintes duales seront consistantes si les variable duales yi sont ( exprimées en termes de valeur ) .m) Une description verbale des deux problèmes peut alors être la suivante: Pb Primal : …maximiser le chiffre des ventes Etant donné la valeur unitaire (cj) de chaque produit (cela peut être un bénéfice) et une borne supérieure à la disponibilité de chaque ressource (bi). quelles devront être les valeurs unitaires yi des ressources pour minimiser la valeur totale des ressources utilisées ? NB.m) j Voyons maintenant le problème dual qui consiste. entréei Il en résulte finalement que le problème dual consiste à minimiser W qui est une valeur: m valeur ∑ ( entrée )(entrée ) = (valeur ) i i =1 i sous les contraintes: m entréei ∑ ( sortie i =1 j )( valeur valeur )≥( ) entréei sortie j valeur ( )≥0 entréei pour (j=1. matière première utilisée par le processus étudié. à savoir un rapport (entrée i / sortie j). à minimiser le produit scalaire W = y b. où les bi sont les ressources (entrée i) utlisées dans la fabrication des produits: m ∑ y (entrée ) = ? i =1 i i t sous des contraintes où l'on sait interpréter les a ij ainsi que les cj: m entréei ∑ ( sortie i =1 ) yi ≥ ( j valeur ) avec yi ≥ 0 sortie j pour (j=1. en entrée sortie = produit fabriqué issu du processus. des matières premières consommées en entrée (entrée i). en sortie Yves Correc 25/11/2007 6–4 .n) pour (i=1. c'est à dire de la valeur unitaire des ressources i.Recherche Opérationnelle – Programmation linéaire : dualité Pour les contraintes. en jouant sur les variables duales yi. Le problème du fabricant. Le prix des aliments (cents/kg) et leur contenu en vitamines (unités/kg) est donné dans le tableau suivant: Aliments 1 2 3 4 5 6 Minimum vitamines Contenu en vitamine A 1 0 2 2 1 2 9 Contenu en vitamine C 0 1 3 1 3 2 19 Coût des aliments 35 30 60 50 27 22 Si l'on suppose que le régime cherché comporte yj consommateur diététicien amateur s'écrit: Min kg de chaque aliment. il doit proposer les pilules à un prix inférieur à celui des aliments nécessaires pour arriver au même résultat. est donc le suivant: max 9x1+19x2 = z x1 x2 2 x1 + 3 x2 2 x 1 + x2 x1 + 3 x2 2 x1 + 2 x2 Yves Correc 25/11/2007 ≤ ≤ ≤ ≤ ≤ ≤ sous les contraintes: 35 30 60 50 27 22 avec les xi ≥ 0 (i=1. par exemple le numéro 5: Un kilogramme de n° 5 contient 1 unité de vitamine A et 3 unités de vitamine C.m) Dans ces conditions. le fabricant cherchera à maximiser son profit. soit 9 x1 + 19 x2 . Sachant qu’un kilogramme de n° 5 coûte 27 cents au consommateur. Considérons maintenant un aliment.Recherche Opérationnelle – Programmation linéaire : dualité Un couple primal-dual : Le problème du régime.n) 6–5 . fabricant de pilules. Cette interprétation économique va être illustrée par le problème du régime. Ce raisonnement n'est évidemment valable que si l'on suppose le consommateur uniquement préoccupé d'économie et de diététique. et non de gastronomie… En fait cet exemple est extrait d'un livre américain ! Soit alors x1 et x2 le prix des vitamines A et C en pilules (en cents/unité). de valeur x1+3x2 pour le fabricant. le problème du 35 y1 + 30 y2 + 60 y3 + 50 y4 + 27 y5 + 22 y6 = w y1 + 2 y3 + 2 y4 + y5 + 2 y6 ≥ 9 y2 + 3 y3 + y4 + 3 y5 + 2 y6 ≥ 19 sous les contraintes: avec les yj ≥ 0 (j=1. de manière à absorber au moins 9 unités de vitamine A et 19 unités de vitamine C par unité de temps. Minimisation du coût de l’alimentation (pb du consommateur) Maximisation du profit (pb du fabricant de pilules vitaminées) Un consommateur essaie de se constituer un régime diététique de coût minimal à partir de 6 aliments de base (numérotés de 1 à 6). NB. c'est à dire ici son prix de vente. Mais pour le convaincre. le fabricant n'aura de chances de le convaincre que si ses prix vérifient la contrainte x1+3x2 ≤ 27 . Il en sera de même pour les autres aliments… Et sous ces contraintes. où l'on considérera les deux points de vue duaux du consommateur et du fabricant. s’attaque au marché en proposant au consommateur des pilules contenant les vitamines. un industriel de la pharmacie. dual de celui du consommateur. x6 > 0 y1 = y2= y3 = y4 = 0 (le consommateur d'aliments de type 1. x1=3 et x2=8. 4. Revenons aux variables xi solutions du problème complémentaire du consommateur. y6 = 2 n'achète pas pour un coût de 179 Moyennant quoi l'interprétation du couple primal-dual devient claire si l'on se réfère au schéma du paragraphe suivant. x4. on peut aussi bien considérer le problème du fabricant comme le primal. dont les valeurs nous seront fournies par le tableau de correspondance du paragraphe suivant (6. Yves Correc 25/11/2007 6–6 . comme le dual… Les deux problèmes sont équivalents et constituent une paire primal-dual (le dual du dual est le primal…)… On remarquera seulement que le problème de minimisation n'admet pas ici de solution de base réalisable. le plus facile car il revêt la forme d'un primal sans souci particulier (maximisation d'un bénéfice sous des contraintes ≤). 2. >0 écarts y7 = y8 = 0 (la consommation de vitamines à l'optimum pour le consommateur est exactement le minimum nécessaire. ce qui nous ennuie un peu. comme on va le voir.Recherche Opérationnelle – Programmation linéaire : dualité Si l'on prend les définitions du début de ce chapitre au pied de la lettre. pour un chiffre des ventes de 179 cents. 3. car les pilules équivalentes sont moins chères) écarts x7 = x8 = 0 y5 = 5. x5. Nous allons donc résoudre le problème du fabricant de pilules. Les variables d'écart x3. à savoir 9 et 19 unités) écarts x3.3). Il est est égal pour les deux derniers (variables d'écart x7 et x8 nulles): ce sont justement ceux qui donnent le plus bas prix pour le consommateur. x6 sont positives. x5. x4.4. et celui du consommateur qui veut se passer des pilules vitaminées en consommant des aliments naturels. Les tableaux de Tucker associés sont les suivants: x1 x2 b x3 1 0 35 x4 0 1 x5 2 x6 x1 x7 b x3 1 0 35 30 x4 -1/3 -1/3 21 3 60 x5 1 -1 33 2 1 50 x6 5/3 -1/3 41 x7 1 3 27 x2 1/3 1/3 9 x8 2 2 22 x8 4/3 -2/3 4 c 9 19 0 c 8/3 -19/3 -171 ↑ ↑ x8 x7 b x3 -3/4 1/2 32 x4 1/4 -1/2 22 x5 -3/4 -1/2 30 x6 -5/4 1/2 36 x2 -1/4 3 8 x1 3/4 -1/2 3 c -2 -5 -179 OPTIMUM La solution trouvée nous donne un prix de vente respectif de 3 et 8 cents/unité pour les pilules de vitamines A et C. ce qui signifie que le prix des pilules équivalentes aux 4 premiers aliments est sensiblement plus intéressant que celui des aliments naturels. Tout d'abord le Théorème de dualité faible nous dit que si x est une solution admissible du problème primal. Tandis que la résolution du dual partira d'une solution primal-optimale (la fonction économique atteint la meilleure valeur possible) mais non primal-admissible (cette valeur est hélas obtenue en dehors du domaine admissible défini par les contraintes inégalités du primal). En effet x ≥ 0 et c ≤ y A entrainent c x ≤ (y A) x. que l'on cherche à minimiser. vérifiant les contraintes) mais non primal-optimale (on peut gagner sur la fonction économique) pour tenter de l'améliorer (par l'algorithme primal de Dantzig vu plus haut) jusqu'à la solution optimale. t t t Ces deux problèmes liés possèdent quelques propriétés intéressantes qui nous seront utiles. En pratique. alors c x ≤ y b . On démontre de même le Théorème de dualité forte. ou bien Un problème dual de minimisation de y b sous contraintes A y ≥ c . tandis que y ≥ 0 et A x ≤ b entrainent y (A x) ≤ y b .4. Cette propriété peut se visualiser en observant que l'optimum unique du couple primal-dual est point selle de la surface (en forme de selle de cheval: on maximise en x et on minimise en y) sur laquelle s'opère le cheminement de l'optimisation: la solution est d'après ce qui précède le plus petit maximum admissible susceptible d'être construit (min max). Toute autre solution recherchée en se déplaçant dans la direction des y n'est pas optimale et fait remonter sa dépense w. Il en résulte que les valeurs de la fonction économique du primal. 6. Problème dual du simplexe Nous allons donc pouvoir considérer tout problème d'optimisation linéaire (donné sous forme canonique. et tous les autres yi nuls. Yves Correc 25/11/2007 6–7 . et y une solution admissible du problème dual. d'une part. ou bien le plus grand minimum. d'autre part. que l'on cherche à maximiser.3. la résolution du primal part d'une solution primal-admissible (c'est-à-dire réalisable. alors son dual possède aussi une solution optimale y* et la valeur de cette solution est w* = y* b = z* . qui nous dit que si un programme linéaire possède une solution optimale x* de valeur z* = c x*. d'inégalités) sous deux angles: Un problème primal de maximisation de c x sous contraintes A x ≤ b. sont toujours majorées par celles de la fonction économique du dual.Recherche Opérationnelle – Programmation linéaire : dualité Problème dual: Le consommateur minimise sa dépense pour y5=5 et y6=2 (aliments 5 et 6). où les deux solutions sont équivalents au point de vue prix pour le consommateur. Problème primal: Le fabricant de pilules maximise son bénéfice pour des prix de vente x1=3 et x2=8. pour décroître jusqu'à nous permettre de rentrer dans le domaine en restant malgré tout optimale (on va donc essayer de perdre le moins possible dans ce cheminement). Notons qu'une augmentation sauvage des prix de vente ferait sortir du domaine admissible défini par les contraintes "les vitamines en pilules ne doivent pas être plus chères que les vitamines issues des aliments naturels". Toute autre solution recherchée en se déplaçant dans la direction des x n'est pas optimale et fait descendre son bénéfice z. La solution unique et commune au couple de problèmes primal-dual (qui ne sont en réalité que les deux facettes d'un même problème) est donc représentée par le point selle de la figure. et à l'optimum Zmax. De même les coefficients des variables naturelles xj dans la fonction économique à l'optimum sont les coûts de substitution. le coefficient de ei (coût marginal) dans la fonction économique à l'optimum (sauf cas de dégénérescence).n Ce qui peut être interprété en termes de relations entre les variables naturelles et d'écart xj du problème primal. A ce stade. et leurs homologues yi du problème dual: Relation entre variables et contraintes • • Si une contrainte n'est pas saturée (xn+i = ei ≠ 0) la variable duale yi associée à cette contrainte est nulle. Yves Correc 25/11/2007 6–8 .. = W min.m et xj (Σ i yi aij .. le théorème des écarts complémentaires va nous aider à préciser les relations entre les variables des deux problèmes. et a pour valeur au signe près.Σ j aij xj) = 0 pour i=1.Recherche Opérationnelle – Programmation linéaire : dualité Admissible Non optimale PRIMAL Admissible Optimale DUAL Non admissible Optimale z.w (fonction économique) point selle min max y (variables duales) x (variables primales) Problème primal max c x Ax≤b x≥0 n variables naturelles x(j) m variables d'écart x(n+i) : contraintes bi Problème dual min y b yA≥c y≥0 m variables duales y(i) n variables d'écart y(m+j) : contraintes cj Le théorème de dualité forte nous permet en outre d'établir les relations possibles entre les solutions d'une paire de programmes linéaires duaux: Existence des solutions • • • Ou bien les deux problèmes n'ont pas de solution Ou bien l'un n'a pas de solution et l'autre n'a pas de solution finie Ou bien les deux problèmes ont une solution. Si une contrainte est saturée (xn+i = ei = 0) la variable duale associée yi est ≠ 0.….….cj) = 0 pour j=1. Il nous dit en effet que des solutions admissibles x et y (des problèmes primal et dual sous forme canonique) sont optimales si et seulement si: yi (bi . tandis qu'une solution primal-optimale (c≤0) est dual-admissible. duale y i = -Cn+I On peut encore préciser la correspondance entre primal et dual en remarquant qu'une solution primaladmissible (b≥0) est dual-optimale.Recherche Opérationnelle – Programmation linéaire : dualité On peut alors résumer ci-dessous de manière synthétique l'interprétation du tableau de Tucker obtenu à l'optimum: xj ei = xn+i Variables hors base Solution primale: Variable primale x j > 0 Ecart dual ym+j = 0 xj Variables en base Variable d'écart > 0 Contrainte non saturée Variable duale y i = 0 e i = xn+i Fonction économique c Second membre b Variable primale nulle Coût de substitution Cj écart dual ym+j = -Cj Variable d'écart nulle contrainte saturée coût marginal Cn+i Var. Yves Correc 25/11/2007 6–9 . 60 -4 x1 – 2 x2 ≤ -120 -6 x1 – 2 x2 ≤ -150 Ce problème est peu sympathique car il n'admet pas de solution de départ évidente (pas de solution de départ primal-admissible car les composantes du second membre sont négatives).300 x2 . La méthode que nous allons employer consiste en fait à traiter le problème dual en utilisant l'algorithme de Dantzig.4. quand le traitement direct du primal pose des problèmes. Rappelons que celui-ci formalise le cheminement sur les arêtes du polyèdre du domaine primal-admissible. en recherchant t (1) une direction de maximisation réalisant (max -b ≥ 0 ?) dans laquelle on pourra effectuer t t t t (2) un déplacement minimal réalisant (min -c / -a ij ? pour -a ij>0) t t t ou encore (min c / a ij ? pour a ij<0) puis on pivote.4. Algorithme dual du simplexe La notion de dualité va avoir l'intérêt de fournir une autre approche du problème.200 x1 . en choisissant successivement une direction de déplacement (qui maximise la fonction économique: on cherche à devenir primal-optimal) et un pas de déplacement (qui nous fasse rester sur la frontière du domaine: on cherche à rester primal-admissible): C'est à dire que l'on part d'une solution admissible du dual (-c ≥ 0). etc… t dual y1 y2 y3 -c y4 1 4 6 200 y5 2 2 2 300 60 120 150 0 -b t max↑ ↑ (2) (1) A quoi cela correspond-il dans le tableau primal? Yves Correc 25/11/2007 6–10 .x1 – 2 x2 ≤ .Recherche Opérationnelle – Programmation linéaire : dualité 6. Nous allons illustrer la démarche sur un exemple: Min 200 x1 + 300 x2 x1 + 2 x2 ≥ 60 4 x1 + 2 x2 ≥ 120 6 x1 + 2 x2 ≥ 150 (xj≥0) sous les contraintes: Soit encore. Ce cas peut se présenter quand il n'y a pas de solution de départ triviale qui soit primal-admissible (ie l'origine n'est pas dans le domaine). Le dual de ce problème sous sa première formulation s'écrit après quelques opérations: Max 60 y1 + 120 y2 + 150 y3 y1 + 4 y2 + 6 y3 ≤ 200 2 y1 + 2 y2 + 2 y3 ≤ 300 (yi≥0) c'est à dire (max –b y / -A y≤-c ) t t t Nous allons donc lui appliquer l'algorithme primal bien connu. nous allons en fait adapter l'algorithme pour travailler directement sur le tableau du primal. Mais au lieu de travailler sur le tableau transposé. on décide de modifier quelque peu les données. ou bien quand après avoir trouvé un premier optimum primal au moyen de l'algorithme de Dantzig. mis sous forme primale canonique (max cx / Ax≤b): Max . tandis que le second va conserver la primal-optimalité. Yves Correc 25/11/2007 6–11 . mais pas primal-admissible (car il existe des bi ≤ 0). On choisit pour ligne pivot celle du bi le plus négatif (le plus "inadmissible"). car alors – (cj / aij) > – ( ck / aik) entraîne que et même si aik < 0 – (cj / aij) aik < – ck soit ck – (cj / aij) aik < 0 Le premier critère a pour effet de gagner en primal-admissibilité. Puis on choisit la colonne pivot suivant deux critères: • • pivot négatif rapport minimal aij ≤ 0 . Le choix du pivot dans l'algorithme dual sera par conséquent décalqué.cj / aij …qui va rester négatif (primal-optimal pour la maximisation) car aij ≤ 0 et cj ≤ 0 • Autres coefficients ck de la ligne c: après pivotage. mais où il existe des bi≤0.cj / aij = maxk (. le terme cj ≤ 0 devient . Ce choix va par conséquent nécessiter les étapes suivantes: (1) rechercher le bi le plus négatif (max –b≥0 équivaut à min b≤0) (c'est à dire que l'on s'attaque à la contrainte la moins satisfaisante) (2) dans cette ligne i. Pour cela on part (cas d'une maximisation) d'un tableau où l'on a tous les cj≤0. le terme bi ≤ 0 devient (bi / aij) …qui va devenir positif (primal-admissible) si aij ≤ 0 • Colonne pivot j: après pivotage.ck / aik ) avec aik ≤ 0 et ck ≤ 0 Cela se justifie en examinant l'effet (dans le présent cas de maximisation) du pivotage qui va suivre: • Ligne pivot i: après pivotage. c'est à dire en préservant le signe des cj lors des transformations.Recherche Opérationnelle – Programmation linéaire : dualité Le point de départ est dual-admissible. dans le tableau primal originel. c'est à dire pas dual-optimal. c'est à dire primal-optimal (ici c≥0 pour une minimisation). On peut d'ailleurs le récrire sous une forme plus générale en recherchant le minimum des | ck / aik | pour aik ≤ 0 et (ck ≤ 0 si maximisation ou ck ≥ 0 si minimisation). le terme ck ≤ 0 devient ck – (cj / aij) aik …qui reste négatif si aik ≥ 0. choisir le pivot dans la colonne réalisant min ( cj/aij ) pour aij<0 et cj ≤ 0 primal x1 x2 b x3 -1 -2 -60 x4 -4 -2 -120 x5 -6 -2 -150 c -200 -300 0 max↑ ↑ (2) (1) L'algorithme dual du simplexe va donc partir d'une base dual-admissible (ie primal-optimale: c≤0 pour une maximisation. ou c≥0 pour une minimisation). pour arriver à la primal-admissibilité tout en restant primal-optimal. de l'application de l'algorithme primal au tableau dual que nous venons de voir. A b c 0 xn+m (1) Choix de la contrainte traitée = Choix de la variable xi sortant de la base Trouver i qui réalise min bi (avec bi≤0) S'il n'existe pas de variable sortante.Recherche Opérationnelle – Programmation linéaire : dualité En résumé.. (3) Déplacement = Nouvelle solution = Nouvelle base = Pivotage de Gauss Permuter xi et xj (xi sort de la base et xj entre en base) et transformer le tableau par pivotage de Gauss (pivot aij). la mise en œuvre de l'algorithme dual du simplexe va se dérouler en quatre étapes: (0) Initialisation: solution de départ dual-admissible (ci≤ 0 si max) ou (ci ≥ 0 si min) ∀i Tableau réduit (de Tucker) de départ x1 ……………………. alors l'optimum est atteint (2) Choix de la direction de déplacement = Choix de la variable xj entrant en base Trouver j qui réalise min | cj / aij | pour aij ≤ 0 et (cj ≤ 0 si max ou cj ≥ 0 si min) S'il n'existe pas de variable entrante.xn xn+1 . alors le dual a une solution infinie et le primal n'a pas de solution admissible. ……. . Yves Correc 25/11/2007 6–12 . Ne pouvant jouer sur le vecteur c. Mais on ne dispose pas au départ d'un tableau dual-admissible (ie d'une solution primal-optimale.5. sous la forme d'une ligne M rajoutée au bas du tableau. pour éviter de recourir aux variables artificielles dans l'algorithme primal. de tous les cj). et pour cet objectif artificiel la fonction nulle (c=0) fera parfaitement l'affaire.4.2 x2 ≤ 2 x1 + x2 ≤ 5 x1 x2 b x3 -2 1 -2 x4 1 -2 2 x5 1 1 5 C 1 -1 0 M 0 0 0 ← min bi < 0 On est parfois amené dans ce cas à faire appel à la règle de Bland pour le choix de la colonne. Nous atteindrons de la sorte une solution primal-admissible. ou bien directement la solution optimale (sauf incident en cours de route…). Nous devrons alors modifier temporairement les données afin de rendre dual-admissible la base initiale.4. à partir de laquelle nous terminerons l'optimisation au moyen de l'algorithme primal (phase II). Notons que son aspect dégénéré nécessitera de recourir à la règle de Bland. Exemple (traitement dual du 5.2 x1 . nous commencerons à travailler avec une fonction économique ad hoc provisoire. caractérisée par la positivité ou la négativité. suivant le sens de l'optimisation. x3 x2 b x1 -1/2 -1/2 1 Tous les bi > 0 x4 1/2 -3/2 1 On est primal-admissible x5 1/2 3/2 4 On abandonne la ligne M C 1/2 -1/2 -1 et on continue en primal x4 x2 b x1 1 -2 2 x3 2 -3 x5 -1 C -1 ↑ x4 x5 b x1 1/3 2/3 4 2 x3 1 1 5 3 3 x2 -1/3 1/3 1 1 -2 C -2/3 -1/3 -3 ↑ Yves Correc 25/11/2007 OPTIMUM 6–13 . Difficultés diverses L'application de l'algorithme dual est souvent envisagée au démarrage quand l'origine n'est pas dans le domaine admissible (pas de solution de départ primal-admissible ie dual-optimale).1) max x1 – x2 -2 x1 + x2 ≤ . Ce n'est pas le cas ici car on a un seul aij<0.Recherche Opérationnelle – Programmation linéaire : dualité 6. et la machine FIR 70 heures. x5 = 0. mais va nous permettre d'abandonner la forme linéaire provisoire au second tableau (tous les bi deviennent positifs). les temps nécessaires aux machines outils "fabrication" (FAB) et "finition-réglage" (FIR) pour traiter un appareil diffèrent sensiblement sur chaque chaine. des appareils électroniques. (1) La demande étant de 30 appareils par mois au moins. La machine FAB est disponible 60 heures par mois. x6 = 30 Pour aller au point A: x1 = 0. x4 = 70. ainsi que la colonne de la variable artificielle. on prend donc la valeur la plus négative sur la ligne M Le choix qui a été fait ne suit pas la règle de Bland qui aurait donné pour solution suivante le point E (x2 et x3 hors base). x3 = 0 (FAB saturée).Recherche Opérationnelle – Programmation linéaire : dualité Exercice (problème de fabrication) Une usine produit. L'élaboration d'un appareil sur la chaine 1 nécessite 3 heures de FAB et 1 heure de FIR. tandis que la 2 chaine le produit pour 60KF avec 1 heure de FAB et 2 heures de FIR. avec des prix de revient eux aussi sensiblement différents. En raison de différences importantes dans les procédés de fabrication. nous démarrerons donc avec une variable artificielle x6. x4 = 25 (reste 25h FIR). qui nous permet de -x1 . sur deux chaines. x6 = 0 Et finir à l'optimum B: x1 = 15. encore non admissible (b1<0). et conduit ainsi au tableau final ci-contre: x3 x5 b x1 1/2 1/2 15 x4 1/2 5/2 25 x2 -1/2 -3/2 15 C 20 80 -1200 Le cheminement suivi lors de cette optimisation part de l'origine O: x1 = x2 = x5 = 0. x3 = 30. pour un prix ème de revient unitaire de 20KF.x2 + x5 = -30 x1 + x2 . x5 = 0 (demande saturée) Yves Correc 25/11/2007 6–14 . Solution La fonction économique est La contrainte FAB est La contrainte FIR est La contrainte "ventes" est 20 x1 + 60 x2 x2 ≤ 60 3 x1 + x1 + 2 x2 ≤ 70 x1 + x2 ≥ 30 à minimiser On voit tout de suite qu'il n'y a pas de solution de départ évidente (la troisième contrainte exclut l'origine du domaine admissible). x2 = 15. x4 = 10. x3 = 60. x2 = 30. Dans un premier temps.x5 + x6 = 30 récrire la contrainte: x1 + x2 ≥ 30 Ce qui nous donne le problème primal (sous forme standard): 20x1 + 60x2 3x1 + x2 + x3 = 60 x1 + 2x2 + x4 = 70 x1 + x2 – x5 + x6 = 30 Min et conduit aux tableaux de Tucker suivants: x1 x2 x5 b x1 x6 x5 b x3 3 1 0 60 x3 2 -1 1 30 x4 1 2 0 70 x4 -1 -2 2 10 x6 1 1 -1 30 x2 1 1 -1 30 C 20 60 0 0 C -40 -60 60 -1800 M 0 1 0 0 M -1 -1 1 -30 La ligne M est la recopie au signe près de la contrainte car ici l'on cherche à minimiser ! Pour la recherche du pivot. déterminer le plan de production de coût minimal. combien fabriquer de chaque produit pour minimiser le coût total ? Min 60 y1 + 70 y2 .30 Etant donné la valeur (prix de revient) unitaire de chaque produit (20.x1 x2 ≤ .70 y2 + 30 y3 y3 ≥ . 60).30 y3 Dual: y2 3 y1 + y1 + 2 y2 - Max -60 y1 .60 . -30).3 y1 .2 y2 + y3 ≤ 60 ou encore Etant donné la disponibilité de chaque ressource (60. -30) et une borne supérieure au prix de revient (valeur) de chaque produit fini (20.20 y3 ≥ .Recherche Opérationnelle – Programmation linéaire : dualité x1=0 D gradient C A B E O x2=0 F x3=0 x5=0 x4=0 Interprétation: Primal: Min 20 x1 + 60 x2 x2 ≤ 60 3 x1 + x1 + 2 x2 ≤ 70 x1 + x2 ≥ 30 ou encore Max . 70. nous pouvons aussi traiter le problème dual au moyen de l'algorithme primal: t y1 y2 y3 -C y4 -3 -1 1 20 y5 -1 -2 1 60 -b t Max -60 -70 30 ↑ Yves Correc 25/11/2007 0 t y2 y4 -C y3 -3 -1 1 20 y3 3/2 -5/2 -1/2 80 y5 2 -1 -1 40 y1 1/2 -1/2 -1/2 20 t -15 -25 -b t 30 ↑ -40 -30 -600 y5 -b y2 y4 -C t y1 -15 -1200 OPTIMUM 6–15 . quelles valeurs unitaires devront être affectées aux ressources pour minimiser la valeur totale des ressources utilisées? Autres approches: Comme il s'y prête.y1 . 70. 60) et une borne supérieure à la disponibilité des ressources (60.60 x2 3 x1 + x2 ≤ 60 x1 + 2 x2 ≤ 70 .y2 + y3 ≤ 20 .20 x1 . 6. rien ne permet d'affirmer qu'avec un tel taux (une telle valeur de la variable) le problème resterait le même.Recherche Opérationnelle – Programmation linéaire : dualité Nous pouvons aussi utiliser l'algorithme dual pour le démarrage du primal (canonique): Min 20 x1 + 60 x2 x2 ≤ 60 3 x1 + x1 + 2 x2 ≤ 70 . Yves Correc 25/11/2007 6–16 . le tableau final s’écrit : x6 x2 x5 b x4 -1/3 0 -1/3 44/3 x3 0 1/2 1/2 30 x1 1/3 1/2 -1/6 10/3 C -1/2 -1/20 -1/4 -35 La variable x2 (quantité de mélange n°2 produite) est principale et n'appartient pas à la solution de base optimale.x2 ≤ -30 x1 x2 b x3 3 1 60 x4 1 2 70 x5 -1 -1 -30 C 20 60 ← 0 dual x5 x2 b x5 x3 b x3 3 -2 -30 x2 -3/2 -1/2 15 x4 1 1 40 x4 5/2 1/2 25 x1 -1 1 30 x1 1/2 1/2 15 C 20 40 C 80 20 OPTIMUM ← -600 dual -1200 Cette fois le cheminement suivi (en orange sur la figure) au départ de l'origine (O) passe par le point F (x2= 0 et x5=0) avant de rentrer dans le domaine directement à l'optimum (point B). Bien sûr.x1 . Par contre dans le problème des mélanges de cafés. ou aurait seulement une solution. 6. x1 et x2 étant en base et ≠ 0). il n’y a pas de coût de substitution.4. Dans le problème primal de fabrication par exemple. Coûts de substitution On appelle coût de substitution le coût associé à une variable naturelle qui apparaît dans la fonction économique à l’optimum (elle est donc nulle à l'optimum). Cependant ce critère permet dans une certaine mesure de juger de l'importance relative d'une activité du modèle. La fonction économique a pour expression à l'optimum: Z − 35 = − x6 x 2 x5 − − 2 20 4 ème activité du modèle) est nulle à l'optimum. et l'y introduire de force La variable x2 (taux de la 2 conduirait à se pénaliser de 1/20 par unité de x2 utilisée (c'est à dire ici 1/20 K$ par Klb substituée à autre chose dans la solution…). Cela revient à donner à x3 la valeur -1. Nous pouvons alors observer.4. Si l'on note x3. ce qui laisse espérer la possibilité d'améliorer la fonction économique. qui trouve justement son optimum à cet endroit (point B). Inversement. x3=1. Coûts marginaux Revenons au problème primal de l'exercice précédent. Nous avons en effet à l'optimum z – z* = Σj cj* Xj où c* est la dernière ligne du tableau. soit 20KF de moins sur le coût (que l'on cherche à minimiser). ce raisonnement (appelé marginaliste) donne uniquement l'ordre de grandeur du gain ou de la perte susceptibles d'être ainsi réalisés. On voit alors que le domaine admissible va s'agrandir vers la droite avec le déplacement de sa frontière orientale. quand on perturbe le second membre b. Cette question trouvera une réponse avec les techniques de postoptimisation du chapitre suivant (paramétrage du second membre). ie les contraintes correspondantes sont saturées à l'optimum.ce* (ce* coût marginal) Les contraintes du problème originel s'écrivent Xe + Σj aij Xj = bi ∂Xe / ∂bi = 1 D'où l'on tire évidemment On en déduit le résultat cherché: ∂z* / ∂bi = (∂z* / ∂Xe)( ∂Xe / ∂bi) = . La question posée est celle de la minimisation d'un coût sous contraintes de disponibilité de ressources. d'après le théorème de dualité forte. Supposons que l’on dispose d'une heure supplémentaire: Le second membre prend la valeur 61.7.x3 (3x1 + x2 ≤ 60 heures) Si l'on augmente le nombre d’heures disponibles en fabrication.3/2 x5 = 15 20 x3 + 80 x5 = z – 1200 Minimum Les variables d'écart x3 et x5 sont nulles. ce problème s'écrit à l'optimum: x1 + ½ x3 + ½ x5 = 15 x4 + ½ x3 + 5/2 x5 = 25 x2 . x4. En pratique. sur l'axe (x1 = 0). Ce qui pour une variable d'écart Xe nous donnera ∂z* / ∂Xe = . et par suite améliorer encore la valeur de la fonction économique. On appelle coût marginal le coût associé à une variable d'écart dans la fonction économique à l'optimum. et l'expression de la fonction économique à l’optimum suggère que l’on peut espérer un gain de 20 fois (-1). si l’on ne dispose plus que de 59 heures sur FAB. Bien sûr. Soit encore à déplacer "vers le nord-est" cette droite (x3 = 0).ce* On voit ainsi que les petites variations de la fonction économique autour de l'optimum. La première contrainte s'écrit dans le problème originel: 3x1 + x2 = 60 .½ x3 . et l'on risque de dégrader le coût qui augmente de 20KF (moins optimal dans un domaine ainsi légèrement rétréci). mais n’indique pas si et jusqu’à quel point cela peut se réaliser. On montre qu’il y a identité au signe près entre les variables duales et les coûts marginaux. on peut espérer débloquer cette contrainte.Recherche Opérationnelle – Programmation linéaire : dualité 6. l'intersection de celui-ci avec la droite correspondant à cette contrainte (x3 = 0). x5 les variables d'écart. augmenter le second membre conduira ici à faire glisser vers le haut. qu'à l'optimum: z* = Σj cj xj* = Σi yi* bi = w* ce qui nous donne par dérivation ∂z* / ∂bi = yi* Yves Correc 25/11/2007 6–17 . sont proportionnelles au signe près aux coûts marginaux. des valeurs de croissance (2) un rendement de 8 %. et à 30000 $ au plus la somme des placements 2 et 3 (croissance et haut risque).Recherche Opérationnelle – Programmation linéaire : dualité Exercice Un investisseur souhaite placer une somme de 50000 $ en actions. exprimées en K$ pour éviter d'encombrer les tableaux de calcul. sachant que notre investisseur souhaite prudemment limiter à 25000 $ au plus le placement 3 (haut risque). (2) Peut-on avoir une idée des conséquences d'une éventuelle évolution de ces plafonds? Solution Nous allons prendre pour variables les placements à réaliser en valeurs sûres (x1). de croissance (x2). et 25 K$ dans les placements proposés. La résolution de ce programme linéaire se fait sans problèmes en quatre tableaux: x1 x2 x3 b x4 1 1 1 50 x5 0 1 1 x6 0 0 c 5 8 x1 x2 x6 b x4 1 1 -1 25 30 x5 0 1 -1 5 1 25 x3 0 0 1 25 16 0 c 5 8 -16 -400 ↑ ↑ x1 x5 x6 b x4 1 -1 0 20 x2 0 1 -1 x3 0 0 c 5 -8 ↑ x4 x5 x6 b x1 1 -1 0 20 5 x2 0 1 -1 5 1 25 x3 0 0 1 25 -8 -440 c -5 -3 -8 -540 Optimum La solution optimale consiste à investir respectivement 20 k$. (1) Déterminer le placement maximisant le rapport annuel. tandis que des valeurs spéculatives à haut risque (3) atteignent 16 %. soit: Z = 5 x1 + 8 x2 + 16 x3 à maximiser sous les contraintes: x1 + x2 + x3 ≤ 50 (k$) x2 + x3 ≤ 30 x3 ≤ 25 avec bien sûr x1. Trois catégories d'actions sont envisageables : Des valeurs sûres (1) donnent un rendement de 5 %. La fonction économique sera le rapport associé (à un facteur multiplicatif 100 près pour la même raison). 5 K$. Les coûts marginaux s'interprètent immédiatement: Augmenter b1 (capital investi) d'un K$ augmentera le rapport global de 5 x 1000 / 100 = 50 $ (5% d'un K$). Augmenter le plafond (2+3) d'un K$ augmentera le rapport global de 30 $. x2. Augmenter le plafond (3) d'un K$ augmentera le rapport global de 80 $. pour un rapport global de 540 x 1000 / 100 = 5400 $. et spéculatives (x3). x3 ≥ 0. Yves Correc 25/11/2007 6–18 . POST-OPTIMISATION 6. sont inchangés. Yves Correc 25/11/2007 6–19 . La figure qui suit l'illustre en visualisant l'effet d'une augmentation de la première composante de b (relaxation de la contrainte FAB par augmentation du nombre d'heures disponibles): la droite se translate vers la droite.1. qui apparaissent dans la matrice A. Que devient le problème lorsque l'on effectue une telle transformation? Examinons pour commencer ce qui se passe géométriquement: Les coefficients de la fonction économique ne changent pas. Le domaine se déforme homothétiquement dans un premier temps. Le point optimal précédemment atteint. tandis que les cosinus directeurs. la direction d'optimisation non plus. les composantes de b correspondent à l'ordonnée des points d'intersection des droites de contraintes avec l'axe des y. tandis que son intersection avec la droite associée à la troisième contrainte se déplace de B en B1 puis en B2. puis change de forme en devenant AB1B2C1D… x1=0 x3=0 x3=0 D x5=0 C A C1 B C2 gradient O x4=0 B1 B2 x2=0 Que devient alors la solution du problème d'optimisation qui nous préoccupe? L'examen de la figure nous fait suspecter qu'elle va dans un premier temps de déplacer B en B1.5. à l'intersection de deux des droites de contraintes.Recherche Opérationnelle – Programmation linéaire : dualité 6. avec une éventuelle évolution du nombre des facettes. en raison de l'orientation constante du vecteur gradient de la fonction économique. Faire varier les bi reviendra donc à translater ces droites dans le plan tout en conservant leur direction. En dimension 2.5. mais qu'elle n'en bougera plus si la droite continue son déplacement. et bθ=b' pour θ=1). qui sera restreint ou agrandi. Paramétrage du second membre Paramétrer le second membre revient à le faire varier linéairement en fonction d'un paramètre θ entre deux extrema b et b'. L'effet prévisible sera donc une déformation du domaine admissible. va donc le rester mais se déplacer pour suivre leur évolution. c'est à dire à tenter de résoudre le problème d'optimisation associé au second membre bθ = b + θ (b' . C'est ce déplacement qu'il va falloir calculer.b) avec 0 ≤ θ ≤ 1 (bθ=b pour θ=0. le polyèdre ABCD devenant AB1C1D. en vérifiant que des soucis nouveaux n'apparaissent pas… en l'occurrence une modification de la géométrie du domaine admissible. et sont toujours positives (admissibilité). Exemple Nous allons revenir au problème de fabrication du chapitre précédent. et on s'arrête à la valeur θ1. nous allons en fait nous borner à compléter le tableau de départ avec une colonne supplémentaire θ. Le changement n'est pas possible. et voyant que la contrainte FAB est saturée à l'optimum. Il faut donc effectuer un changement de base en vue de poursuivre éventuellement le cheminement du simplexe. et on continue le paramétrage sur cette nouvelle base. • Il existe une valeur θ1 pour laquelle une (ou plusieurs) variable(s) de base s'annule(nt). quand on sait qu'un paramétrage du second membre sera demandé…).1200 + 3600 θ minimum… 6–20 . Par contre la solution de base optimale va changer. Deux cas de figure se présentent alors: Le changement de base est possible.90 θ 20 x3 + 80 x5 = z . les coefficients de la fonction économique ne sont pas affectés. On reste donc optimal. le chef de l'entreprise envisage d'augmenter sa capacité de 60 à 240 heures par mois.b). Encouragé par le succès de ses produits. les variables de base prennent les valeurs correspondant aux composantes du vecteur bθ.Recherche Opérationnelle – Programmation linéaire : dualité Que peut-on en déduire en ce qui concerne le calcul des solutions de bases successives? Lors de la transformation qui remplace le second membre b par bθ = b + θ (b' . avec plusieurs cas possibles: • Quand θ varie entre 0 et 1.3/2 x5 = 15 . suivant la démarche maintenant classique. x1 x2 x5 b θ x1 x6 x5 b θ x3 3 1 0 60 180 x3 2 -1 1 30 180 x4 1 2 0 70 0 x4 -1 -2 2 10 0 x6 1 1 -1 30 0 x2 1 1 -1 30 0 C 20 60 0 0 0 C -40 -60 60 -1800 0 M -1 -1 1 -30 0 M 0 1 0 0 0 ↑ la solution optimale est donc: Yves Correc 25/11/2007 ↑ x3 x5 b θ x1 1/2 1/2 15 90 x4 1/2 5/2 25 90 x2 -1/2 -3/2 15 -90 C 20 80 OPTIMUM -1200 3600 x1 + ½ x3 + ½ x5 = 15 + 90 θ x4 + ½ x3 +5/2 x5 = 25 + 90 θ x2 – ½ x3 . et se pose la question de l'intérêt de la chose… jusqu'où doit-il aller? Le paramétrage du second membre se traduit ici par la nouvelle formulation du problème d'origine: Min 20 x1 + 60 x2 3 x1 + x2 ≤ 60 + 180 θ x1 + 2 x2 ≤ 70 x1 + x2 ≥ 30 Pour connaître le tableau optimal paramétré. tout en respectant la condition d'optimalité. et lui appliquer l'ensemble des calculs correspondant aux changements de base successifs (à faire dès le départ. Cela signifie que le déplacement décrit plus haut nous amène à intercepter un nouveau plan de contrainte. Augmenter davantage le nombre d'heures (FAB) n'offre aucun intérêt car une augmentation de θ n'a plus d'incidence sur la fonction économique.Recherche Opérationnelle – Programmation linéaire : dualité La dernière ligne nous indique que quand θ augmente. z diminue. deviennent alors respectivement.25 / 90 • X2 = 0 pour θ = 15 / 90 qui est dans l'intervalle de variation permis [0. on calcule les valeurs de θ qui annulent les bi (la plus petite étant la limite cherchée θ1): • X1 = 0 pour θ = .x5 = 30 x4 + x2 + x5 = 40 x3 . tandis que les autres bi vont rester positifs (admissibilité). car la fonction économique ne dépend plus de θ'. les équations s'écrivant alors (nouvel optimum atteint pour θ = θ1 = 1/6): x1 + x2 . Mais la variation de θ va être limitée ème équation dont le second membre va s'annuler (la plus proche contrainte rencontrée par le par la 3 point B lors du déplacement correspondant). dans la colonne k qui réalise min | ck / aik | pour aik ≤ 0 (et ck ≥ 0 car on minimise) (4) On opère un pivotage classique de l'ensemble du tableau pour récrire les équations sur la nouvelle base (3) x3 x5 b θ' (4) x2 x5 b θ' x1 1/2 1/2 30 90 x1 1 -1 30 0 x4 1/2 5/2 40 90 x4 1 1 40 0 x2 -1/2 -3/2 0 -90 x3 -2 3 0 180 C 20 80 -600 3600 C 40 20 -600 0 ← Il est inutile de poursuivre à ce stade. Tous les appareils seront dans ce cas fabriqués sur la première chaîne.15 / 90 • X4 = 0 pour θ = . en augmentant le nombre d'heures disponibles sur la machine FAB jusqu'à 60 + (15/90) 180 = 90 heures. on va maintenant pivoter l'ensemble du tableau en utilisant l'algorithme dual pour la détermination de la nouvelle base (quelle variable doit remplacer xi sortant de base?): (3) On choisit le pivot aik dans la ligne i du θi identifié à l'étape (1). que nous allons faire apparaître dans les équations au moyen du changement de variable θ = θ1 + θ' .1] Nous pouvons donc déplacer la droite (x3 = 0) jusqu'à θ1 = 15/90 = 1/6.2 x2 + 3 x5 = 180 θ' 40 x2 + 20 x5 = Z – 600 minimum Il est donc possible d'abaisser le coût de production de 1200KF à 600KF. au point B1: X1 = 15 + 90 (15/90 + θ') = 30 + 90 θ' X4 = 25 + 90 (15/90 + θ') = 40 + 90 θ' X2 = 15 – 90 (15/90 + θ') = 0 – 90 θ' par construction –Z = –1200 + 3600 (15/90 + θ') = – 600 + 3600 θ' On observe là que ce calcul est conduit de la même manière que dans l'algorithme classique du simplexe pour le choix du pas de déplacement: (1) On recherche dans la colonne θ le pivot θi < 0 qui réalise min (– bi / θi ) > 0 (2) On transforme la colonne b par pivotage de Gauss (le bi sur la ligne du pivot s'annule) (1) x3 x5 b θ (2) x3 x5 b θ' x1 1/2 1/2 15 90 x1 1/2 1/2 30 90 x4 1/2 5/2 25 90 x4 1/2 5/2 40 90 x2 -1/2 -3/2 15 -90 x2 -1/2 -3/2 0 -90 C 20 80 -1200 3600 C 20 80 -600 3600 ← Pour continuer l'optimisation. Yves Correc 25/11/2007 6–21 . Les composantes du second membre. coordonnées du point courant. En pratique. par unité produite. nous allons chercher à optimiser la production dans l'optique du bénéfice maximum. dont l'une interdit la solution de départ triviale (b<0) et nécessitera l'introduction d'une variable artificielle x8.5 x1 + 4 x2 5 x1 + 5 x2 ≤ 75  4 x1 + x2 ≤ 42  x1 + 3x2 ≤ 27  x + x ≥ 4 ⇒ − x − x + x = −4 ⇒ x + x − x + x = 4 1 2 7 1 2 7 8  1 2  x1 − x2 ≤ 8 Soit sous forme standard: Max 5 x1 + 4 x2 5 x1 + 5 x2 + x3 = 75  4 x1 + x2 + x4 = 42   x1 + 3 x2 + x5 = 27 x − x + x = 8 6  1 2  x1 + x2 − x7 + x8 = 4 Il peut être intéressant. l'atelier de montage 42 heures. la forge peut fonctionner 75 heures par semaine au maximum. (1) Formuler le problème en termes de programmation linéaire. et 1 heure de finition. Dans ces conditions. sachant que le bénéfice sur la vente d'une armure A est de 5 écus. La forme canonique du problème est: Max. Que peut-on remarquer ? (3) Refaire le calcul en utilisant l’algorithme dual plutôt que les variables artificielles. pour des raisons obscures que nous ne discuterons pas ici mais dont l'intérêt est évident pour l'exercice. notés A et B. pour mieux comprendre le cheminement de l'algorithme. tandis que le modèle B nécessite 5 heures de forgeage. Le modèle A requiert.Recherche Opérationnelle – Programmation linéaire : dualité Exercice Un atelier médiéval fabrique deux modèles d'armure. le nombre total d'armures fabriquées chaque semaine doit être au moins égal à 4. (2) Le résoudre par la méthode du simplexe (utiliser les tableaux réduits de TUCKER). et celui sur la vente d'une armure B de 4 écus. et celui de finition 27 heures (NB. 4 heures de montage. Yves Correc 25/11/2007 6–22 . Compte tenu du personnel disponible. (4) L'embauche de personnel supplémentaire doit permettre d'augmenter le temps de fonctionnement hebdomadaire de l'atelier de montage jusqu'à 50 heures. 1 heure de montage. Solution Le problème posé consiste à maximiser le bénéfice sous diverses contraintes. de dessiner le polyèdre (puisqu'on a la chance de travailler en dimension 2…). 5 heures de forgeage. En déterminer les conséquences sur la solution du problème. tandis que le nombre d'armures A produites chaque semaine doit être au plus égal au nombre d'armures B plus 8. Enfin. et 3 heures de finition. Un atelier ne traite qu'une armure à la fois). Les tableaux de Tucker résultants sont donc les suivants: x1 x2 x7 b θ x8 x2 x7 b θ x3 5 5 0 75 0 x3 -5 0 5 55 0 x4 4 1 0 42 8 x4 -4 -3 4 26 8 x5 1 3 0 27 0 x5 -1 2 1 23 0 x6 1 -1 0 8 0 x6 -1 -2 1 4 0 x8 1 1 -1 4 0 x1 1 1 -1 4 0 C 5 4 0 0 0 C -5 -1 5 -20 0 M 1 1 -1 4 0 M -1 0 0 0 0 ↑ ↑ On abandonne la colonne x8 et la ligne M (on est rentré dans le domaine) avant le second pivotage x2 x6 b θ x4 x6 b θ x3 10 -5 35 0 x3 -2 3 15 -16 x4 5 -4 10 8 x2 1/5 -4/5 2 8/5 x5 4 -1 19 0 x5 -4/5 11/5 11 -32/5 x7 -2 1 4 0 x7 2/5 -3/5 8 16/5 x1 -1 1 8 0 x1 1/5 1/5 10 8/5 C 9 -5 -40 0 C -9/5 11/5 -58 -72/5 ↑ Yves Correc 25/11/2007 ↑ 6–23 . Nous introduirons par conséquent dès le début du calcul la colonne supplémentaire θ nécessaire au paramétrage.Recherche Opérationnelle – Programmation linéaire : dualité x3=0 paramétrage x4=0 x5=0 x4=0 x6=0 optimum x1=0 x7=0 x2=0 La dernière question implique une post-optimisation. avec paramétrage du second membre (sa seconde composante devenant b2 = 42 + 8 θ avec θ variant entre 0 et 1). Il est aussi apparent dans le tableau final (x5 = 0). La contrainte (x7=11) non plus: L'excédent de production est de 11 unités par rapport à l'objectif de 4. Ce point multiple est détectable dès l'avant-dernier tableau (non-unicité du choix de la variable sortante: x3 et x5 donnent la même valeur 5 du rapport b/a). Dans ce cas nous devions pour contourner la non admissibilité duale (non optimalité primale) de l'origine (c=5. où comme on l'a dit plus haut sa seconde composante devient 42 + 8 θ avec θ variant entre 0 et 1. Les tableaux correspondants sont: x1 x2 b θ x7 x2 b θ x3 5 5 75 0 x3 5 0 55 0 x4 4 1 42 8 x4 4 -3 26 8 x5 1 3 27 0 x5 1 2 23 0 x6 1 -1 8 0 x6 1 -2 4 0 x7 -1 -1 -4 0 x1 -1 1 4 0 C 5 4 0 0 C 5 -1 -20 0 M 0 0 0 0 M 0 0 0 0 ←(2) (3)↑ ↑ Le cheminement sur le domaine est ici (par hasard) le même que celui du primal. La contrainte (x6=5) n'est pas saturée. On observe la présence d'une dégénérescence de deuxième espèce. Nous pouvions aussi utiliser l'algorithme dual.Recherche Opérationnelle – Programmation linéaire : dualité On obtient le tableau final: x4 x3 b θ x6 -2/3 1/3 5 -16/3 x2 -1/3 4/15 6 -8/3 x5 2/3 -11/15 0 16/3 x7 0 1/5 11 0 x1 1/3 -1/15 9 8/3 -69 -8/3 C -1/3 -11/15 OPTIMUM On produira donc 9 armures de type A et 6 armures de type B par semaine. et le second tableau identique à celui que nous avions obtenu précédemment. On a donc à l'optimum x3 = x4 = x5 = 0 et les ateliers forge. suivant la séquence exposée plus haut.4) utiliser un objectif artificiel pour démarrer. Yves Correc 25/11/2007 6–24 . montage et finition seront utilisés à 100% (contraintes saturées). sous la forme d'une ligne M nulle ajoutée sous la ligne c (choix de colonne à faire au moyen de la règle de Bland). Enfin le bénéfice total atteint 69 écus. Quelle conséquences peut avoir une augmentation du quota d'heures de montage entre 42 et 50 heures? La réponse à cette question viendra d'un paramétrage du second membre. Il est primal admissible et nous pouvons alors poursuivre la phase 2 en primal. en lieu et place du primal. 5 armures A et 3. mais c'est une fausse réponse car la taille du cycle temporel dépendrait alors. pour θ = 15/16.5 armures B par semaine pour un bénéfice de 71 écus et demi !… Nous ne pouvons pas nous arrêter à cette solution. ce qui n'est pas réaliste… Nous pouvons aussi penser à tronquer ou arrondir la solution continue trouvée. Yves Correc 25/11/2007 6–25 . Nous pouvons bien sûr penser à raisonner sur un cycle de deux semaines et non d'une semaine. n'a pas de sens pour le problème physique de production initialement posé. on le voit bien. et x6): x6 x3 b θ x4 -3/2 -1/2 0 8 x2 -1/2 1/10 7/2 0 x5 1 -2/5 5 0 x7 0 1/5 11 0 x1 1/2 1/10 23/2 0 C -1/2 -9/10 -143/2 0 Le bénéfice maximal correspond à θ = 15/16. puis tout le tableau suivant l'algorithme dual (avec a<0 et c<0 car on maximise): x4 x3 b θ x4 x3 b θ x6 -2/3 1/3 5 -16/3 x6 -2/3 1/3 0 -16/3 x2 -1/3 4/15 6 -8/3 x2 -1/3 4/15 7/2 -8/3 x5 2/3 -11/15 0 16/3 x5 2/3 -11/15 5 16/3 x7 0 1/5 11 0 x7 0 1/5 11 0 x1 1/3 -1/15 9 8/3 x1 1/3 -1/15 23/2 8/3 C -1/3 -11/15 -69 -8/3 C -1/3 -11/15 -143/2 -8/3 Ce qui nous donne pour tableau final (optimum toujours dégénéré avec 3 contraintes saturées x3. mais des contre-exemples sont là pour prouver que l'on peut très bien aboutir à des solutions assez éloignées de l'optimum entier recherché. dont les méthodes visent à trouver des solutions entières aux problèmes posés. c'est à dire une durée de fonctionnement de l' atelier de montage de 49 heures 1/2 par semaine. Par contre on doit remarquer que la solution optimale trouvée n'est pas entière: on devra produire 11. On fait donc le changement de variable et on pivote la colonne b. de la taille du dénominateur de la solution trouvée.Recherche Opérationnelle – Programmation linéaire : dualité La variation de θ va être limitée par la positivité du second membre. x4. dont la première composante à s'annuler va être la première. La bonne solution se trouve du côté de la programmation linéaire en nombres entiers (PLNE). Mais nous abordons là une autre branche (fort intéressante) de la recherche opérationnelle. qui bien que valable sur le plan mathématique. Que va-t-il se passer ? Géométriquement. Paramétrage de la fonction économique A l'optimum. après un changement de variable λ = λ1 + λ' . on observe que le domaine admissible défini par les contraintes ne bouge pas. que se passera-t-il si le coût de production sur la première chaîne (de laquelle sortiront alors tous les appareils) augmente de 20KF à 120KF? Nous allons donc récrire cette fonction économique en fonction d'un paramètre λ qui variera entre 0 et 1 quand Cλ variera entre C et C' : Cλ = C + λ (C' – C) avec 0 ≤ λ ≤ 1 C'est cette fonction économique que nous allons chercher à optimiser. que peut-on savoir de l'évolution de la solution en fonction de celle des coefficients de la fonction économique? Imaginons par exemple qu'à la lumière des résultats du paragraphe précédent le chef d'entreprise décide d'allouer 90 heures à la fabrication (FAB). le vecteur gradient de la fonction économique. mais que la direction d'optimisation. après avoir trouvé une nouvelle base réalisable: Yves Correc 25/11/2007 6–26 . c'est à dire le cheminement classique du simplexe. Cela signifie que la solution de base ne change pas avec l'évolution de λ. Dans ces conditions. entraînant la reprise du déplacement dans cette nouvelle direction (vers le point A). La direction d'optimisation va donc se rapprocher de la normale (en bleu) à l'une des facettes contenant le point optimum.Recherche Opérationnelle – Programmation linéaire : dualité 6. Et il faudra reprendre l'optimisation dans cette nouvelle direction. Cλ . en x et λ. Pour cela nous allons résoudre le problème initial avec λ=0. Mais en pratique ces coûts sont de fait soumis à des variations ou des incertitudes non négligeables. L'optimum trouvé avec les données initiales a par conséquent peu de chances de rester valable. et reste admissible. les coûts ont une valeur bien déterminée: ils font partie des données du problème. x1=0 x3=0 D x5=0 A C1 x4=0 O B1 x2=0 gradient Deux cas pourront alors se présenter. puis la dépasser (en vert). La question qui se pose alors est: jusqu'à quel point? Après avoir résolu le problème avec les données initiales.5. mais qu'elle ne va sans doute pas tester optimale. et à partir de ce premier optimum faire varier λ. en principe fixes.2. Ce qui se produira lorsque les coefficients de la ligne C cesseront d'être tous négatifs (maximisation) ou tous positifs (minimisation). et donc de λ. à partir de la valeur λ1 qui l'annule. va voir sa direction (en rouge) changer en fonction de l'évolution de ses composantes. 600 . directement ou bien par l'intermédiaire d'un ou plusieurs sommets intermédiaires (domaine fermé) Le problème n'admet plus de solution finie (domaine ouvert d'un côté) Min z = (20 + 100 λ) x1 + 60 x2 3 x1 + x2 + x3 = 90 x1 + 2 x2 + x4 = 70 x1 + x2 . On peut aussi tout simplement partir du tableau final du paragraphe précédent. et le paramétrage est terminé. (2) Puis on pivote la ligne c pour tenir compte du changement de variable λ = λ1 + λ' (attention le Ci de la colonne pivot devient nul) Ici. la solution optimale actuelle le restera dans tout l'intervalle de variation de λ. Le pivot retenu pour transformer la ligne c est –100 (changement de variable λ = 40/100 + λ') et la variable x2 va entrer en base: on augmente x2 …jusqu'où? Choix de la variable sortante: (3) On applique le critère du simplexe primal (i tel que min bi / aij avec bi >0 et aij >0) (4) Puis on transforme l'ensemble du tableau par pivotage sur l'élément trouvé Yves Correc 25/11/2007 6–27 . x2≥0) De la même manière qu'au paragraphe précédent. et qu'il nous importe seulement de connaître les termes en λ dans l'écriture de la fonction économique à l'optimum B1. Si l'on n'en trouve pas. On ne détaillera pas le calcul qui s'opère classiquement. en remplaçant x1 par son expression tirée de la première ligne. comme au paragraphe précédent. Seule évoluera la valeur de la fonction économique en fonction de λ. La ligne supplémentaire λ subit donc simplement les pivotages). x4 en base) sont : (1) x2 x5 b x1 1 -1 30 → x1 + x2 . jusqu'à un éventuel nouvel optimum.3000 λ = (40 . Choix de la variable entrante: (1) On recherche dans la ligne λ le pivot qui réalise min (–Cj / λj ) compris entre 0 et 1 (intervalle de variation de λ).x5 = 30 x4 1 1 40 → x4 + x2 + x5 = 40 x3 -2 3 0 → x3 – 2 x2 + 3 x5 = 0 C 40 20 -600 λ -100 100 -3000 → z . ici d'une ligne supplémentaire λ associée à la ligne c pour le paramétrage de la fonction économique. le coefficient de x2 s'annule pour λ1 = 40/100 et devient ensuite négatif.x5 = 30 Le problème initial s'écrit: (0≤λ≤1. quand λ augmente. soit x1 = 30 – x2 + x5. où l'on récrira la fonction économique initiale z = (20 + 100 λ) x1 + 60 x2 en fonction des variables hors base (ici x2 et x5. le tableau final et le système associé (x1.100 λ) x2 + (20 + 100 λ) x5 ↑ La transformation du tableau va s'effectuer en deux étapes.Recherche Opérationnelle – Programmation linéaire : dualité • • On peut continuer le paramétrage. x1≥0. point de départ effectif de la post-optimisation. Ce qui donne Z = 600 + 3000 λ + (40 – 100 λ) x2 + (20 + 100 λ) x5 Quelle que soit la méthode utilisée. les choix étant faits sur la ligne c et la colonne b (puisque λ est en fait nul durant cette première phase. x3. on va compléter le tableau de Tucker initial. le coût total de production passe de 600 KF à 1800KF (toute la production étant assurée par la première chaîne (gradient rouge. et un coût global de production de 1800KF. point B1. x1 = 0 et x2 = 30). nous pouvons maintenant dire que: lorsque le coût unitaire de production sur la première chaîne évolue de 20KF à (20+100x40/100) = 60KF. toute répartition de la production entre les deux chaînes est valable (facette B1A orthogonale au gradient). le coût total reste égal à 1800KF tandis que la production est assurée intégralement sur la deuxième chaîne (gradient vert. Lorrsque le coût unitaire sur le première chaîne devient supérieur à 60KF.40) x1 + 60 x5 Revenant au problème originel. dont l'écriture en ce point (A: x1 = 0 et x2 = 30) est: ou encore: Z = 1800 + 100λ' x1 + 60 x5 Z = 1800 + (100λ . Pour un coût unitaire de 60KF. point A.Recherche Opérationnelle – Programmation linéaire : dualité Les tableaux correspondants sont: (2-3) x2 x5 b (4) x1 x5 b x1 1 -1 30 x2 1 -1 30 x4 1 1 40 x4 -1 2 10 x3 -2 3 0 x3 2 1 60 C 0 60 -1800 C 0 60 -1800 λ -100 100 -3000 λ 100 0 0 ↑ OPTIMUM L'optimum est atteint car aucune augmentation de λ ne permet plus d'améliorer (minimiser) la fonction économique. x1 = 30 et x2 = 0). Yves Correc 25/11/2007 6–28 . x5 ≤ 0 -x2 + x3 . studios de cinéma en Amérique du sud : 7% . x2 = x3 = x4 = 0. Que devient la solution optimale ? Solution Appelons x1. immobilier aux Bahamas: 9% . Yves Correc 25/11/2007 6–29 . L'investissement immobilier ne doit pas excéder celui réalisé en loterie nationale.1. et donne pour solution optimale: x1 = 1/2. x3. x2. x2.x4 . à l'immobilier. COMPLEMENTS 6. Soit un investissement réparti par moitiés entre actions offshore et loterie nationale. et x5 = 1/2. Exercice 12-9-7-6-10 Exercice Une grande banque nationalisée souhaite investir des fonds importants. (3) Peut-on avoir une indication simple de l'incidence sur ce rendement du choix forcé de l'un des investissements non retenus dans la solution optimale ? (4) L’actionnaire majoritaire de la banque amène celle-ci à investir malgré tout dans l’immobilier. loterie nationale : 10%. x3.6. (1) Formuler le problème en termes de programmation linéaire.5) Ce problème sans difficultés particulières est résolu en 3 tableaux par l'algorithme primal. x5 ≥ 0 Ce qui donne l'énoncé: Max Z = 12 x1 + 9 x2 + 7 x3 + 6 x4 + 10 x5 x1 + x3 . à l'emprunt et à la loterie. (2) Déterminer la politique d'investissement qui maximise le rendement global.x5 ≤ 0 x1 + x2 + x3 + x4 + x5 ≤ 1 avec avec xi ≥ 0 (i=1.x5 ≤ 0 x2 . Ces taux étant supposés rester constants dans un futur proche. Cinq choix sont possibles. on cherche à déterminer la politique d'investissement assurant le rendement global maximal. x4. La somme des investissements en immobilier et en loterie nationale doit être au moins égale à l'investissement en studios. x4.Recherche Opérationnelle – Programmation linéaire : dualité 6. dont les rapports annuels sont les suivants : Actions de sociétés offshore: 12% . tout en respectant les règles suivantes. x5 les fractions de la capacité d'investissement de la banque allouées aux actions. nouvel emprunt russe: 6% . La fonction à maximiser est le rapport global (exprimé en % par an de l'investissement): Z = 12 x1 + 9 x2 + 7 x3 + 6 x4 + 10 x5 Les règles d'investissement s'écrivent: x1 + x3 ≤ x4 + x5 sans oublier la contrainte additionnelle x1 + x2 + x3 + x4 + x5 ≤ 1 x2 + x5 ≥ x3 x2 ≤ x5 qui résulte de la définition des variables utilisées !… x1. issues d'une analyse très fine des risques du marché par les spécialistes d'Andersème Hatoovan Consulting : $ $ $ La somme des investissements en actions et en studios ne doit pas excéder la somme des investissements en emprunt russe et en loterie nationale.6. aux studios. Recherche Opérationnelle – Programmation linéaire : dualité Tab1 x1 x2 x3 x4 x5 b Tab2 x6 x2 x3 x4 x5 b x6 1 0 1 -1 -1 0 x1 1 0 1 -1 -1 0 x7 0 1 0 0 -1 0 x7 0 1 0 0 -1 0 x8 0 -1 1 0 -1 0 x8 0 -1 1 0 -1 0 x9 1 1 1 1 1 1 x9 -1 1 0 2 2 1 C 12 9 7 6 10 0 C -12 9 -5 18 22 0 ↑ ↑ Tab3 x6 x2 x3 x4 x9 b Tab4 x6 x7 x3 x4 x9 b x1 1/2 1/2 1 0 1/2 1/2 x1 2/3 -1/3 1 -1/3 1/3 1/3 x7 -1/2 3/2 0 1 1/2 1/2 x2 -1/3 2/3 0 2/3 1/3 1/3 x8 -1/2 -1/2 1 1 1/2 1/2 x8 -2/3 1/3 1 4/3 2/3 2/3 x5 -1/2 1/2 0 1 1/2 1/2 x5 -1/3 -1/3 0 2/3 1/3 1/3 C -1 -2 -5 -4 -11 -11 C -5/3 4/3 -5 -8/3 -31/3 -31/3 (↑ ) OPTIMUM Pivotage forcé sur x2 A l'optimum. qui fera sortir x7 de la base (la plus proche contrainte rencontrée dans ce déplacement est alors x7). mais seulement pour une petite augmentation de la variable x2. Ce choix revient donc à introduire x2 en base. x4. et les coûts de substitution sont respectivement de -2. Par contre les contraintes liées aux règles d'investissement ne seront probablement plus vérifiées car on sera sans doute sorti du domaine admissible. On en déduit immédiatement la perte de rendement par unité de chaque variable investie de force à la place des choix optimaux: Donner par exemple la valeur 1 (c'est à dire 100% de l'investissement) à x2 (immobilier Bahamas) fera chuter le rendement de 2% (on observe effectivement qu'il passe de 11% à 9%). Que va-t-il se passer si l'actionnaire majoritaire de la banque oblige celle-ci à investir dans l'immobilier? On vient d'avoir grâce au coût de substitution (–2) une idée des conséquences de ce choix. suivant le calcul qui conduit au tableau 4 cidessus.x6 – 2 x2 – 5 x3 – 4 x4 – 11 x9 Le rendement espéré est donc de 11%. solution de départ.33% On remarquera au passage que l'origine. -5. et 4 pour les variables x2. c'est à dire à s'éloigner du plan de contrainte associé. x3. la fonction économique a pour expression: Z – 11 = . Yves Correc 25/11/2007 6–30 . La solution (qui n'est plus optimale rappelons-le car on vient d'imposer une contrainte arbitraire sur l'investissement x2) devient alors: X1 = 1/3 X2 = 1/3 X3 = 0 X4 = 0 X5 = 1/3 au lieu de x1 = 1/2 x2 = 0 x3 = 0 x4 = 0 x5 = 1/2 On peut donc aller jusqu'à 1/3 d'immobilier. ce qui diminue le rendement global à 10. Jusqu'où peut-on se déplacer ainsi? La réponse est donnée par un pivotage classique. est point multiple (la première itération donne un déplacement nul). obligations. tout en respectant les règles suivantes. Optimiser le rendement global (%) équivaut à optimiser le rapport effectif (en ME). obligations : 6%. L'investissement en obligations ne doit pas excéder 3 millions d'écus. x2. les contraintes sont les suivantes: (immobilier x4) X1 ≤ 2 (obligations x5) X3 ≤ 3 X2 ≤ 2 – 1/3 x3 (x6) que l'on récrira 3 x2 + x3 ≤ 6 (on n'oubliera pas à la fin le facteur 3!) (investissement max x7) X1 + x2 + x3 ≤ 4 X1 + x2 + x3 – x8 + x9 = 1 (variable artificielle x9) X1 + x2 + x3 ≥ 1 qui peut être récrit (si l'on utilise l'algorithme dual) Ou encore . Ces taux étant supposés rester constants dans un futur proche. (1) Formuler le problème en termes de programmation linéaire. actions. x3 ≥ 0. et on envisage de doubler (passer à 8 millions d'écus) la borne supérieure du capital investi. Exercice 1-14-6 Exercice On souhaite investir une somme comprise entre 1 et 4 millions d'écus. dont les rapports annuels sont les suivants : Immobilier : 1% . issues d'une analyse des risques du marché : L'investissement immobilier ne doit pas excéder 2 millions d'écus. (3) Que peut-on dire de plus sur cette solution ? (4) On s'affranchit de la contrainte limitant l'investissement en obligations. Trois choix sont possibles.x1 – x2 – x3 ≤ -1 Avec bien sûr x1. ce qui donne les tableaux successifs: (1) x1 x2 x3 x8 b θ (2) x9 x2 x3 x8 b θ x4 1 0 0 0 2 0 x4 -1 -1 -1 1 1 0 x5 0 0 1 0 3 0 x5 0 0 1 0 3 0 x6 0 3 1 0 6 0 x6 0 3 1 0 6 0 x7 1 1 1 0 4 4 x7 -1 0 0 1 3 4 x9 1 1 1 -1 1 0 x1 1 1 1 -1 1 0 C 1 14 6 0 0 0 C -1 13 5 1 -1 0 M 1 1 1 -1 1 0 M -1 0 0 0 0 0 Et on abandonne ligne M et variable x9 ↑ ↑ Yves Correc 25/11/2007 6–31 . L'investissement en actions ne doit pas excéder 2 millions d'écus diminués du tiers de l'investissement en obligations. x2. Dans un premier temps on va démarrer avec une variable artificielle x9. x3 les sommes investies en immobilier. on cherche à déterminer la politique d'investissement assurant le rendement global maximal. (2) Déterminer la politique d'investissement qui maximise le rendement global. actions : 14% . Dans ces conditions. Pour la suite on laissera de côté le facteur 100 pour alléger le calcul (sans l'oublier à la fin pour l'interprétation!).6.2. exprimées en millions d'écus. c'est à dire à maximiser la fonction économique Z = (x1 + 14 x2 + 6 x3) / 100. Etudier les conséquences sur la politique d'investissement (paramétrage du second membre) Solution Soit x1. et une colonne θ en vue du paramétrage du second membre (placement passant de 4 à 8).Recherche Opérationnelle – Programmation linéaire : dualité 6. et investissement en butée). La solution trouvée reste la même car nous n'avons fait que supprimer la contrainte responsable du point multiple. x2 = 1. Les variables d'écart nulles X5. c'est à dire de θ jusqu'à la valeur θ0 = 1/2. c'est à dire un placement d'un million d'écus en actions. x6. (5) x1 x5 x6 b θ (6) x7 x5 x6 b θ x4 1 0 0 2 0 x4 -1 2/3 1/3 2 -4 x3 0 1 0 3 0 x3 0 1 0 3 0 x8 -1 2/3 1/3 3 0 x8 1 0 0 3 4 x7 1 -2/3 -1/3 0 4 x1 1 -2/3 -1/3 0 4 x2 0 -1/3 1/3 1 0 x2 0 -1/3 1/3 1 0 C 1 -4/3 -14/3 -32 0 C -1 -2/3 -13/3 -32 -4 ↑ Optimum On croit pouvoir encore poursuivre (c = 1).Recherche Opérationnelle – Programmation linéaire : dualité (3) x1 x3 x8 b θ (4) x1 x3 x6 b θ x4 1 0 0 2 0 x4 1 0 0 2 0 x5 0 1 0 3 0 x5 0 1 0 3 0 x6 -3 -2 3 3 0 x8 -1 -2/3 1/3 1 0 x7 0 0 1 3 4 x7 1 2/3 -1/3 2 4 x2 1 1 -1 1 0 x2 0 1/3 1/3 2 0 C -13 -8 14 -14 0 C 1 4/3 -14/3 -28 0 ↑ ↑ On note le choix possible entre x5 et x7 pour la variable sortante: On se dirige vers un point multiple… Nous choisissons ici de pivoter en sortant x5 de la base (plus petit indice). mais le plus petit rapport b/a trouvé est nul. et à lancer une postoptimisation en paramétrant le second membre (ce que nous avions fait par précaution pour éviter d'avoir à reprendre tous les calculs avec la colonne θ).32 millions d'écus. Yves Correc 25/11/2007 6–32 . de trois millions d'écus en obligations. x3 = 3. x7. Les valeurs optimales trouvées sont donc x1 = 0. pour un rapport de 0. La relaxation de la contrainte sur les obligations revient à supprimer le plan de contrainte (x5 = 0). Il faudra tout de même repartir du tableau (4) amputé de la ligne x5. et rien en immobilier. correspondent aux contraintes saturées (règles 2 et 3. 4bis x1 x3 x6 b θ 5bis x1 x7 x6 b θ x4 1 0 0 2 0 x4 1 0 0 2 0 x8 -1 -2/3 1/3 1 0 x8 0 1 0 3 4 x7 1 2/3 -1/3 2 4 x3 3/2 3/2 -1/2 3 6 x2 0 1/3 1/3 2 0 x2 -1/2 -1/2 1/2 1 -2 C 1 4/3 -14/3 -28 0 C -1 -2 -4 -32 -8 ↑ Optimum θ0 = 1/2 On poursuit maintenant avec le paramétrage du second membre: le plan de contrainte (x2=0) est le premier atteint dans le déplacement de la contrainte (x7=0) qui résulte de l'augmentation de l'investissement maximum permis. et le déplacement associé à la sortie de base de x7 est nul. Les figures correspondant à ces calculs sont données ci-après: (1) Polyèdre du problème originel (2) Polyèdre du problème modifié (contrainte x5 relaxée) (3) Polyèdre associé à la valeur θ = 1/2 (θ0) (4) Polyèdre associé à la valeur θ = 1 (θ1) Yves Correc 25/11/2007 6–33 . x7 = 0 (investissement max). x4 = 0 (max 2 atteint pour l' immobilier). x6 = 0 (règle du tiers). x8 = 7 (en plus de 1). x2 = 0. La contrainte sur l'investissement maximum est poussée à sa borne supérieure de 8 millions d'écus (θ=1). et donne un rapport de 380000 écus. x3 = 6. 8bis x2 x7 x6 b θ 9bis x2 x4 x6 b θ x4 2 -1 1 0 -4 x7 -2 -1 -1 0 4 x8 0 1 0 7 4 x8 2 1 1 7 0 x3 3 0 1 6 0 x3 3 0 1 6 0 x1 -2 1 -1 2 4 x1 0 1 0 2 0 C -2 -1 -5 -38 -4 C -4 -1 -6 -38 0 ← Nouvel optimum pour θ = 1 Le nouvel optimum (Z ne dépend plus θ) est obtenu pour x1 = 2.Recherche Opérationnelle – Programmation linéaire : dualité 6bis x1 x7 x6 b θ 7bis x2 x7 x6 b θ x4 1 0 0 2 0 x4 2 -1 1 2 -4 x8 0 1 0 5 4 x8 0 1 0 5 4 x3 3/2 3/2 -1/2 6 6 x3 3 0 1 6 0 x2 -1/2 -1/2 1/2 0 -2 x1 -2 1 -1 0 4 C -1 -2 -4 -36 -8 C -2 -1 -5 -36 -4 ← ← θ1 = 1/2 La nouvelle contrainte atteinte lors de l'augmentation de θ est le plan (x4=0). pour θ = θ0 + θ1 = 1. tandis que le domaine admissible s'est géométriquement déformé deux fois (passage aux valeurs 1/2 puis 1 de θ). x3 Recherche Opérationnelle – Programmation linéaire : dualité x5 5-6 x8 1 2 x1 3 x4 x6 4 x7 x2 Figure 1: Problème d'investissement originel (investissement max 4 M écus) Yves Correc 25/11/2007 6–34 . x3 Recherche Opérationnelle – Programmation linéaire : dualité x7 5bis x8 x1 x4 4bis x6 x2 Figure 2: Problème d'investissement modifié (contrainte x5 relaxée) Yves Correc 25/11/2007 6–35 . x3 Recherche Opérationnelle – Programmation linéaire : dualité 6-7bis x7 5bis x8 x1 x4 4bis x6 x2 Figure 3: Problème paramétré pour θ = 1/2 (θ0. investissement max 6 M écus) Yves Correc 25/11/2007 6–36 . x3 Recherche Opérationnelle – Programmation linéaire : dualité 8-9bis 6-7bis x7 5bis x8 x1 x4 4bis x6 x2 Figure 4: Problème paramétré pour θ = 1 Yves Correc 25/11/2007 (θ1. investissement max 8 M écus) 6–37 . (2) Le résoudre par la méthode du simplexe (tableaux réduits de Tucker). Solution Appelons x1 et x2 respectivement le nombre de tonnes de brut n°1 et n°2 traités. par les possibilités de vente. On pourrait multiplier les contraintes par des entiers convenables pour rendre entiers les coefficients initiaux du programme linéaire. cracking. (1) Formuler le problème en termes de programmation linéaire.15 * 8 * λ) avec 0 ≤ λ ≤ 1 ou plus simplement pour les calculs qui vont suivre: 8 + 1. ce qui nous donne la dernière ligne λ mentionnée plus haut.6.2 x2 ≤ 3600 Avec bien sûr x1. Pour une tonne de chaque brut. (3) A la suite d'aléas conjoncturels.3 x1 + 0. et 3600 tonnes de fuel par jour. 3000 tonnes de gasoil. La fonction économique à maximiser est le bénéfice.5 tonne Gasoil Fuel 0. le profit c1 réalisé sur 1 tonne de brut n°1 peut varier de plus ou moins 15% autour de 8 unités monétaires. x2 ≥ 0 Ce problème se résout simplement en trois tableaux de Tucker. Ceux-ci sont pour la raffinerie considérée au nombre de trois: essence. gasoil. ces bruts donnent des hydrocarbures variés. fuel. On ne le fera pas. qui s'écrit 8 x1 + 10 x2 Les contraintes de production portant sur les produits dérivés s'écrivent (en tonnes): Pour l'essence 0. reforming analytique) pour devenir des "bases" qui convenablement mélangées permettent d'obtenir les produits commerciaux désirés. Exercice raffinerie Exercice Une raffinerie peut traiter deux types de pétrole brut. pour ne pas se priver d'indications utiles dans la suite de l'énoncé.2 tonne 0.3 tonne 0.5 x2 ≤ 6500 Pour le gasoil 0. auxquels on aura pris la précaution d'ajouter une ligne supplémentaire λ sous la ligne c. et par les stockages disponibles).2 x1 + 0. la raffinerie peut produire au maximum 6500 tonnes d'essence. Etudier l'impact de cette variation sur la solution optimale. pour se préparer à répondre à la troisième question qui porte sur le paramétrage de la fonction économique.2 λ avec -1 ≤ λ ≤ 1 tandis que c2 reste égal à 10. Le problème est de savoir combien on doit traiter de ces deux bruts par jour pour maximiser le bénéfice.3 x2 ≤ 3000 Pour le fuel 0. désulfurisation. on extrait les quantités suivantes de ces trois produits (les déchets étant négligeables): Produits: Brut N°1 (Moyen-Orient) Brut N°2 (Afrique) Essence 0. Le profit c1 réalisé sur 1 tonne de brut n°1 peut varier de plus ou moins 15% autour de 8 unités monétaires. qui subissent ensuite des traitements complémentaires (épuration.3.3 tonne 0.2 tonne La production étant limitée (par la capacité de certaines unités de traitement.5 x1 + 0. ce qui veut dire que c1 a pour expression: 8 ± (0. Le bénéfice réalisé est de 8 unités monétaires par tonne de brut N°1 traitée.5 tonne 0. Par distillation fractionnée. Yves Correc 25/11/2007 6–38 .Recherche Opérationnelle – Programmation linéaire : dualité 6. et de 10 unités monétaires par tonne de brut N°2 traitée. NB. A l'optimum.+1]. Par conséquent la solution optimale trouvée le reste dans l'intervalle de variation de λ.8 – 7.2 λ ) x3 + ( -20 + 12 λ ) x4 Que va-t-il se passer si λ varie entre –1 et +1 ? On peut vérifier simplement que la solution trouvée reste optimale quand λ varie en étudiant le signe des coefficients de la fonction économique: Le coefficient de x3 reste négatif si λ > -10/9. les valeurs correspondantes de x1 et x2 restant inchangées. et observer que l'on ne peut trouver de pivot dans la ligne λ réalisant le minimum du rapport cherché entre –1 et +1 (car c'est ici l'intervalle de variation de λ). Yves Correc 25/11/2007 6–39 . La production résultante est de 6500 tonnes d'essence et 3000 tonnes de gasoil (contraintes saturées). et 3500 tonnes de fuel (capacité résiduelle 100 tonnes).Recherche Opérationnelle – Programmation linéaire : dualité Les tableaux successifs sont donc: x1 x2 b x1 x4 b x3 1/2 1/2 6500 x3 1/6 -5/3 1500 x4 2/10 3/10 3000 x2 2/3 10/3 10000 x5 3/10 2/10 3600 x5 1/6 -2/3 1600 c 8 10 0 c 4/3 -100/3 -100000 λ 6/5 0 0 λ 6/5 0 0 ↑ ↑ x3 x4 b x1 6 -10 9000 x2 -4 10 4000 x5 -1 1 100 c -8 -20 -112000 λ -36/5 12 -10800 OPTIMUM La solution optimale cherchée consiste donc à traiter 9000 tonnes de brut n°1 et 4000 tonnes de brut n°2. ce qui reste toujours vrai dans l'intervalle [-1. On peut aussi appliquer brutalement la méthode de paramétrage de la fonction économique à partir de la solution optimale obtenue. et celui de x4 si λ < 5/3. le problème s'écrit: Max z – 112000 – 10800 λ = ( . Par contre le bénéfice variera entre 112000 – 10800 et 112000 + 10800. pour un bénéfice de 112000 unités monétaires.
Copyright © 2024 DOKUMEN.SITE Inc.