CHAPITRE 1 PROGRAMMATION LINEAIRE 1. Généralités. Les
Transcription
CHAPITRE 1 PROGRAMMATION LINEAIRE 1. Généralités. Les
5 CHAPITRE 1 PROGRAMMATION LINEAIRE 1. Généralités. Les modèles de programmation linéaire permettent d’aborder un grand nombre de problèmes d'optimisation en apparence très différents, dans des contextes très divers. On peut considérer que, plutôt que d'être à proprement parler du domaine de la gestion, la programmation linéaire relève des mathématiques de la Recherche Opérationnelle et a des applications en gestion ainsi qu’en économie, en statistique, en physique, etc. Il s'agit d'un outil versatile et puissant, régulièrement cité par les entreprises comme un des modèles les plus utilisés de la Recherche Opérationnelle. Dans ce cours, on supposera que les étudiants ont déjà découvert les applications classiques de la programmation linéaire: problèmes de maximisation du profit sous contraintes de disponibilité de ressources rares, minimisation des coûts sous contraintes de satisfaction de la demande, problèmes de mélanges, etc. On supposera également qu'ils ont fait connaissance avec la méthode du simplexe et qu'ils ont eu l'occasion de résoudre quelques exemples numériques à l'aide de cette méthode. Rappelons que la méthode du simplexe est un algorithme de résolution proposé par George Dantzig vers 1947; voir Dantzig 1963 ou Chvátal 1983. Cette méthode simple, robuste et efficace permet d’attaquer avec succès des problèmes comportant plusieurs dizaines de milliers de variables et de contraintes. Elle resta en fait sans concurrence pendant près de 40 ans, jusqu’à la découverte d’une famille d’algorithmes connus sous le nom de « méthodes de points intérieurs »; voir par exemple Taha 1992. A ce jour, plusieurs méthodes de résolution coexistent souvent dans les logiciels commerciaux, mais la méthode du simplexe reste une des meilleures alternatives disponibles pour la solution de nombreux problèmes de programmation linéaire. Notre objectif principal sera de traiter une des questions fondamentales de la programmation linéaire: l’analyse de sensibilité, ou analyse post-optimale, dont l'objet est d'étudier la façon dont une modification des hypothèses du modèle affecte la solution optimale calculée précédemment. Il s'agit donc d'une "What-if analysis": que se passe-t-il par exemple si • le profit unitaire de chaque activité augmente ou diminue légèrement, ou a été mal estimé? 6 • les contraintes de capacité sont flexibles et peuvent être ajustées en y mettant le prix? 2. Modèle de programmation linéaire et terminologie élémentaire. Sous sa forme la plus générale, le modèle de programmation linéaire (P.L.) est le modèle d'optimisation n minimiser (ou maximiser) z(x) = ∑ c j x j (fonction objectif) j =1 sous les contraintes (s.c.) ≤ ∑ a ij x j = b i j=1 ≥ n (i = 1,..., m). Les nombres cj, aij, bi sont les paramètres du modèle; ce sont des nombres connus avant la résolution (coût unitaire, capacité disponible, coefficients techniques, etc). Pour i = 1, …, m et j = 1, …, n, on appelle: cj = coefficients de la fonction objectif z(x) (appelée également fonction économique) aij = coefficients des contraintes bi = membres de droite (M.d.D.) des contraintes. Les variables (de décision) xj sont indéterminées a priori: la résolution du modèle consiste précisément à déterminer la valeur des variables qui optimise la fonction objectif z(x) tout en respectant les contraintes formulées. Remarquons que la fonction objectif et les membres de gauche des contraintes sont des fonctions linéaires des variables, ce qui justifie l’appellation donnée au modèle. En termes généraux, il est utile d'interpréter {1,...,n} comme un ensemble d'activités économiques (par exemple, la fabrication d’armoires de différents modèles, ou l’investissement dans un projet) qu'une firme peut entreprendre à différents niveaux. La valeur de la variable xj indiquera le niveau choisi (« programmé ») pour l'activité j (j = 1,...,n). On peut alors voir cj comme le profit ou le coût unitaire associé à l'activité j. Si {1,...,m} est un ensemble de ressources consommées par les activités, alors bi est la quantité disponible de la ressource i et aij est la quantité de la ressource i consommée par unité de l'activité j. Nous utiliserons encore la terminologie suivante: 7 Solution (point) réalisable: c'est un point x qui satisfait à toutes les contraintes, c'est-à-dire n un point x∈ℜ n telque ∑ a ij x j ≤b i pour touti = 1,..., m. j =1 Région, espace réalisable - Polyèdre des contraintes: c'est l'ensemble P des points réalisables, c'est-à-dire n P = x ∈ℜ n : ∑ a ij x j ≤ b i pour i = 1,..., m . j=1 Géométriquement, P est un polyèdre convexe, c'est-à-dire une région définie comme l'intersection de m demi-espaces. Solution optimale: c'est un point x* réalisable et qui optimise z(x) sur P, c'est-à-dire, pour un problème de maximisation, un point x* tel que x* ∈ P et z(x*) ≥ z(x) pour tout x ∈ P. Valeur optimale: c’est la valeur z(x*) atteinte par toute solution optimale x*. 3. Forme standard des problèmes de programmation linéaire. Pour appliquer la méthode du simplexe, nous supposerons que le P.L. à résoudre est sous forme standard, c'est-à-dire qu'il comporte une contrainte de non-négativité pour chaque variable et que les autres contraintes sont mises sous forme d’égalités. Un P.L. sous forme standard s'écrit donc n max / min z = ∑ c j x j j =1 n s.c. ∑a ij x j = bi (i = 1,..., m) (FS) j =1 x j ≥ 0 (j = 1,..., n) (comparer avec la forme générale proposée dans la section précédente). Remarquons que cette hypothèse n'est absolument pas restrictive: en effet, tout P.L. peut être mis sous forme standard au prix d'une augmentation (parfois considérable) du nombre de contraintes et de variables. Il suffit pour cela de procéder aux trois types de remplacements décrits cidessous. 8 1) Toute contrainte d'inégalité n ∑a j xj ≤ b (1) j =1 peut être remplacée par un système de contraintes « équivalent »: n ∑ a jx j + s = b j =1 s≥0 (2) (3) (« équivalent » signifie ici qu'il existe une bijection entre les solutions de l’inégalité (1) et celles du système (2)-(3)). On appelle s la variable d'écart (slack) de la contrainte (1). L’interprétation d’une variable d’écart en termes économiques est très simple: si b est le n nombre d'unités disponibles d'une certaine ressource, et ∑ j=1 a j x j le nombre d'unités de cette ressource utilisée par la solution x, alors la quantité s = b – ∑ j=1 a j x j représente le n nombre d'unités résiduelles, non utilisées par la solution x. Géométriquement, pour un problème à deux variables, on peut interpréter s comme une n mesure de la « distance » entre la droite de contrainte ∑ j=1 a j x j = b et le point x (en particulier, s = 0 si et seulement si le point x se trouve sur la droite de contrainte). 2) Toute contrainte d'inégalité m ∑ a jx j ≥ b j =1 est « équivalente » au système n (4) ∑ a jx j − s = b j =1 (5) s ≥ 0 où s est une variable de surplus. Une interprétation simple existe à nouveau: si b m représente une demande à satisfaire et ∑ a j x j représente une quantité produite, alors... j =1 3) Si la variable xj n'est pas contrainte à être non négative, on peut la remplacer dans la fonction objectif et dans toutes les contraintes par l’expression x j' − x j" (où xj', xj" sont deux nouvelles variables) et introduire les contraintes additionnelles: xj' ≥ 0, xj" ≥ 0. Par exemple, si xj représente l'état d'un compte financier, alors xj' peut être interprété comme un solde positif et xj" comme un solde négatif . 9 Conclusion: en combinant les transformations 1), 2), 3) décrites ci-dessus, n’importe quel programme linéaire peut être réécrit sous forme standard. L'avantage essentiel de cette transformation est qu'elle va nous permettre d'utiliser notre connaissance des systèmes d'équations linéaires. La méthode du simplexe va en effet consister essentiellement en la résolution successive de systèmes linéaires, et les contraintes de non négativité seront traitées implicitement. 4. La méthode de Gauss-Jordan. Rappel: comment résout-on un système d'équations linéaires de la forme n ∑a ij x j = bi (i = 1,..., m) ? (L) j=1 Réponse: par la méthode de Gauss-Jordan, ou méthode d'éliminations successives. Supposons que les m équations soient linéairement indépendantes (le système est de rang m; ceci implique en particulier que n ≥ m). Il est alors possible de trouver m colonnes linéairement indépendantes parmi les colonnes de la matrice des coefficients (aij). Supposons par exemple que les colonnes 1 à m soient linéairement indépendantes. Appelons les variables correspondantes (x1,...,xm) variables en base et les variables restantes (xm+1,...,xn) variables hors base (remarquons qu'en général, il existe de nombreux choix possibles pour les variables en base: il suffit que les colonnes associées soient linéairement indépendantes). On peut ensuite transformer le système par éliminations successives jusqu'à obtenir un système sous la forme: x1 x2 ... xm + + a1, m + 1 x m + 1 + ... + a1n x n = b1 a 2, m + 1 x m + 1 + ... + a 2n x n = b 2 + + ... ... a m, m + 1 x m + 1 + ... + a m n x n = b m _____________ variables en base _________________________ variables hors base (Dico) 10 Le système (Dico) est appelé le dictionnaire du système (L) associé aux variables de base x1,..., xm: il est équivalent à (L) (c’est-à-dire qu’il possède les mêmes solutions que (L)) et peut être interprété comme définissant les variables en base en terme des variables hors base (comme on le voit en faisant passer xm+1, ..., xn dans le membre de droite de (Dico)). Une solution particulière (solution de base) associée à (Dico) est obtenue en fixant xm+1,...,xn (variables hors base) à 0 et en posant x i = b i pour i = 1,...,m. La méthode du simplexe repose exclusivement sur la considération de solutions de base. Remarquons qu’une solution de (L) est une solution réalisable de (FS) si et seulement si toutes ses composantes sont non négatives. En particulier, la solution de base associée au dictionnaire (Dico) est réalisable si et seulement si bi ≥ 0 pour i = 1,...,m. Cette observation élémentaire sera constamment utilisée par la suite. Bien sûr, un problème de programmation linéaire présente plusieurs caractéristiques qui le différencient clairement d’un système d'équations linéaires: • il comporte une fonction objectif à optimiser, ce qui implique que l’on s’intéresse à une solution bien particulière parmi les solutions réalisables plutôt qu’à une solution quelconque comme dans le cas des systèmes d’équations; • il comporte également des contraintes de non négativité; il est facile de se convaincre que, sans elles, le problème (FS) tomberait dans une des catégories suivantes: (i) pas de solution réalisable, ou (ii) une solution réalisable unique (et donc nécessairement optimale), ou (iii) problème non borné; un tel problème pourrait être résolu par simple résolution du système de contraintes. 5. La méthode du simplexe: exemples numériques. Nous allons maintenant présenter le déroulement de la méthode du simplexe sur quelques exemples numériques avant d'en donner une description plus générique. Dans cette présentation, nous traiterons la fonction objectif comme une variable supplémentaire en réécrivant (FS) sous la forme: 11 max / min z n s. c. z − ∑cj xj = 0 j =1 n ∑a ij x j = b i (i = 1,..., m) j =1 xj ≥ 0 ( j = 1,..., n ) (forme standard modifiée). Il ne faut voir là qu'une commode convention didactique. Il sera cependant important de bien garder à l'esprit la nature très particulière de la contrainte "fonction objectif". Exemple 1. (Il est instructif de représenter cet exemple graphiquement géométriquement les itérations successives de la méthode du simplexe.) max z = 3 x1 + 2 x2 s.c. x 1 + 2 x2 2 x 1 + x2 + x1 – x2 x2 x1, x2 ≤ 6 ≤ 8 ≥ –1 ≤ 2 ≥ 0 et d’interpréter (→ remplacer par contrainte) (→ s1) (→ s2) (multiplier par –1, + s3) (→ s4) Forme standard modifiée: max z s.c. z – 3 x1 – 2 x2 x1 + 2 x2 + s1 =6 2 x 1 + x2 + s2 – x 1 + x2 + s3 x2 + s4 x1, x2 , s1, ..., s4 ≥ 0 =0 =8 =1 =2 Variables en base: s1, s2, s3, s4 (et, en toute rigueur, z ; mais nous omettrons souvent de mentionner z explicitement parmi les variables en base). Variables hors base: x1, x2 Solution de base associée: (z, x, s) = (0, 0, 0, 6, 8, 1, 2). 12 Est-il possible d’améliorer la solution de base courante ? Pour augmenter z, il faudrait pouvoir augmenter x1 ou x2 . Essayons avec x1. Par conséquent, x1 doit devenir variable de base (« x1 entre en base »). On peut à présent se poser les deux questions suivantes: en admettant que les variables actuellement hors base le restent, à l’exception de x1, 1) jusqu'où x1 peut-il augmenter? 2) quelle variable doit-elle sortir de base (c’est-à-dire, doit-elle devenir hors base?) (remarquer que le nombre de variables de base doit toujours être exactement égal à m, c'est-à-dire à 4 dans notre exemple). En supposant que x2 reste hors base (et donc égal à 0), on doit avoir x1 ≤ 6 et 2x1 ≤ 8. Les contraintes 3 et 4 ne placent aucune restriction sur l'augmentation de x1. En effet, lorsque x2 = 0, la contrainte 3 est équivalente à –x1 ≤ 1, et la contrainte 4 ne contient pas x1. Au total, la contrainte la plus restrictive pour x1 est la seconde, et donc x1 ≤ 4 (ceci est une réponse à la question 1). Si x1 = 4 et x2 = 0, alors s1 = 2, s2 = 0, s3 = 5 et s4 = 2. Donc, on peut supposer que s2 est à présent hors base (réponse à la question 2). En termes économiques, on peut interpréter simplement le raisonnement précédent. Nous avons tout d’abord découvert une activité profitable (l’activité modélisée par la variable x1), dont nous cherchons donc à augmenter le niveau. Cette augmentation de niveau est cependant limitée par l’existence d’une ressource rare, en l’occurrence celle modélisée par la deuxième contrainte. On parvient ainsi à la situation suivante: x1, s1, s3, s4 en base x2, s2 hors base Appliquons la méthode de Gauss-Jordan pour obtenir le dictionnaire associé aux nouvelles variables en base (c'est-à-dire, éliminons x1 de toutes les équations sauf celle où apparaît la variable sortante s2 et donnons un coefficient de 1 à x1dans cette dernière équation): max z s.c. z – 1/2 x2 + 3/2 s2 = 3/2 x2 + s1 – 1/2 s2 = x1 + 1/2 x2 + 1/2 s2 = 3/2 x2 + 1/2 s2 + s3 = x2 + s4 = x1, x2, s1, s2, s3, s4 ≥ 0. 12 2 4 5 2 13 Solution de base: (z,x,s) = (12, 4, 0, 2, 0, 5, 2) Nous sommes ainsi revenus à une situation similaire à celle de départ et nous pouvons à nouveau nous poser la même question: est-il possible d’améliorer la solution de base courante ? Pour tenter d’augmenter z, augmentons x2. Donc, x2 entre en base. De combien x2 peut-il augmenter? En supposant que s2 reste hors base, on doit avoir: 3 / 2 x2 ≤ 2 1 / 2 x 2 ≤ 4 ⇒ x2 ≤ 4 / 3 3 / 2 x2 ≤ 5 x 2 ≤ 2 Si x2 = 4/3, alors s1 doit s’annuler et donc s1 peut sortir de base. On obtient ainsi: x1, x2, s3, s4 en base s1, s2 hors base. Appliquons la méthode de Gauss-Jordan pour éliminer x2 de toutes les équations, sauf celle où apparaît s1 (la variable sortante): max z s.c. z + 1/3 s1 + 4/3 s2 = 38/3 x2 + 2/3 s1 – 1/3 s2 = 4/3 x1 – 1/3 s1 + 2/3 s2 = 10/3 – s1 + s2 + s3 = 3 – 2/3 s1 + 1/3 s2 + s4 = 2/3 x1, x2, s1, s2, s3, s4 ≥ 0 . Solution de base: (z, x, s) = (38/3, 10/3, 4/3, 0, 0, 3, 2/3). Cette solution est optimale puisque, dans toute solution réalisable, z = 38/3 – 1/3 s1 – 4/3 s2 et que s1 = s2 = 0 dans la solution actuelle. 14 Exemple 2. max s.c. 20 x1 + 10 x2 x 1 + 2 x2 x1 + x2 x1 x2 x1 ≥ 0, x2 ≤ 120 ≤ 100 ≤ 70 ≤ 50 ≥ 0 Sous forme normale modifiée, ce problème devient: max z s.c. z – 20 x1 – 10 x2 = 0 x 1 + 2 x 2 + s1 = 120 x 1 + x2 + s2 = 100 x1 + s3 = 70 x2 + s4 = 50 x1 ≥ 0, x2 ≥ 0, si ≥ 0 (i = 1,...,4) Solution de base (z, x, s) = (0,0,0,120,100,70,50). Pour améliorer la solution courante, x1 entre en base et peut augmenter jusqu'à 70. Par voie de conséquence, s3 sort de la base. Après élimination de x1, on obtient: max z s.c. z – 10 x2 2 x2 x2 x1 + 20 s3 = + s1 – s3 = + s2 – s3 = + s3 = x2 + s4 = x1 ≥ 0, x2 ≥ 0, si ≥ 0 (i = 1,...,4) 1400 50 30 70 50 A présent, on a donc: x1, s1, s2, s4 en base, x2, s3 hors base. Solution de base associée: (1400, 70, 0, 50, 30, 0, 50). 15 50 (par la contrainte 1), 30 2 (par la contrainte 2) et 50 (par la contrainte 4). En combinant ces conclusions, on voit que 50 l’augmentation de x2 est limité à = 25. 2 Si x2 entre en base avec valeur 25, alors s1 sort. Après élimination de x2, on trouve: Si la variable x2 entre en base, son augmentation est limitée à max z s.c. z x2 + 5 s1 + 1/2 s1 – 1/2 s1 + s2 x1 – 1/2 s1 + 15 s3 – 1/2 s3 – 1/2 s3 + s3 + 1/2 s3 = 1650 = 25 = 5 = 70 + s4 = 25 On a maintenant: x1, x2, s2, s4 en base s1,s3 hors base et la solution de base associée est (z,x,s) = (1650, 70, 25, 0, 5, 0, 25). Cette solution de base est optimale puisque z = 1650 – 5 s1 – 15 s3 et s1 = s3 = 0. Dans les deux exemples précédents, la méthode du simplexe nous a permis d’identifier une solution optimale du problème posé. Il faut cependant remarquer que tout problème de programmation linéaire n'admet pas nécessairement de solution optimale. En particulier, on voit facilement que certains problèmes n'admettent aucune solution réalisable. Il suffit, pour s'en convaincre, de considérer le mini-exemple suivant: max x1 s.c. x1 ≤ 1 x1 ≥ 2. Pour une illustration plus "réaliste", on peut également penser à une situation où la demande excède la capacité de production d'un atelier, ou bien au cas d'un projet qui ne peut pas être terminé dans les délais impartis. On dit que de tels problèmes sont irréalisables. Par ailleurs, même si il est réalisable, un problème peut ne posséder aucune solution optimale. Ici encore, un petit exemple numérique fournit une illustration immédiate de cette observation: 16 max x1 s.c. x1 ≥ 2. De tels problèmes sont dits non bornés: quelle que soit la valeur Z, il existe une solution réalisable x ∈ P telle que la valeur de la fonction objectif en x est meilleure que Z. L’exemple suivant montre comment la méthode du simplexe peut identifier les problèmes non bornés. Exemple 3. min s.c. z = – 3 x 1 + 2 x2 – x 3 x1 – 2 x2 + 4 x3 + s1 – 2 x1+ 4 x2 – x3 + s2 x1, x2, x3, s1, s2 = 8 = 6 ≥ 0 . (3) (4) (5) Ce problème est déjà sous forme standard. On le met sous forme standard modifiée en remplaçant (3) par la contrainte z + 3 x1 – 2 x2 + x3 = 0. Variables en base: s1, s2 Variables hors base: x1, x2, x3 Solution de base: (x, s) = (0, 0, 0, 8, 6), avec z(x) = 0. Choisissons comme variable entrante une variable avec coefficient négatif dans z (puisque z doit diminuer). Deux variables sont candidates: x1 ou x3. Le critère de Dantzig propose de trancher ce dilemme en sélectionnant la variable qui possède le coefficient le plus négatif dans z (le plus positif pour un problème de maximisation). Remarquons qu’il s’agit là d’un critère intuitivement attirant et empiriquement efficace, mais qui ne doit pas nécessairement être appliqué pour obtenir une implantation correcte de la méthode du simplexe. Supposons donc que x1 entre en base. Si x2 et x3 restent hors base (et donc, égaux à 0), de combien peut augmenter x1 ? La contrainte (4) impose x1 ≤ 8. Par contre, la contrainte (5) ne place aucune borne supérieure sur x1 puisqu'elle est équivalente (sous l'hypothèse x2 = x3 = 0) à −2x1 ≤ 6, et que cette inégalité est satisfaite par toute valeur non négative de x1. Donc la variable sortante est la variable de base de la contrainte (4), c'est-à-dire s1. 17 Eliminons x1 de toutes les équations autres que (4): min z s.c. z x1 x1, + 4 x2 – 11 x3 – 3 s1 – 2 x2 + 4 x3 + s1 7 x3 + 2 s1 + s2 x2, x3, s1, s2 ≥ 0 = –24 = 8 = 22 (3’) (4’) (5’) A présent, les variables de base sont x1, s2, les variables hors base sont x2, x3, s1, et la solution de base est (x, s) = (8, 0, 0, 0, 22). On a z = −24 − 4 x2 + 11 x3 + 3 s1. Variable entrante: x2 peut entrer en base puisqu'il a un coefficient négatif dans z. Si x3 et s1 restent hors base, de combien peut augmenter x2? • L’équation (4’) ne pose aucune contrainte sur x2 (elle est équivalente à: – 2 x2 ≤ 8). • L’équation (5’) ne pose aucune contrainte sur x2 (puisque x2 n'y intervient pas). Donc x2 peut augmenter de façon illimitée. Conclusion: le problème est non borné. Lorsque x2 augmente indéfiniment, il est toujours possible de trouver des valeurs de x1, x3, s1, s2 telles que (x,s) est réalisable et telles que z tend vers −∞. x1 = 8 + 2 x 2 s = 22 2 Plus précisément, toute solution de la forme: x 2 = arbitraire x 3 = s1 = 0 est réalisable quelque soit x2 ≥ 0 et la valeur correspondante de la fonction objectif, donnée par: z = −24 – 4x2, est arbitrairement petite. Exercice: Vérifier cette affirmation en substituant les valeurs proposées pour x1, x2, x3, s1, s2 dans la formulation de départ (3)–(5). 18 6. La méthode du simplexe. Ayant à présent acquis quelque familiarité avec la méthode du simplexe, nous pouvons tenter d’en décrire les caractéristiques essentielles. La méthode du simplexe procède par itérations successives. Au début de chaque itération, le problème à résoudre est sous forme standard « modifiée ». Plus précisément, le système est écrit sous la forme générique: max/min z n s.c. z − ∑ c x = v j=1 j j n ∑ a x =b (i = 1,..., m) i j = 1 ij j xj ≥ 0 (j = 1,..., n) (6) (7) (8) (9) La valeur des coefficients a ij , c j , bi et v varie d’itération en itération. Le système (7)–(8) est un dictionnaire associé à un ensemble de variables en base ( xj : j ∈ B ) (où l’ensemble B varie en cours d’exécution) et z (que nous omettrons souvent de mentionner explicitement, puisque z est toujours en base). Notons, en particulier, que c j = 0 si x j est en base. Avant de pouvoir démarrer l’exécution de la méthode du simplexe, il est nécessaire de disposer d'une solution de base initiale réalisable, c'est-à-dire d'une solution de base x ∈ P (où P désigne la région réalisable). Pour formuler plus précisément cette condition, appelons solution de base initiale la solution de base associée au dictionnaire disponible au début de la première itération. Nous supposerons que la propriété suivante est satisfaite: Hypothèse 0: La solution de base initiale est réalisable. Remarquons cependant qu’il s’agit là d’une hypothèse non triviale: trouver une solution de base initiale est en effet très simple (il suffit d’appliquer la méthode de Gauss-Jordan), mais rien ne garantit que la solution ainsi obtenue sera réalisable ! En fait, nous avons déjà observé dans la section précédente que certains problèmes de programmation linéaire n’admettent aucune solution réalisable. Par ailleurs, même si le problème considéré est réalisable, trouver, c'est-à-dire calculer, une solution réalisable peut constituer en soi un problème difficile (on peut établir rigoureusement que trouver une solution réalisable est exactement aussi difficile que résoudre un problème de programmation linéaire). Il existe des techniques générales permettant de construire une solution de base initiale réalisable ou de décider que le problème considéré est irréalisable (méthode du grand M, méthode 19 des deux phases), mais nous n'entrerons pas ici dans la description de ces techniques et nous nous contenterons donc d’adopter l’Hypothèse 0. Nous verrons dans quelques instants que la réalisabilité des solutions de base est préservée par la méthode du simplexe: si l’Hypothèse 0 est satisfaite, alors, tout au long des itérations, la solution de base associée au dictionnaire (7)–(8) (c’est-à-dire, la solution obtenue en posant xj = 0 pour j ∉ B) est réalisable. En d’autres termes, à chaque itération, b i ≥ 0 pour i = 1,...,m. A chaque itération de la méthode du simplexe, le dictionnaire courant est transformé en un nouveau dictionnaire. Cette transformation repose sur la sélection d'une variable entrante, disons xe, telle que c e > 0 pour un problème de maximisation (et ce < 0 pour un problème de minimisation). Plus précisément, une itération de la méthode du simplexe consiste en l’exécution des trois étapes décrites ci-dessous. Méthode du simplexe. Etape 1: Sélection de la variable entrante. Choisir une variable entrante, disons xe, telle que c e > 0 pour un problème de maximisation ( ce < 0 pour un problème de minimisation). Si il n'y a plus de telle variable, alors stop: la solution de base courante est optimale. Etape 2: Sélection de la variable sortante. (i) Si a ie ≤ 0 pour tous les indices i = 1, ..., m, alors stop: le problème est non borné (pas de solution optimale). (ii) Sinon, choisir une variable sortante, disons xq, de la façon suivante: déterminer une ligne p (équation pivot) telle que bp a pe - b = min i : a ie > 0, i = 1,..., m a ie (critère du quotient) xq est la (seule) variable de base de la ligne p. Etape 3: Mise à jour du dictionnaire et de la solution courante. Définir une nouvelle base par: B∪{e}\{q}, calculer le dictionnaire associé en éliminant xe de toutes les équations (7) et (8) sauf l'équation pivot, et calculer la solution de base correspondante. Retourner à l'étape 1. 20 Ceci termine (provisoirement) la description (d’une itération) de la méthode du simplexe. Nous allons à présent établir rigoureusement que cette méthode est correcte. Tout d’abord, nous devons nous assurer que la solution de base obtenue au terme de chaque itération est bien réalisable (il s’agit donc ici de vérifier la validité de l’affirmation énoncée en début de section). Lemme. Si la solution de base associée au dictionnaire initial est réalisable, alors chacune des solutions de bases produites par la méthode du simplexe est réalisable Démonstration. On procéde par récurrence. Supposons que x(0), la solution de base disponible au début d'une itération quelconque, est réalisable. Il suffit alors d’établir que x(1), la solution calculée au cours de cette même itération, est également réalisable. Supposons (sans perte de généralité) que x(0) est associé aux variables en base {x1, ..., xm}. Le dictionnaire correspondant a donc la forme: x1 x2 + a1,m+1 x m+1 + a 2 , m +1 x m +1 +L +L + a1n x n = + a 2n x n = b1 b2 + a m , m +1 x m +1 + L + a mn x n = bm O xm et (0) x j = 0 pour (0) xj = bj pour j = m + 1,..., n j = 1,..., m . Puisque x(0) est réalisable, b j ≥ 0 pour j = 1,..., m. Supposons encore que xn est choisi comme variable entrante et xm comme variable sortante (ligne pivot = m). La solution de base x(1) est alors obtenue en annulant toutes les variables (nouvellement) hors base, c'est-à-dire en posant (1) x j = 0 pour j = m, ..., n–1. 21 La valeur des variables (nouvellement) en base est calculée en résolvant le système résiduel. On obtient donc: x (1) n = bm a mn et (1) x j = b j − a jn x (1) n = b j − a jn b m / a mn pour j = 1,..., m − 1. (1) Pour démontrer que x(1) est bien réalisable, il nous reste simplement à montrer que x j ≥ 0 pour j = 1, ..., m. Tout d'abord, puisque b m ≥ 0 et a mn = a pe > 0 (voir étape 2(ii) de la méthode du bm simplexe), on voit que x (1) ≥ 0. n = a mn Par ailleurs, pour j = 1, ..., m–1: • si a jn ≤ 0, alors x (1) j = b j − a jn • si a jn > 0, alors bm b ≥ 0 (puisque b j ≥ 0 et a jn m ≤ 0); a mn a mn bj bm ≤ (par l’étape 2(ii), où m = p et n = e), et donc x (1) j ≥ 0. a mn a jn (1) En conclusion: x (1) est réalisable. j ≥ 0 pour j = 1, ..., n, et donc x CQFD Nous sommes prêts pour le résultat principal de cette section: Théorème 1. Si la méthode du simplexe stoppe à l'étape 1, alors la solution courante est optimale. En d’autres termes : i) Pour un problème de maximisation, si c j ≤ 0 pour chaque j = 1, …, n, alors la solution de base courante est optimale. ii) Pour un problème de minimisation, si c j ≥ 0 pour chaque j = 1, …, n, alors la solution de base courante est optimale. Démonstration. Supposons que le problème considéré est un problème de maximisation (la démonstration serait similaire pour un problème de minimisation). Par le lemme 22 précédent, la solution courante est réalisable. Par ailleurs, lorsque la méthode du simplexe termine à l’étape 1, le problème à résoudre a la forme (6)–(9), avec z = v + ∑ j∉B c j x j , c j = 0 pour tout j ∈ B (puisque les variables de base sont toujours éliminées: voir la discussion préliminaire et l'étape 3 de la méthode du simplexe) et c j ≤ 0 pour j ∉ B (par l’étape 1). Donc, pour la solution de base courante, z = v, et pour toute solution réalisable, z ≤ v (puisque xj ≥ 0 pour j = 1,...n). Par conséquent, la solution courante est optimale. C.Q.F.D. Théorème 2. Si la méthode du simplexe stoppe à l'étape 2(i), alors le problème est non borné. Démonstration. Considérons à nouveau le cas d'un problème de maximisation. Supposons, comme dans la démonstration du lemme, que B = {1, ..., m} et e = n (donc c n > 0). Si la méthode du simplexe s’arrête à l’étape 2(i), cela signifie que a ie = a in ≤ 0 pour i = 1, ..., m. Analysons les solutions du système (8) obtenues en posant xj = 0 pour j = m+1, ..., n–1. Ce sont donc toutes les solutions (x1, ..., xn) pour lesquelles x 1 = b1 − a 1n x n x 2 = b 2 − a 2n x n M x m = b m − a mn x n x = ... = x = 0 m+1 n −1 x n arbitraire. (10) Remarquons que pour toute valeur de xn ≥ 0, la solution (unique) de (10) est réalisable (puisque b i ≥ 0 et a in ≤ 0 pour i = 1, ..., m). Par ailleurs, la valeur de la fonction objectif en cette solution est donnée par: z = v + ∑ j∉ B c j x j = v + c n x n . Il suffit maintenant de remarquer que cette valeur de z peut être rendue arbitrairement grande, puisque c n > 0. CQFD Illustrons encore l’application de la méthode du simplexe sur un dernier exemple numérique qui nous fournira l’occasion de formuler quelques remarques supplémentaires. 23 Exemple 4. max x1 + 2 x2 s.c. x1 + 2 x2 ≤ 6 2 x 1 + x2 ≤ 8 x2 ≤ 2 x1 ≥ 0, x2 ≥ 0. Sous forme standard modifiée, le problème s’écrit: max z s.c. z – x1 – 2 x2 =0 x1 + 2 x2 + s1 =6 2 x 1 + x2 + s2 =8 x2 + s3 = 2 x1, x2, s1, s2, s3 ≥ 0 (11) (12) (13) (14) 1. Variable entrante: x2 (par le critère de Dantzig) 2. Variable sortante: critère du quotient: 6 8 2 min , , = 2 2 1 1 Donc, la ligne pivot est la ligne (14) et s3 est la variable sortante. 3. Eliminer x2: max z s.c. z – x1 x1 2 x1 + 2 s3 = 4 + s1 – 2 s3 = 2 + s2 – s3 = 6 x2 + s3 = 2 x1, x2, s1, s2, s3 ≥ 0 (11) (12) (13) (14) 1. Variable entrante: x1 2 6 2. Critère du quotient: min , = 2 1 2 La ligne (12) est la ligne pivot et s1 est la variable sortante. 3. Eliminer x1 24 max z s.c. z + s1 x1 + s1 – 2 s3 – 2 s1 + s2 + 3 s3 x2 + s3 x1, x2, s1, s2, s3 ≥ 0 = 6 = 2 = 2 = 2 Ce dictionnaire est optimal. Les variables en base sont x1, x2, s2 et les variables hors base sont s1 et s3. La solution optimale est (x1, x2, s) = (2, 2, 0, 2, 0), avec valeur: z* = 6. Remarquons que la variable hors base s3 a un coefficient c j égal à 0 dans l'équation « fonction objectif » z = 6 – s1 + 0 s3. Donc, si s3 entre en base, la valeur de la fonction objectif ne devrait pas en être affectée. Pour vérifier ceci, essayons d'effectuer l'itération du simplexe correspondante: 1. 2. s3 entre en base 2 2 Critère du quotient: min , 2 = 3 3 → ligne pivot: (13) variable sortante: s2 3. Eliminer s3 (sauf dans (13)): max z s.c. z + s1 x1 – 1/3 s1 + 2/3 s2 – 2/3 s1 + 1/3 s2 + s3 x2 + 2/3 s1 – 1/3 s2 x1, x2, s1, s2, s3 ≥ 0 = 6 = 10/3 = 2/3 = 4/3 Les variables en base sont x1, x2, s3 et les variables hors base sont s1 et s2. 10 La solution (x, s) = ( , 4 ,0,0, 2) est donc optimale, avec valeur z* = 6. On retrouve ainsi 3 3 3 (c’est heureux!) la même valeur optimale que celle obtenue pour la solution (2,2,0,2,0). De façon plus générale, nous pouvons formuler l’énoncé suivant. 25 Théorème 3. Si il existe plusieurs solutions optimales, alors, dans chaque dictionnaire optimal, c j = 0 pour une des variables hors base xj (et donc, cette variable peut entrer en base sans changer la valeur de z). Notons cependant que la réciproque de cet énoncé n’est pas valide. Enfin, nous terminons cette longue section avec quelques remarques de natures diverses. Remarque 1. Telle que nous l’avons présentée, la méthode du simplexe peut entrer dans un cycle infini d’itérations! Pour éviter ce problème, il faudrait choisir de façon appropriée les variables entrantes et sortantes dans les étapes 1 et 2 de chaque itération. Nous ne discuterons pas ce point plus en détail ici. Remarque 2: Interprétation géométrique. En termes géométriques, l’ensemble des solutions réalisables d’un problème de programmation linéaire forme un polyèdre. Les solutions de base correspondent aux sommets (points extrêmes) de ce polyèdre et les itérations successives de la méthode du simplexe définissent un chemin parcourant ces sommets par ordre de valeur croissante (pour un problème de maximisation). Ainsi, lors de la résolution de l'Exemple 2, nous avons énuméré trois solutions de base dont les composantes (x1, x2) étaient respectivement (0,0), (70,0) et (70,25). Le lecteur vérifiera qu’il s’agit bien là de trois des sommets du polyèdre associé, de valeur respective 0, 1400 et 1650. On peut démontrer rigoureusement le résultat suivant: Théorème 4. Pour un problème de programmation linéaire de la forme optimiser z s.c. x ∈ P, seuls quatre cas peuvent se présenter: (i) P = ∅ : le problème n'est pas réalisable; (ii) P ≠ ∅ et l'optimum de z n'existe pas: le problème est non borné; (iii) P ≠ ∅ et le problème possède une solution optimale unique qui coïncide nécessaire ment avec un sommet, ou point extrême de P; (iv) P ≠ ∅ et le problème possède une infinité de solutions optimales qui forment un côté, ou face, de P. 26 Remarque 3. Les manuels élémentaires de recherche opérationnelle et les logiciels didactiques présentent souvent la méthode du simplexe sous forme de tableaux reprenant les coefficients des contraintes (7)–(8) sous forme condensée. Ainsi, pour l'Exemple 3, les tableaux successifs seraient: Base z x1 x2 x3 s1 s2 Solution Z 1 3 –2 1 0 0 0 s1 0 1 –2 4 1 0 8 s2 0 –2 4 –1 0 1 6 Z 1 0 4 –11 –3 0 –24 x1 0 1 –2 4 1 0 8 s2 0 0 0 7 2 1 22 Cette présentation permet d’automatiser les calculs lors d'une résolution manuelle, mais obscurcit considérablement leur signification. Cette difficulté est renforcée par de nombreuses conventions non standardisées. Par exemple, il est fréquent d'omettre la colonne z dans cette présentation (puisqu’elle n'est jamais modifiée). De même, certains auteurs multiplient la ligne z par –1 (c'est-à-dire qu’ils écrivent la fonction objectif sous la forme − z + ∑ c j x j = − v ). Il ne s'agit que d'une convention d’écriture, mais qui ne contribue pas à la clarté de la présentation ! Enfin, remarquons qu'aucun logiciel de programmation linéaire destiné à résoudre des problèmes de taille réaliste n'utilise les tableaux du simplexe, en raison de l’inefficacité des implantations informatiques de cette méthode. 7. Description matricielle des dictionnaires. Pour la suite de notre discussion, il sera commode de disposer de notations matricielles qui nous permettront de décrire de façon compacte les dictionnaires du simplexe. Considérons donc à nouveau le programme linéaire sous la forme standard familière: 27 n max z = ∑ c j x j j=1 n s.c. ∑ a ij x j = b i j =1 xj ≥ 0 (i = 1,..., m) (FS) (j = 1,..., n). Notons: c = [c 1 ,...,c n ], x1 x = M , x n a 11 K a 1n A= , a m1 K a mn b 1 b = M . b m En utilisant ces notations matricielles, (FS) peut alors s'écrire de façon compacte: max z = c x s.c. Ax = b (FS) x≥0 où cx et Ax sont des produits matriciels (vecteur × vecteur et matrice × vecteur). Nous allons à présent formuler l’hypothèse que le système Ax = b admet au moins une solution et que rang(A) = m. (Ces hypothèse ne sont pas très restrictives, puisqu'une application de la méthode de Gauss-Jordan permet de vérifier la première hypothèse et de supprimer, le cas échéant, les lignes linéairement dépendantes du système.) Soit maintenant x = (xB, xN) une solution de base de (FS), où xB représente le sousvecteur des variables en base et xN celui des variables hors base. Les variables en base et hors base induisent également une partition des colonnes de A de la forme A = [ B | N ] et l'on peut donc réécrire le système des contraintes sous la forme: Ax = BxB + NxN = b. (10) A quoi correspond l'élimination des variables en base dans les contraintes, c’est-à-dire l’application de la méthode de Gauss-Jordan ? Remarquons que le nombre de variables en base, c'est-à-dire le nombre de colonnes de B, est exactement égal au nombre de contraintes. Donc, B est une matrice carrée de dimension m×m. Supposons à présent que B est également inversible et prémultiplions le système d’équations (10) par B–1. On obtient ainsi le système équivalent: 28 xB + B–1 N xN = B–1 b. (11) Sous cette forme, chaque variable de base apparaît dans une et une seule contrainte, comme requis dans un dictionnaire. Par ailleurs, la fonction objectif peut s'écrire z = cx = cB xB + cN xN (12) où cB (respectivement cN) est le sous-vecteur des coefficients de la fonction objectif associés aux variables en base (respectivement hors base). Pour éliminer les variables en base de cette expression, on peut substituer (11) dans (12) et exprimer ainsi la fonction objectif sous une forme équivalente, mais dans laquelle interviennent seulement les variables hors base: z = cB (B–1 b – B–1 N xN) + cN xN = cB B–1 b + (cN – cB B–1 N) xN. (13) En annulant les variables hors base, c'est-à-dire en posant xN = 0 dans (11) et (13), on obtient alors une solution de base pour laquelle xB = B–1 b, xN = 0 (14) et z = cx = c B B −1 b. (15) On peut résumer la discussion précédente par quelques définitions: Définition 1. Une base de (FS) est une sous-matrice carrée inversible de A. Si B est une base, alors le dictionnaire associé à B est le système: z + (c B B −1 N − c N )x N = c B B −1 b (16) x B + B −1 N x N = B −1 b. (17) La solution de base associée à B est la solution x = (xB, xN) = (B–1b, 0). La base B est dite réalisable si la solution de base associée à B est réalisable, c’est-à-dire si toutes les composantes du vecteur B–1b sont non négatives. Cette discussion montre que, lorsqu’un ensemble de variables en base est connu, il n’est pas nécessaire d’effectuer des itérations de la méthode du simplexe pour déterminer le dictionnaire associé à ces variables en base. Il suffit d’identifier les vecteurs (cB,cN) et les 29 matrices (B,N) associés au choix des variables en base, d’inverser B, et de calculer le système (16)-(17). Bien sûr, ceci ne constitue pas un fait très surprenant: en effet, si l’on connaît l’ensemble des variables en base, nous savons déjà que la méthode d’élimination de Gauss-Jordan permet d’obtenir rapidement le dictionnaire associé à ces variables. Au delà de cette observation élémentaire, le système (16)-(17) est surtout intéressant en ceci qu’il nous fournit une représentation compacte (analytique) du dictionnaire considéré en terme des données originales du problème (B, N, b, etc). Cette propriété se révèlera particulièrement précieuse lorsqu’il s’agira d’effectuer l’analyse de sensibilité de la solution optimale (puisque l’analyse de sensibilité cherche essentiellement à déterminer comment la solution optimale d’un problème est affectée par une modification des données de départ). Notons enfin, pour terminer, que les critères de réalisabilité et d'optimalité de la solution de base courante sont aisément exprimés pour le dictionnaire (16)-(17) (voir Théorème 1): • la solution de base associée à B est réalisable si et seulement si B–1b ≥ 0; • pour un problème de maximisation, la solution de base associée à B est optimale si cBB–1N − cN ≥ 0; • pour un problème de minimisation, la solution de base associée à B est optimale si cBB–1N − cN ≤ 0. Exemple 5. min z = –3 x1 + 6 x2 – 4 x3 s.c. x1 – 2 x 2 + x 3 = 8 –2 x1 + 4 x2 – x3 + s2 = 6 x1, x2, x3, s2 ≤ 0 . Considérons la solution (x1, x2, x3, s2) = (0, 7, 22, 0). On vérifie facilement que cette solution est réalisable. De plus, s’il s’agit d’une solution de base (ce qui n’est pas a priori évident), alors elle doit nécessairement correspondre au choix suivant des variables en base et hors base, respectivement: x B = [ x 2 , x 3 ] et x N = [ x1 ,s2 ] , et −2 1 B= 4 −1 (pourquoi ?) 30 A présent, puisque (x1, x2, x3, s2) = (0, 7, 22, 0) est réalisable, que xN = 0 et que B est inversible, on peut conclure que cette solution est effectivement une solution de base. Cherchons le dictionnaire associé. On a : 1 / 2 1 / 2 , B −1 = 1 2 1 0 N= −2 1 c B = [ 6 − 4] , c N = [ −3 0] , et on calcule: −1 / 2 1 / 2 B −1 N = , 1 0 c B B − 1 N − c N = −3 − 1 − −3 0 = 0 − 1 8 7 B −1 b = B −1 = 6 22 c B B −1 b = − 46. Le dictionnaire associé à B s’écrit donc: −1 z + (c B B N − c N ) x N = z + [0 x + −1 / 2 1 / 2 x 1 = 7 B 0 1 s 2 22 ou encore − s 2 = −46 z x 2 − 1 / 2 x 1 + 1 / 2 s2 = 7 x3 + s 2 = 22 x1 − 1] = −46 s 2 31 On en conclut que (x1, x2, x3, s2) = (0, 7, 22, 0) est une solution optimale du problème considéré. 8. Analyse de sensibilité. Armés de la représentation matricielle des dictionnaires du simplexe, nous voilà enfin prêts pour aborder le sujet de l’analyse de sensibilité ou analyse post-optimale. En termes généraux, l’analyse de sensibilité s’intéresse aux questions suivantes: si les paramètres cj ou bi ou aij du problème de départ sont modifiés, la solution optimale en est-elle affectée, et si oui, comment peut-on recalculer à peu de frais la nouvelle solution optimale ? Dans les situations pratiques, il s'agit bien souvent d'une des phases les plus importantes du processus de modélisation/résolution. En effet, les paramètres des modèles réels sont rarement connus avec exactitude ou certitude (quelle sera la composition exacte du carnet de commande le mois prochain ? quel est précisément le taux de production de telle ligne d'assemblage ? quel est le coût de stockage de tel article ?). De plus, la valeur de certains paramètres peut éventuellement être modifiée suite à l'analyse des résultats (augmentation du budget d'investissement, accroissement des capacités, etc.). Il est alors utile d'évaluer, le plus efficacement possible, l'impact de telles modifications sur les décisions prises. Dans le cadre restreint de ce cours introductif, nous étudierons seulement certains aspects de cette question générale. En particulier, nous limiterons notre analyse à des variations des coefficients de la fonction objectif (cj) ou des membres de droite des contraintes (bi). Comme dans les sections précédentes, nous nous intéresserons au problème de programmation linéaire sous forme standard (FS). Nous supposerons en outre que le problème (FS) admet une solution optimale, disons x* = (x*B,x*N) (faute de quoi l’analyse de sensibilité n’a pas de raison d’être). Une telle solution peut être calculée par la méthode du simplexe. Cette méthode fournit également une base optimale B et le dictionnaire associé à B, sous la forme (16)-(17). 8.1. Variations de la fonction objectif. Supposons que la fonction objectif c est remplacée par c'. Ceci n'a aucune influence sur les contraintes (17) (la solution courante reste réalisable), mais bien sur l’expression (16) de la 32 fonction objectif. On peut calculer l’expression de la nouvelle fonction objectif en fonction des variables hors base sous la forme: z + (c'BB–1N − c'N) xN = c'B B–1 b (16') Deux cas sont à présent possibles: (i) si c'BB–1N − c'N ≥ 0 pour un problème de maximisation (≤ 0 pour un problème de minimisation), alors x* reste optimal avec valeur c'BB–1b ; (ii) si une des composantes de c'BB–1N − c'N est strictement négative pour un problème de maximisation (strictement positive pour un problème de minimisation), alors on ne peut pas conclure à l’optimalité de la solution courante x* et il faut continuer les itérations du simplexe à partir du système (16')−(17). Les possibilités (i) et (ii) épuisent, en principe, l’ensemble des questions que l’utilisateur peut se poser sur la sensibilité de la solution optimale à des variations de la fonction objectif. En particulier, le calcul du coût réduit d’une variable xk peut être traité dans ce cadre. Définition 2. Pour j = 1,...,n, le coût réduit de la variable xj dans le dictionnaire optimal (16)−(17) est la plus petite valeur de |δ| telle que, lorsque cj est remplacé par cj + δ dans la fonction objectif du problème (FS), la variable xj devient candidate à entrer en base dans (16)-(17). Pour comprendre l'utilité pratique de cette définition, il importe de réaliser que, dans la solution optimale x* du problème (FS), m variables au plus prennent une valeur non nulle: en effet, par définition des solutions de base, x ∗j = 0 pour chaque variable hors base x ∗ . j En termes économiques, ceci signifie que m au plus des activités possibles (production, stockage, investissement, etc) sont effectivement exercées. Les autres activités (hors base) ne sont pas « profitables », du moins si l’on tient compte des contraintes liant les différentes activités entre elles. Dans ce contexte, il devient légitime de se demander pour quelles valeurs des coefficients cj de la fonction objectif chacune de ces activités hors base resterait non profitable. La plupart des logiciels de programmation linéaire répondent à cette question en mentionnant la valeur du coût réduit de chaque variable dans leurs rapports d’analyse de sensibilité. Il est clair que, si la variable xj est en base dans (16)−(17), alors son coût réduit est nul par définition. Nous concentrerons donc notre attention sur le cas des variables hors base. Pour ces variables, lorsque (FS) est un problème de maximisation, l’intuition suggère que la 33 valeur de δ considérée dans la Définition 2 doit être positive ou nulle. La même définition s’applique cependant à un problème de minimisation, auquel cas la valeur de δ est négative ou nulle. Mais remarquons bien que le coût réduit lui-même, c’est-à-dire |δ|, est toujours non négatif ! Note. Une certaine confusion règne dans la littérature quant à la formulation exacte à adopter pour la définition des coûts réduits. Ainsi, différents auteurs appellent « coût réduit » la quantité δ ou –δ, plutôt que |δ|. Ceci est d’autant plus gênant que les logiciels de PL communiquent généralement la valeur des coûts réduits sans préciser leur définition. La convention adoptée ici semble la plus simple à mémoriser et ne prête pas à confusion. Considérons une variable hors base particulière, disons xk. Appelons c’ le vecteur obtenu en remplaçant ck par ck + δ (les autres coefficients de c restant inchangés) et Ak la colonne de N associée à xk (nous supposons ici que xk est une variable hors base dans la solution optimale courante). Pour que xk puisse entrer en base, il faut que c'BB–1Ak − c'k soit négatif ou nul (si (FS) est un problème de maximisation). Puisque c'B = cB et c'k = ck + δ, cette condition se traduit par cBB–1Ak − ck − δ ≤ 0 ou encore δ ≥ cBB–1Ak − ck. Le membre de droite de cette inégalité n’est rien d’autre que la composante k du vecteur cBB–1N − cN (noté − c k dans le système (6)-(9)). On a ainsi établi le résultat suivant: Théorème 5. Le coût réduit de la variable xk est égal à | ck | , c'est-à-dire à la valeur absolue du coefficient de xk dans la ligne (16) du tableau optimal, pour k = 1, ..., n. Notons que ce résultat s’applique à toutes les variables, qu’elles soient en base ou hors base (puisque | ck | est nul pour les variables en base) et aux problèmes de minimisation comme à ceux de maximisation (Nous n’avons pas traité explicitement le cas des problèmes de minimisation et préférons laisser ce soin au lecteur.) Pour être tout à fait complet, précisons encore quelque peu la propriété essentielle du coût réduit de xk: lorsque le coefficient ck de xk varie de | ck | unités ou moins, alors non seulement xk n’est pas candidat à entrer en base, mais la solution optimale n’est affectée en rien par cette modification. Formellement: 34 Théorème 6. Supposons que xk soit une variable hors base pour le dictionnaire optimal (16)-(17) et supposons que le coefficient ck de xk augmente de δ unités dans la formulation (FS) (c’est-à-dire, ck est remplacé par ck + δ). Pour un problème de maximisation, si δ ≤ | c k | (pour un problème de minimisation, si δ ≥ − | c k | ), alors la solution de base x* reste optimale pour le problème ainsi modifié. Revenons enfin, une dernière fois, sur l’interprétation économique du coût réduit. Quand le problème (FS) est vu comme un problème de maximisation du profit, cette interprétation est très simple: si le profit unitaire attaché à l’activité non profitable k (associée à xk) subit une augmentation inférieure ou égale à | c k | , alors la solution optimale n’est pas affectée par cette modification et, en particulier, l’activité économique k reste non profitable. Pour un problème de minimisation des coûts, une analyse similaire à la précédente conduirait à une interprétation similaire du coût réduit | c k | : si le coût unitaire attaché à l’activité non profitable k subit une diminution (en valeur absolue) inférieure ou égale à | c k | , alors la solution optimale n’est pas affectée par ce changement et, en particulier, l’activité économique k reste non profitable. Exemple 6. max z = 3x1 + 2x2 (18) s.c. x1 + 2x2 ≤ 6 ← s1 (19) 2x1 + x2 ≤ 8 ← s2 (20) x2 ≤ 2 ← s3 (21) x1, x2 ≥ 0 (22) (ce problème est presque identique à l’Exemple 1 de la Section 5). Les variables en base à l'optimum sont x1, x2, s3 (rappel: le nombre de variables en base est égal au nombre de contraintes). Donc, 1 2 0 B = 2 1 0 0 1 1 ( x 1 )( x 2 )(s3 ) 35 B −1 2 / 3 0 −1 / 3 = 2 / 3 −1 / 3 0 −2 / 3 1 / 3 1 c B = [3 2 0] 1 N = 0 0 c N = [0 0 1 0 0] c B B −1 = [1 / 3 4 / 3 0] c B B −1 N = [1 / 3 4 / 3] z x 1 ⇒ x2 + 1 / 3 s1 − 1 / 3 s1 + 2 / 3 s1 − 2 / 3 s1 + 4 / 3 s2 + 2 / 3 s2 − 1 / 3 s2 + 1 / 3 s2 + s3 = 38 / 3 = 10 / 3 = 4/3 = 2/3 On en déduit donc que le coût réduit de s1 vaut 1/3 et le coût réduit de s2 vaut 4/3. Attardons-nous quelques instants sur une interprétation économique possible de ce résultat. Supposons que la contrainte (19) soit associée à l’existence d’une ressource (par exemple, un minerai) dont les activités 1 et 2 consomment un certain nombre d’unités. La firme ne dispose que de 6 unités de la ressource et la contrainte (19) modélise cette disponibilité limitée. La variable d’écart s1 = 6 – x1 – 2x2 peut alors être interprétée comme le nombre d’unités de la ressource qui ne sont pas utilisées lorsque les activités 1 et 2 sont exercées aux niveaux x1 et x2, respectivement. En particulier, dans le plan de production optimal, la ressource est entièrement utilisée et s1 = 0. Le modèle (18)–(22) suppose implicitement que la firme ne tire aucun profit des unités inutilisées (puisque le coefficient de s1 dans la fonction objectif (18) est nul). Imaginons à présent que la firme parvienne à dégager un profit de 0,25 (unités monétaires) sur chaque unité inutilisée de la ressource (par exemple, en revendant ces unités sur un marché secondaire). La solution optimale s’en trouve-t-elle modifiée ? La réponse est non: puisque le coût réduit de s1 vaut 1/3, la solution optimale reste inchangée tant que le profit par unité de ressource inutilisée n’excède pas 1/3. Par contre, si le profit par unité inutilisée de la ressource s’élevait à 0,50, alors l’activité « revente de la ressource » deviendrait profitable (la nouvelle solution optimale serait: (z, x, s) = (13, 4, 0, 2, 0, 5, 2)). 36 D’autres renseignements peuvent être extraits du dictionnaire optimal. Demandons nous, par exemple, dans quel intervalle peut varier c2 (le coefficient de x2) sans affecter l'optimalité de (x*1, x*2) = (10/3, 4/3). (La variable x2 est en base à l’optimum et les coûts réduits ne procurent donc aucune information à ce sujet.) Pour répondre à la question, posons c'2 = 2 + δ. On a alors c'B = [3, 2 + δ, 0 ]. Exprimons les conditions d’optimalité: −1 / 3 2 / 3 c' B B N − c' N = [3 2 + δ 0] 2 / 3 −1 / 3 − [0 0] −2 / 3 1 / 3 4 1 1 2 = + δ − δ ≥ 0. 3 3 3 3 −1 Ces conditions sont satisfaites pour autant que − 1 ≤ δ ≤ 4 , ce qui signifie que x* reste 2 optimal tant que c2 varie dans l'intervalle [3/2, 6] 8.2. Variations des membres de droite des contraintes. Si le membre de droite des contraintes, c’est-à-dire le vecteur b, est remplacé par un nouveau vecteur b', alors la condition d'optimalité cBB–1N − cN ≥ 0 (ou ≤ 0) n'en est pas affectée. La nouvelle solution de base (xB,xN) = (B–1b',0) associée à la base courante est donc optimale pour autant qu'elle soit réalisable. Puisque cette solution satisfait (par construction) au système des contraintes Ax = b', elle sera réalisable, et donc optimale, si et seulement si B–1b' est non négatif. Cette dernière condition permet de conduire l’analyse de sensibilité relative aux changements du membre de droite des contraintes. Il est peut-être nécessaire d’insister sur la signification précise de ces observations. Lorsque b est remplacé par b’, et que B–1 b' ≥ 0, la solution optimale reste celle associée à la même base B; autrement dit, les mêmes variables restent en base à l’optimum. Mais, en général, la solution optimale, c’est-à-dire la valeur prise par les variables en base à l’optimum, subit une modification: xB devient B–1b’ au lieu de B–1b (en termes économiques, les mêmes activités restent profitables suite à la modification des ressources, mais elles sont exercées à un niveau différent). De même, la valeur optimale de la fonction objectif (le profit optimal) est généralement affectée par la modification du vecteur b. 37 Appliquons par exemple cette approche à la question suivante: dans quel intervalle peut varier bi, le membre de droite de la contrainte i, sans affecter l'optimalité de la base courante ? Il suffit pour répondre à cette question de remplacer bi par b'i et d’exprimer que B–1 b' ≥ 0. Exemple 6 (suite). Pour l’Exemple 6 traité plus haut, voyons dans quel intervalle peut varier b2 sans affecter l’optimalité de la base B: B −1 −2 + 2 / 3 b' 2 6 b' = B b' 2 = 4 − 1 / 3 b' 2 , −2 + 1 / 3 b' 2 2 −1 donc B–1 b’ ≥ 0 si et seulement si b'2 ∈ [6,12]. Introduisons à présent la notion de prix dual des contraintes. Pour comprendre ce concept, considérons d'abord un problème de type « maximisation du profit », où chacune des contraintes modélise la disponibilité limitée d’une des ressources: n max z( x) = ∑ c j x j j=1 n s.c. ∑ a ij x j ≤ b i (i = 1,..., m) j=1 x j ≥ 0 (j = 1,..., n). Pour de tels problèmes, il est légitime de s’interroger sur l’ampleur du « manque à gagner » causé par la rareté des ressources. En d’autres termes, il est intéressant pour la firme de connaître le profit additionnel qu’elle pourrait enregistrer si elle s’appropriait une unité supplémentaire de la ressource i. Similairement, pour un problème de minimisation des coûts sous contraintes de demande, de la forme: 38 n min z( x ) = ∑ c j x j j=1 n s.c. ∑ a ij x j ≥ b i (i = 1,..., m) j=1 x j ≥ 0 (j = 1,..., n) la firme peut s'interroger sur l'augmentation des coûts que provoquerait une augmentation marginale de la demande. De telles interrogations conduisent naturellement à la définition suivante: Définition 3. Pour un problème de programmation linéaire, le prix dual (ou prix interne, ou prix marginal) de la contrainte i est la variation − positive, négative ou nulle − de la valeur optimale du problème lorsque le membre de droite de la contrainte i augmente d'une unité, c'est-à-dire lorsque bi est remplacé par bi + 1. Dans un problème de maximisation du profit, il est facile de se convaincre que le prix dual de la contrainte i est le prix maximum que la firme sera prête à payer pour remplacer bi par bi + 1. Ceci justifie la terminologie « prix interne »: il s’agit de la valeur à laquelle la firme évalue une unité de la ressource i, en termes de l’usage interne qu’elle pourrait faire de cette unité. Une interprétation similaire peut être établie dans la cadre d'un problème de minimisation des coûts. Pour calculer les prix duaux, posons y* = cBB–1. En examinant le dictionnaire (16)−(17), on constate que la valeur optimale du problème avant modification du vecteur b est égale à cBB–1b = y* b = m ∑y b ∗ i i . Supposons que la base B reste réalisable, et donc optimale, i =1 suite à la modification de b. On conclut alors que, lorsque bi augmente d’une unité, la valeur optimale du problème augmente de yi*. On parvient ainsi au résultat suivant: Théorème 7. Pour i = 1, …, m, le prix dual de la contrainte i est égal à yi*, où (y1*,..., ym*) = cBB–1. Le Théorème 7 n’est valide que pour un intervalle de variation du membre de droite de chaque contrainte i tel que la base B reste optimale après modification de bi dans cet intervalle (c’est-à-dire, tel que l’ensemble des variables en base reste inchangé). Nous supposerons dorénavant que la définition des prix duaux ne s’applique que sous cette restriction, et nous pourrons donc parler de « domaine de validité des prix duaux ». 39 Exemple 6 (suite). Nous avons calculé plus haut le vecteur y* : y* = cB B–1 = [1/3 4/3 0]. Le prix dual de la contrainte 3 est nul: donc, si b3 passe de 2 à 3 unités, la valeur optimale du problème ne change pas (cette conclusion pouvait être attendue, puisque la contrainte 3 n’est pas active à l'optimum). Si b2 passe de 8 à 9 unités, par contre, la valeur des variables en base est donnée par 4 6 −1 −1 B b' = B 9 = 1 , 1 2 c’est-à-dire (x1,x2,s3) = (4,1,1), et la valeur optimale passe de 38/3 à 38/3 + 4/3 =14. Remarquons que la base courante est bien réalisable (puisque (x1,x2,s3) ≥ 0). En fait, dans notre analyse précédente, nous avons établi que la base B reste optimale pour toute valeur de b'2 ∈ [6,12]. Donc, [6,12] est le domaine de validité du prix dual de la contrainte 2. De même, si b1 passe de 6 à 7 unités, alors la valeur optimale du problème augmente de 1/3 (on vérifie que ce prix dual est valide dans l'intervalle [4,7]). Nous avions déjà anticipé ce résultat lors de notre discussion du coût réduit de s1, dans la section précédente. En termes d’achat, 1/3 est le juste prix auquel la firme évalue une unité supplémentaire de la ressource 1. En termes de revente (comme dans la Section 7.1), 1/3 est le juste prix auquel la firme évalue la « dernière » unité de cette ressource en sa possession. Si le prix du marché est inférieur à 1/3, alors la firme préfère acheter (ou conserver) une unité de cette ressource et la consommer dans son plan de production. Par contre, si le prix du marché est supérieur à 1/3, alors la firme préfère ne pas acquérir (ou ne pas conserver) cette dernière unité de ressource. Cette interprétation justifie bien la terminologie « prix interne ». 9. Dualité. Dans cette dernière section, nous allons établir un des résultats fondamentaux de la théorie des programmes linéaires, le théorème de dualité forte. Commençons par un exemple introductif. Une histoire écossaise ... McElpee et McKedalle sont les propriétaires respectifs de deux partageant l’ensemble du marché des armoires à Simplex City. produisent des armoires identiques, dans les trois modèles standards fabrication de ces trois modèles requiert des planches en stratifié firmes rivales se Les deux firmes A1, A2 et A3. La (pour les parties 40 visibles) et des planches en aggloméré non recouvert (pour les parties cachées), en les quantités suivantes: Stratifié Aggloméré Profit unitaire A1 A2 A3 3 1 500 3 3 650 5 4 800 (par exemple, chaque armoire A1 requiert 3 planches de stratifié et 1 planche d’aggloméré et rapporte £500). Les firmes sont identiques en tous points ... excepté que McElpee (comme son nom l’indique) utilise la programmation linéaire pour établir ses plans de production, alors que McKedalle (comme son nom le suggère) n’a jamais rien compris aux méthodes scientifiques. Un beau jour, son stock de planches étant épuisé, McElpee appelle son rival pour s’enquérir de la possibilité de lui racheter une partie de ses stocks. McKedalle possède 3000 planches de stratifié et 2000 planches d’aggloméré dont il n’a pas encore déterminé le meilleur usage. En particulier, il ne connaît pas encore la valeur réelle que représente ce stock de planches pour sa firme. Il propose donc à McElpee de lui faire une offre de prix en fonction de laquelle il donnera sa réponse. Suite à cette conversation, McElpee se précipite sur son logiciel de programmation linéaire et a tôt fait d’établir le modèle suivant: max z = 500A1 + 650A2 + 800A3 s.c. 3A1 + 3A2 + 5A3 + s1 = 3000 A1 + 3A2 + 4A3 + s2 = 2000 A1, A2, A3, s1, s2 ≥ 0 (18) (19) (20) (21) dont la solution optimale est (A1,A2,A3,s1,s2) = (500,500,0,0,0), de valeur £575.000. Il ne lui semble donc pas trop difficile de faire à McKedalle une offre d’apparence raisonable, quoique largement profitable pour McElpee. Par exemple, en achetant les planches stratifiées à £120 et les planches en aggloméré à £80, McElpee débourserait £520.000 et s’assurerait ainsi un bénéfice confortable de £55.000. Le lendemain, McElpee appelle donc à nouveau McKedalle et lui formule son offre à £120 et £80. Après une longue nuit de réflexion, cependant, McKedalle, finit par flairer l’astuce. En effet, aux prix annoncés, chaque armoire A1 coûte 3×120 + 1×80 = £440, et laisse donc un profit unitaire de £60 à McElpee. Mais dans ce cas, et si les £120 et £80 représentent réellement la valeur interne des matières pour les deux firmes, McKedalle n’a aucune raison de laisser son rival récolter le profit et préfère donc produire lui-même les armoires A1. (Il pourrait, par exemple, produire lui-même 1000 armoires A1 et vendre les 1000 planches d’aggloméré inutilisées à McElpee, ce qui lui procurerait un revenu total de £580.000.) Il rejette donc l’offre de McElpee, qui s’en trouve bien marri. 41 Echaudé par cette expérience, McElpee décide d’approcher plus systématiquement le problème de la détermination des prix. Il lui faudrait fixer des prix ps et pa, raisonne-t-il, de telle sorte qu’aucune activité ne paraisse profitable à McKedalle. Ces prix devraient donc satisfaire au système de contraintes suivant: 3ps + pa ≥ 500 3ps + 3pa ≥ 650 5ps + 4pa ≥ 800 ps ≥ 0 pa ≥ 0. (22) (23) (24) (25) (26) Par ailleurs, le prix total déboursé devrait être aussi faible que possible. En d’autres termes, McElpee doit résoudre le problème: minimiser PT = 3000ps + 2000pa sous les contraintes (22)-(26). (27) En résolvant ce programme linéaire, McElpee obtient la solution optimale ps = £141,66, pa = £75 et PT = £575.000. Le prix total à payer est donc exactement égal au bénéfice optimal qui pourrait être réalisé en acquérant les stocks !! En termes économiques, le marché est en parfait équilibre. L’égalité observée dans l’exemple précédent n’est pas le fruit d’une simple coïncidence. Pour mieux comprendre ce phénomène, généralisons d’abord le raisonnement tenu par McElpee. A tout problème de maximisation sous forme standard max z = c x s.c. Ax = b x ≥ 0, on associe un problème de minimisation, dit problème dual: min w = b y s.c. yA ≥ c y non restreint en signe. (P) (D) Le problème de fixation des prix (22)−(27) formulé par McElpee est donc exactement le dual du problème de production (18) −(21). De même, au problème de minimisation sous forme standard min z = c x s.c. Ax = b (P) x≥0 on associe le problème de maximisation dual 42 max w = b y s.c. yA ≤ c y non restreint en signe. (D) Dans ce contexte, (P) est appelé problème primal de (D). Remarquons que, si (P) comporte n variables et m contraintes, alors (D) comporte m variables et n contraintes (une variable par contrainte de (P), et une contrainte par variable de (P)). Au prix d'une mise sous forme standard, tout PL a un problème dual. En particulier, le dual du dual (c’est-à-dire, le problème dual de (D)) existe. On peut montrer que le dual du dual est un problème de programmation linéaire équivalent au problème primal (cette dernière affirmation est beaucoup moins évidente que les précédentes; nous ne la démontrerons pas formellement, mais le lecteur pourra vérifier sa validité sur les exemples numériques). Existe-t-il une relation entre les valeurs optimales de (P) et de (D) ? Le théorème suivant apporte une première réponse à cette question. Théorème de dualité faible. Si x est une solution réalisable de (P) et y est une solution réalisable de (D), alors cx ≤ by lorsque (P) est du type 'maximisation' et cx ≥ by lorsque (P) est du type 'minimisation'. Corollaire. Si (P) et (D) admettent des solutions optimales (disons x* et y*, respectivement), alors cx* ≤ by* lorsque (P) est du type 'maximisation' et cx* ≥ by* lorsque (P) est du type 'minimisation'. Démonstration du théorème (dans le cas où (P) est du type 'max'). Soient x et y des solutions réalisables de (P) et (D) respectivement. Puisque c ≤ yA et x ≥ 0, on déduit: cx ≤ yAx = yb = by. CQFD Exemple 5 (suite). Reprenons un exemple traité dans la Section 7: min z = –3 x1 + 6 x2 – 4 x3 s.c. x1 – 2 x 2 + x 3 = 8 –2 x1 + 4 x2 – x3 + s2 = 6 43 x1, x2, x3, s2 ≤ 0 . Le dual de ce problème s’écrit: max w = 8 y1 + 6 y2 s.c. y1 – 2 y2 – 2 y1 + 4 y2 y1 – y2 y2 ≤ ≤ ≤ ≤ –3 6 –4 0. En la solution primale (x1,x2,x3,s2) = (8,0,0,22), la fonction objectif z prend la valeur −24. De même, en (y1,y2) = (−5,−1), w vaut −46. Il s’ensuit que: −46 ≤ max w ≤ min z ≤ −24. Par ailleurs, la solution (x1,x2,x3,s2) = (0,7,22,0) est également réalisable pour (P) et la fonction objectif y prend la valeur z = −46. On peut donc conclure que cette solution est optimale pour (P), puisque nous savons par l’inégalité précédente que la valeur d’aucune solution primale n’est inférieure à −46. Plus généralement, pour montrer qu'une solution réalisable x* de (P) est également optimale pour (P), il suffit d'exhiber une solution réalisable y* de (D) telle que cx* = by*. Le théorème suivant montre que si x* est optimal, alors ceci est toujours possible: Théorème de dualité forte. Si (P) admet une solution optimale x*, alors (D) admet une solution optimale y* et cx* = by*. Plus précisément, si x* est une solution de base optimale de (P) associée à la base B, alors y* = cBB–1 est optimal pour (D) et cx* = by*. Démonstration. Nous allons seulement considérer le cas où (P) est un problème de maximisation (l’autre cas est similaire). Soit x* une solution de base optimale de (P) associée à la base B. Le dictionnaire obtenu à la dernière itération du simplexe peut s’écrire (voir (16)-(17)): z + (c B B −1 N − c N )x N = c B B −1 b x B + B −1 N x N = B −1 b. et x ∗B = B −1 b. Par le critère d'optimalité du simplexe, cBB–1N − cN ≥ 0 (puisque (P) est un problème de maximisation). Définissons à présent y* = cBB–1. On remarque que, trivialement: 44 c x* = cB B–1 b = y* b. Au vu du théorème de dualité faible et des remarques formulées ci-dessus, il suffit maintenant, pour établir que y* est une solution optimale de (D), de montrer que y* est réalisable pour (D). Il suffit donc de montrer que y* A ≥ c , c’est-à-dire, puisque A = [B N] et c = [cB, cN ], que y * B ≥ c B y * N ≥ c N . Mais ces condition sont bien satisfaites, puisque y* B = cB B–1 B = cB et y* N = cB B–1 N ≥ cN (comme mentionné plus haut). CQFD Pour illustrer le théorème et sa démonstration, reprenons une fois de plus l'Exemple 5. Exemple 5 (suite). Nous avons établi dans la Section 7 que la solution (x1, x2, x3, s2) = (0, 7, 22, 0) est bien une solution de base optimale associée à la base −2 1 B= 4 −1 et de valeur −46. Calculons 1 / 2 1 / 2 y* = c B B −1 = [6 − 4] = [ −5 − 1]. 1 2 Comme prévu, y* est réalisable pour le problème dual et y*b = (−5×8) + (−1×6) = −46. Il est intéressant de remarquer que le vecteur y* introduit dans le Théorème de dualité forte est le même que celui intervenant dans le Théorème 7. Le Théorème 7 pourrait donc être reformulée de la façon suivante: le prix dual de la contrainte i est égal à la valeur optimale de la variable duale yi. Mentionnons enfin, si il en est encore besoin, que le Théorème de dualité forte explique l’équilibre de marché constaté par McElpee: pour le plan de production optimum, il est 45 possible d’affecter un prix interne à chacune des ressources de telle sorte que la valeur totale des ressources utilisées soit égale au profit dégagé par leur utilisation. Références. V. Chvátal, Linear Programming, W.H. Freeman and Company, 1983. G.B. Dantzig, Linear Programming and Extensions, Princeton University Press, 1963. G.D. Eppen, F.J. Gould and C.P. Schmidt, Introductory Management Science (4ème éd.), Prentice Hall, 1993. H.A. Taha, Operations Research: An Introduction (5ème éd.), McMillan Publishing Company, 1992.