Programmation Linaire FIIFO 4
Transcription
Programmation Linaire FIIFO 4
Cours FIIFO 4 PROGRAMMATION LINÉAIRE Cours de Abdel LISSER Rédigé par Marc SIBERT Mise à jour le 26 mai 2004 -1- Cours FIIFO 4 TABLE DES MATIÈRES I. Introduction à la programmation linéaire......................................................................................4 II. Rappels de la programmation linéaire (PL)..................................................................................7 II.1. Idées de base........................................................................................................................... 7 II.2. Théorème de la dualité........................................................................................................... 8 II.2.1. Programme linéaire dual.................................................................................................8 II.2.2. Dualité faible en PL........................................................................................................ 9 III. Analyse de la complexité............................................................................................................10 III.1. Calcul de la complexité...................................................................................................... 10 III.2. Complexité de la méthode du Simplexe............................................................................10 IV. Programmation semi-définie et problème de sac-à-dos quadratique......................................12 IV.1. Exemple............................................................................................................................... 12 IV.2. Linéarisation des termes quadratiques...............................................................................13 IV.3. Programmation Semi-définie Positive (PSD)................................................................... 13 IV.3.1. Rappels......................................................................................................................... 13 IV.4. Formulation SD du problème (Qkp)................................................................................ 15 V. Dualité et PSD.............................................................................................................................. 16 V.1. Exemple................................................................................................................................. 16 V.2. Dualité en PSD..................................................................................................................... 16 V.3. Exemple de programme non linéaire convexe.................................................................... 17 V.4. Formulation du problème primal-dual................................................................................17 A. Annexe – Travaux Dirigés 1........................................................................................................ 19 Exercice 1...................................................................................................................................... 19 Exercice 2...................................................................................................................................... 20 Exercice 3...................................................................................................................................... 22 Exercice 4...................................................................................................................................... 25 VII. Annexe – Travaux Dirigés 2..................................................................................................... 27 Exercice 1...................................................................................................................................... 27 Solutions...................................................................................................................................27 Exercice 2...................................................................................................................................... 28 Solutions...................................................................................................................................28 -2- Cours FIIFO 4 Qu'est ce que la Recherche Opérationnelle exemple : affectation des 60 fréquences disponibles pour chaque cellule d'un réseau G.S.M. (jusqu'à 3000 cellules dans une ville moyenne). C'est un problème quadratique (produit de variables). Il existe 3 manières de résoudre de tels problèmes : 1. par linéarisation : pour des problèmes booléens x ∈{0, 1} x∈[0..1] (relaxation linéaire) donne une borne inférieure qui donne une idée de la qualité ; 2. par heuristique ; 3. par relaxation semi-définie (S.D.P.). Nous utiliserons des logiciels de programmation linéaire : • CPlex de Ilog -3- Cours FIIFO 4 I. INTRODUCTION À LA PROGRAMMATION LINÉAIRE G.B. Dantzig (1947) découvre la méthode des simplexes pour l'optimisation ou l'affectation des ressources C'est la plus grande avancée / invention du XXème siècle. La taille des programmes linéaires a fortement augmenté (très lié à l'informatique), de quelques dizaines de variables à plusieurs millions aujourd'hui, accompagné par une grande évolution algorithmique : le simplex a une complexité en O(2n). Karmarkar (1984) : algorithme polynomial ayant une complexité O(n3,5L2) dit des « Points Intérieurs ». Il permet l'implémentation de la relaxation semi-définie Secteurs d'utilisation : télécommunications, chimie (pétrole), finance, agro-alimentaire, transport, etc. C'est un modèle puissant qui généralise des problèmes classiques : - plus court chemin ; - flot max ; - multiflots ; - arbres courants de poids minimum ; - jeux à sommes nulles - etc. Exemple : fabrication de bière Brune (A) Blonde (B) Quantités Maïs (C) (livres) 5 15 480 Houblon (H) (onces) 4 4 160 Malt (M) (livres) 35 20 1190 L'entrepreneur cherche à minimiser le coût des choses produites (problème dual) Fonction objectif min 480 C 160 H 1190 M critère de l'entrepreneur 5 C 4 H 35 M ≥13 (A) critère du brasseur sous les 15 C 4 H 20 M ≥23 (B) critère du brasseur contraintes C , H et M ≥0 critère des cours des matières { Le brasseur cherche à maximiser ses ventes / bénéfices (problème primal) fonction objectif max 13 A23 B 5 A15 B≤480 (C) ne pas dépasser les stocks sous les 4 A4 B≤160 (H) contraintes 35 A20 B≤1190 (M) A , B≥0 { La solution du primal = la solution du dual Comment maximiser le profit du brasseur ? 1. Tester des possibilités : -4- Bénéfices (€) 13 23 Cours FIIFO 4 a. Allouer toutes les ressources à la fabrication de la bière blonde : 32 tonneaux → 736 € b. tout pour la brune : 34 tonneaux → 442 € c. 7,5 tonneaux de brune et 29,5 de blonde → 776 € d. 12 tonneaux de brune et 28 de blonde → 800 € Par tests aléatoires on peut arriver à la bonne solution, mais ça peut être très long. C =1 H =2 M =0 (P) A=28 B=12 (D) OPT =800 coût mini=800 solution optimale { { 2. Analyse de la sensibilité Brasseur : quel est le coût marginal pour acheter de nouvelles matières ? Maïs = 1 € ; Houblon = 2 € ; Malt = 0 € Si on veut faire une nouvelle bière qui nécessite 2 Maïs, 5 Houblons et 24 Malt. Quel profit obtenir de ce nouveau produit ? Profit : 1∗2 €2∗5 €24∗0 €=12 € le tonneau 3. Écriture matricielle du problème du brasseur1 480 13 c= b= 160 Soient le vecteur (bénéfices) et le vecteur second membre 23 1190 5 15 (quantités), la matrice A= 4 4 (composition des produits) et le vecteur de 35 20 A variables de décision x= B Le programme linéaire primal du problème s'écrit : v1 max c t x max c t x (P) s.c. A x≤b et sous forme standard (Ps) s.c. A xv=b avec v v 2 où v1, v2 et x , v≥0 x≥0 v3 { { v3 sont les variables d'écart. 1 Petit rappel : Matrice transposée : on appelle transposée d'une matrice A, la matrice notée AT, obtenue à partir de A en échangeant les lignes et les colonnes (extrait de http://www.cnam.fr/instrumesure/RsrcTelechageables/MetrologieB1/19008K_matrices.pdf). Dans ce compte-rendu, c'est la notation At qui est utilisée. Exemple : A= 1 5 3 6 7 9 1 6 AT = 5 7 3 9 Propriétés : • Transposée d'une somme : T AB = AT BT • Transposée d'un produit : T AB =BT AT -5- Cours FIIFO 4 { C y= H . Le dual de (P) s'écrit : Soit le vecteur y de variables duales défini par : M { min bt y min bt y w1 t (D) s.c. A y≥c et sous la forme standard (Ds) s.c. At yw=c avec w w2 y≥0 y , w≥0 et w2 sont les variables d'écart. -6- où w1 Cours FIIFO 4 II. RAPPELS DE LA PROGRAMMATION LINÉAIRE (PL) Soit le programme linéaire (PL) suivant sous forme standard : { min z=c t x (1.1a) n m m×n (1.1) s.c. A x=b (1.1b) c , x∈ℝ , b∈ℝ et A∈ℝ x≥0 (1.1c) où n est le nombre de variables et m le nombre de contraintes. II.1. Idées de base Soit P= { x∈ℝ n / A x=b et x≥0 } le domaine des solutions réalisables. On suppose que P est non vide et que le minimum de z est soit non borné, soit peut être atteint en un point extrême de P. [ ] * * xB Soit x* solution de base réalisable, x = * B * N x * * avec x B variables de base et x N variables hors * base. Pour les solutions réalisables x ≥0 ; x N =0 . * * De même, la matrice A peut être partitionnée en fonction de x B et x N c A=[ B∣N ] , c= B avec B∈ℝ m×m (Régulière donc divisible) cN [ ] (1.1) peut s'écrire : (1.2) { min z=c tB x B c tN x N (1.2a) B x B N x N =b (1.2b) s.c. x B , x N ≥0 (1.2c) (1.2b) devient : x B =B−1 b−B−1 N x N En remplaçant xB dans (1.2a), on obtient : z=c tB B−1 b−B−1 N x N c tN x N ⇔ z=c tB B−1 b−c tB B−1 N x N c tN x N ⇔ z=c tB B−1 bc tN −c tB B−1 N x N (1.4) z=c tB B−1 br t [ ] xB xN [ avec r= réduits. Pour x* réalisable, z* s'écrit : } variable de base 0 t N −1 t B c −c B z *=c tB B−1 b * xB N } variable hors base * avec x B =0 -7- ] qui représente les coûts Cours FIIFO 4 * t Par conséquent, (1.4) s'écrit : z−z =r [ ] xB , ∀ x∈P (1.6) xN Si r ≥ 0, i.e. toutes les composantes de c tN −c tB B−1 N sont positives et alors z−z *≥0 ∀ x∈P . Dans ce cas, x* est une solution optimale de (1.1). Si une composante de r ≤ 0, l'élément de xN correspondant peut être augmenté de 0 à une valeur positive pour réduire la valeur de z. r est appelé vecteur des coûts réduits. Théorème 1 [ ]=[ ]≥0 Si x *= x *B B−1 b 0 x *N est une solution de base réalisable dont les coûts réduits (r) sont supérieurs à 0, alors r* est solution optimale du PL (1.1). II.2. Théorème de la dualité II.2.1. Programme linéaire dual Soit le PL standard : t min c x (2.1a) n m×n m A x=b (2.1b) avec c , x∈ℝ , A∈ℝ , b∈ℝ x≥0 (2.1c) { Soit x une solution réalisable non dégénérée. Soient B et N les matrices de base et hors base. Soient B et N , les ensembles d'indices des variables de base et hors base respectivement. D'après le théorème 1, x est optimal si et seulement si r q ≥0, ∀ q∈ N ou de manière équivalente : t −1 c B B Aq ≤c q , ∀ q∈ N (1) On a aussi : c tB B−1 A p =c p , ∀ p∈ B (2) Si l'on note w t =c tB B−1 , (1) et (2) s'écrivent : w t Aq ≤c q , ∀ q∈ N w t A p≤c p , ∀ p∈ B Par conséquent, sous forme vectorielle, on a : w t [ B∣N ]≤c t ou encore At w≤c Pour la fonction objectif (xN = 0), on a : t t t t t t −1 t c B−1 b =c tB x B =c t x B B b =w b =b w=w b=c B B b=c B w wt xB d'où b w=c x t t En général, on a seulement : bt w=w t b=w t A x≤c t x -8- (pour A x=b , x≥0 ) Cours FIIFO 4 En fonction de w, on a le PL suivant : (2.2) { t max b w (2.2a) t s.c. A w≤c (2.2b) w0 ou w0 II.2.2. Dualité faible en PL Théorème 2 Si x° est solution primale réalisable, si w° est solution duale réalisable, alors c t w 0 ≥bt w 0 Corollaire 2.1 Si x° est solution primale réalisable, si w° est solution duale réalisable et c t w 0 =bt w 0 alors x° et w° sont solutions optimales du PL. Théorème 3 : dualité forte en PL 1. Si le PL primal (respectivement dual) a une solution optimale finie, alors le dual (respectivement primal) en a une. Cette solution est la même pour les 2 PL. 2. Si l'un des deux est non borné, l'autre n'est pas réalisable. Conséquences de la dualité forte : t t • Pas de saut de dualité entre primal et dual ( c x=b w ) ; • Les multiplicateurs du simplexe représentent les variables duales w ; t t • A chaque itération du simplexe, on a c x=b w ; • Le simplexe maintient : - la réalisibilité du primal, - saut de dualité = 0, - cherche la réalisibilité du dual. -9- Cours FIIFO 4 III. ANALYSE DE LA COMPLEXITÉ • Introduite en 1970 pour évaluer les performances des algorithmes • Analyse du plus mauvais cas pour mesurer la difficulté d'un problème • Mesurée par le nombre d'opérations élémentaires (+, -, *, etc.) Soit le PL suivant : min c t x où A∈ℝ m∗n , x∈ℝ n , b∈ℝ m A x=b s.c. et m , n (données entières) ≥2 x≥0 { Soit L la taille d'une instance1 qui peut être représentée par le triplet (m, n, L). La complexité sera une fonction f(m, n, L). Soit τ > 0 tel que le nombre d'opérations élémentaires nécessaires pour l'algorithme, pour une instance donnée est de l'ordre τ f(m, n, L). On dit que la complexité est de l'ordre O(f(m, n, L)). Si f (m, n, L) est polynomial, on dira que l'algorithme est polynomial. III.1. Calcul de la complexité En système binaire, il faut (r+1) bits pour représenter un entier positif ∈[2r , 2r1 ] pour r ≥ 0. Par conséquent, pour ε, il faut ⌈ log 1 ⌉ bits. Si l'on ajoute un bit pour le signe, il faut 1⌈ log 1∣∣ ⌉ pour coder un entier quelconque. Pour le PL, la taille des entrées est : n m n m L=⌈ 1log 1m ⌉⌈ 1log 1n ⌉ ∑ 1⌈ log 1∣ci∣ ⌉∑ ∑ 1⌈ log 1∣a ij∣ ⌉∑ 1⌈ log 1∣bi∣ ⌉ j=1 i=1 j=1 ou encore : n m n m L=∑ ⌈ 1log 1∣c j∣ ⌉∑ ∑ ⌈ 1log 1∣a ij∣ ⌉∑ ⌈ 1log 1∣bi∣ ⌉ j=1 i=1 j=1 i=1 III.2. Complexité de la méthode du Simplexe Elle dépend : a. du nombre d'itérations, b. du nombre d'opérations élémentaires nécessaires à chaque itération. Chaque itération de la méthode du simplexe nécessite : mn−mm12 multiplications n≫m + mn1additions 1 Une configuration de variables - 10 - i=1 Cours FIIFO 4 soit une complexité de l'ordre O(m-n) Quel est le nombre d'itérations ? Cela correspond au nombre de sommets : m n! n m Cn = ≥ ≥2m quand n≥2 m m!n−m! m Ceci est un résultat théorique ; en pratique on sait résoudre des problèmes à plusieurs millions de variables. 1970 : le russe Kachian a trouvé un algorithme polynomial en O(n6L2). 1984 : Karmarkar décrit l'algorithme des points intérieurs en O(n3,5L2). - 11 - Cours FIIFO 4 IV. PROGRAMMATION SEMI-DÉFINIE ET PROBLÈME DE SAC-À-DOS QUADRATIQUE Un randonneur veut emporter des aliments dans un sac à dos de contenance limitée. Chaque type d'aliment a une valeur énergétique propre. Quels aliments doit emporter le randonneur pour maximiser l'énergie calorique de ses aliments ? { n max ∑ t i x i (maximiser l'énergie calorique des produits) i=1 n pi x i ≤cst s.c. ∑ i=1 (capacité limitée du sac) x i ∈{0,1} Soit le problème du sac-à-dos « quadratique » : { n n max ∑ ∑ pij xi x j 1 (QKP ) i=1 j=1 z n w j x j ≤cst s.c. ∑ j=1 x j ∈{0,1} j=1, n x j ∈[0,1] z : borne inférieure de (Qkp) où pij : revenu, utilité... wj : investissement, poids... cst : budget, capacité... IV.1. Exemple [ ] 2 0 9 Soit P=[ P ij ]= 0 5 3 ; 9 3 20 w t =[ 2 3 2] ; cst=5 (QKP) s'écrit : { 2 2 2 max 2 x 1 18 x 1 x 3 5 x 2 6 x 2 x 3 20 x 3 =z 2 x 3 x 2 2 x 3 ≤5 s.c. 1 x 1, x 2, x 3 ∈{0,1} Quelques méthodes de résolution : a. relaxation linéaire b. linéarisation des termes quadratiques c. relaxation semi-définie positive d. heuristiques (réservées à la recherche de borne inférieure) 1 Quadratic Knapsack Problem : Problème du Sac-à-Dos Quadratique - 12 - Cours FIIFO 4 z z * ≤ borne inférieure z ≤ solution optimale : il faut rechercher les bornes inférieure et supérieure à l'aide borne supérieure des méthodes de résolution ci-dessus. IV.2. Linéarisation des termes quadratiques { Posons y ij =x i y j tel que y ij ∈{0,1} : (PNE1) z NE =max 2 y 1,1 18 y 1,3 5 y 2,2 6 y 2,3 20 y 3,3 2 x 1 3 x 2 2 x 3 ≤5 x 1, x 2, x 3, y 1,1 , y 2,2 , y 2,3 , y 3,3 ∈{0,1} mais il n'y a pas de relation entre les x et les y , il faut donc ajouter y ≤x s.c. 1,3 1 idem pour les autres y ij i≠ j y 1,3≤x 3 x 1 x 3−1≤ y 1,3 [ [ y 1,1≤x 1 idem pour les autres y ii 2 x 1−1≤ y 1,1 IV.3. Programmation Semi-définie Positive (PSD) En PL, x ≥ 0 ; en PSD, X ≥ 0 (au sens des matrices). IV.3.1. Rappels Une matrice X est semi-définie positive si et seulement si (ssi) : • on peut lui appliquer la factorisation de Cholesky (définie positive) : X =L Lt L Lt z =b ⇒ Lt x=b L z= x x • les valeurs propres de X i i=1, n≥0 { ∀ z ∈ℝ n , z t X z≥0 • Reprenons l'exemple de (QKP) : n n x P x=tr P x x ∑ ∑ pij x i x j =x P x=tr i=1 j=1 t t t 2 Egalité autorisée par trace 1 Programme en Nombres Entiers n 2 Trace de X : tr X =∑i=1 x ii est un réel Quelques propriétés de la trace : • • ∀ x∈ℝ , tr x= x ∀ A , B∈ℝ n∗n , tr A B=tr B A - 13 - Cours FIIFO 4 Prenons en fait un autre exemple basé sur une matrice 2x2 plus simple à calculer : 2 1 Soient P= et x= x 1 1 3 x2 [ ] x 12 x1 x 2 x 1 ⇒xx = x 1 x 2 = x2 x 2 x1 x 22 t t ⇒P xx = 2 x 12 x 2 x 1 2 x 1 x 2 x 22 x 12 3 x 2 x 1 x 1 x 2 3 x 22 ⇒ tr P x x t =2 x 12 2 x 2 x 1 3 x 22 x1 x= x 2 , on obtient : Si l'on conduit les mêmes calculs sur x3 t x 12 x1 x 2 x1 x3 x 22 X =x x = x 2 x 1 x 2 x 3 ≥0 x 32 x 3 x1 x3 x 2 La fonction objectif du problème de sac-à-dos quadratique s'écrit : n 2 0 0 2 avec w= 3 , W = 0 3 0 et ∑ w i x i =tr W X i=1 0 0 2 2 { min tr P X s.c. X ≥0 tr W X ≤5 La PSD permet de prendre en compte les variables en 0-1 : ∣ ∣ X= X x1 x 2 x3 2 x1 x2 x3 x4 1 = x 12 x 1 ⇒ 0 ≤ x 1 ≤1 x1 1 x = x (car x∈{0, 1}) et diag X = x et x 4 =1 w1 0 On pose W = ⋮ 0 3 0 w2 ⋱ ⋯ ⋯ ⋱ w3 0 ∑ w j x j ≤5 ⇔ tr W X ≤5 j=1 0 2 ⋮ 3 = 2 0 0 0 avec R= p 0 0 0 (mais d'où ça sort ???) Le programme SD (semidéfini) de (Qkp) s'écrit : - 14 - Cours FIIFO 4 { max tr R X s.c. tr W X ≤5 X ≥0 Résultat du programme : Z *SDP =43,7 Z *=43 1 0,35 X= 1 1 0,35 0,33 0,36 0,33 1 0,36 1 1 1 0,33 1 1 IV.4. Formulation SD du problème (Qkp) Le PSD permet de formuler le problème (Qkp) de plusieurs manières. Afin de renforcer la borne inférieure, on peut transformer la contrainte du sac-à-dos de la manière suivante : (F1) Formulation initiale : ∑ j w j x j ≤5 avec X = X xt x 1 (F2) 1ère formulation : ∑3j=1 w j x j ≤5 2 (F3) 2ème formulation : ∑ j w j x j −5 ≤0 2 2 (F4) 3ème formulation : ∑ j w j x j ≤5 2 (F5) 4ème formulation : ∑ j w j x j ≤5 ∑ j w j x j −5 (F6) 5 ème formulation : { x i ∑3j=1 w j x j ≤5 x i 1− x i ∑3j=1 w j x j ≤51− x i - 15 - ∀ i=1, 2 , 3 Cours FIIFO 4 V. DUALITÉ ET PSD V.1. Exemple Soit le PL primal suivant : min 2 x 1 3 x 2 (1) (PLp) s.c. 4 x 1 5 x 2 ≥6 (2) (y) x 1, x 2 ≥0 { Soit le dual de (PLp) : max 6 y (3) 4 y≤2 (4) (PLd) s.c. 5y≤3 (5) y≥0 { Soient les matrices F0, F1 et F2 telles que : 6 0 4 0 5 0 F0 = ; F1 = ; F2 = 0 0 0 0 0 0 { Soit la matrice Y définie par Y = (SDPp) y 0 , la relaxation SD primale de (PLp) s'écrit : 0 0 min 2 x 1 3 x 2 s.c. x 1 F 1 x 2 F 2 F 0 ≥0 Le dual de (SDPp) s'écrit : max−tr F 0 Y tr F 1 Y ≤2 (SDPd) s.c. tr F 2 Y ≤3 Y ≥0 { équivalent à la fonction object du PLd eq. à la contrainte 4 eq. à la contrainte 5 V.2. Dualité en PSD On considère le problème de minimisation d'une fonction linéaire de x ∈ℝ m sous contraintes d'inégalités matricielles (IML) : { min c t x (1) s.c. F x≥0 w où F x=−F 0 ∑ x i F i (2) i=1 Les données du problème sont le vecteur c∈ℝ m et m+1 matrices symétriques F 0, ... , F m ∈ℝ n∗m . - 16 - Cours FIIFO 4 Le signe de l'inégalité F x≥0 signifie que F(x) est SDP i.e. z t F x z≥0, ∀ z ∈ℝ n . F(x) est appelée Inégalité Matricielle Linéaire (IML) et (1) est appelé PSD. Un PSD est un problème d'optimisation convexe. On peut considérer le PSD (1) comme un programme linéaire semiinfini puisque l'inégalité matricielle F x≥0 est équivalente à un ensemble infini de contraintes linéaires en x, i.e. z t F x z≥0, ∀ z ∈ℝ n . V.3. Exemple de programme non linéaire convexe { c t x2 (4) t d x s.c. Axb≥0 min avec d t x0 quand Axb≥0 On introduit une variable auxiliaire t (borne supérieure pour la fonction objectif) min t min t Axb≥0 (5) diag Axb 0 0 t 2 t s.c. c x s.c. t c x ≥0 ≤t dt x ct x d t x {[ { ] Le dual de (1) s'écrit : max−tr F 0 Z (6) s.c. tr F i Z =c i , i=1, ... , m Z ≥0 { Dans (6), on a Z =Z t ∈ℝ n∗n Propriété Le dual donne une borne au primal et vice versa : m c t xtr Z F 0 =∑ tr Z F i x i tr Z F 0 =tr Z F x≥0 i=1 on déduit (aisément ;-) : −tr F 0 Z ≤c t x Le saut de dualité associé à x et Z : = c t xtr F 0 Z =tr F x Z (où = signifie « s'exprime par ») V.4. Formulation du problème primal-dual { min c t xtr F 0 Z s.c. F x≥0, Z ≥0 tr F i Z =c i ,i=1, ... , m - 17 - Cours FIIFO 4 Ce PSD peut être résolu à l'aide des méthodes de points intérieurs. - 18 - Cours FIIFO 4 A. ANNEXE – TRAVAUX DIRIGÉS 1 Intervenant : M. BENAJAM ([email protected]) Exercice 1 Le nombre chromatique d'un graphe G=(X,U) est le nombre minimal de couleurs nécessaires pour colorier les sommets du graphe de telle façon que deux sommets adjacents ne soient jamais de la même couleur. Montrer que le problème de la recherche du nombre chromatique d'un graphe G=(X,U) peut se modéliser comme un programme linéaire en nombres entiers. Les couleurs que l'on peut utiliser étant numérotées de 0 à k où k est le degré maximal des degrés des sommets du graphe, on prendra comme inconnues xi le numéro de la couleur associée au sommet i. Réponses Exemple : nombre mini de couleur pour ce graphe : 3 Variables Afin de simplifier le programme, ce ne sont pas celles proposées par l'énoncer. x il ∈{0,1} si le sommet i reçoit la couleur l y l ∈{0,1} si la couleur l est utilisée avec le maximal du nombre de points voisins de l ∈{1, ⋯, 1} i∈ X chacun des sommets. Ici =4 . Fonction objectif 1 min ∑ y l l =1 Contraintes • ∀ i , j∈U , ∀ l ∈{1, ... , 1} : x il x lj ≤1 (2 sommets adjacents n'ont pas la même couleur) • l ∀ i∈ X : ∑1 l=1 x i =1 (tous les points possèdent une couleur) • • ∀ i∈ X , l ∈[1... 1] : x li ≤ y l (si un sommet a une couleur, alors cette couleur a été sélectionnée) x li ∈{0,1} et y l ∈{0,1} Pour faire l'exercice avec les variables de l'énoncé : - 19 - Cours FIIFO 4 Contraintes x i ≠ x j (écriture qui doit être transformée) ⇒ x i x j ou x i x j Exercice 2 Soit le graphe G=(X,A) de la figure 1. X correspond à l'ensemble des nœuds et A l'ensemble des arcs. Les valeurs indiquées sur les arcs ij correspondent aux coût du routage. 3 3 2 4 4 3 6 2 9 6 1 10 2 5 4 Figure 1 1. Écrire le programme linéaire PL1 correspondant au problème du plus court chemin du nœud 1 au nœud 6. 2. Déduire de PL1, le programme linéaire PL2 correspondant au problème du plus court chemin du sommet 1à tous les autres nœuds. Les contraintes du problème du plus court chemin doivent respecter la conservation des flots dans les nœuds et la positivité des variables de flots. 1. Algorithme existant et utilisable pour résoudre ce problème : Dijkstra1 de complexité polynomiale. Variables x ij ∈{0,1} (si un arc ij appartient au chemin) Fonction objectif min z avec 6 6 z=∑ ∑ cij x ij =3 x 1,2 2 x 1,4 10 x 2,3 6 x 2,4 3 x 3,6 2 x 3,5 9 x 3,4 4 x 4,5 4 x 5,6 i=1 j=1 coût Contraintes Par convention, on donne un poids positif aux arcs sortant d'un sommet et négatif pour ceux y entrants. 1. x 1,2 x 1,4 =1 (0 entrant, 1 sortant : départ) 1 Edsger Wybe Dijkstra (1930-2002) : a donné son nom à un algorithme qui résout un problème du plus court chemin pour un graphe (http://fr.wikipedia.org/wiki/Algorithme_de_Dijkstra) - 20 - Cours FIIFO 4 2. −x 1,2 x 2,3 x 2,4 =0 (1 entrant, 2 sortants) 3. −x 2,3 x 3,4 x 3,5 x 3,6 =0 (1 entrant, 3 sortants) 4. −x 1,4 − x 2,4 − x 3,4 x 4,5 =0 (3 entrant, 1 sortant) 5. −x 4,5 − x 3,5 x 5,6 =0 (2 entrants, 1 sortant) 6. −x 3,6 − x 5,6 =−1 (1 entrant, 0 sortant : arrivée) Domaine x ij ∈{0,1} pour i , j∈ A 2. On garde la même fonction objectif, mais les contraintes changes. Contraintes Maintenant, le programme devant permettre de trouver les 5 chemins du sommet 1 vers chacun des autres sommets, le départ doit comporter 5 arcs partants, les autres sommets étant chacun l'arrivée d'un chemin, ils ont tous un arc de plus en entrée qu'en sortie (d'où le total à -1) : 1. x 1,2 x 1,4 =5 2. −x 1,2 x 2,3 x 2,4 =−1 3. −x 2,3 x 3,4 x 3,5 x 3,6 =−1 4. −x 1,4 − x 2,4 −x 3,4 x 4,5 =−1 5. −x 4,5 − x 3,5 x 5,6 =−1 6. −x 3,6 − x 5,6 =−1 Domaine x ij ∈{0,1} pour i , j ∈ A - 21 - Cours FIIFO 4 Exercice 3 1. Variables A chaque groupe de chaque matière, on associe une variable xi telle que xi = 1 si le groupe est retenu par l'étudiant, 0 sinon. Ex. : x1 pour Algèbre en Groupe 1, x2 pour Algèbre en Groupe 2, jusqu'à x19 pour Chimie Orga. en Groupe 3 et x20 pour Chimie Orga. en Groupe 4. Pour le - 22 - Cours FIIFO 4 Sport, viennent s'ajouter x21 pour le lundi de 13h à 15h, x22 pour le mercredi de 11h à 13h et x23 pour le mercredi de 13h à 15h. Fonction Objectif 20 ∑ x i pi où pi indique la préférence de l'étudiant (cf. Tableau 2). (Il n'y a pas de coefficient de i=1 préférence pour le sport) Contraintes a) Un seul groupe sélectionné par matière : • Algèbre : x 1 x 2 x 3 x 4 =1 • Analyse : x 5 x 6 x 7 x 8 =1 • Physique : x 9 x 10 x 11 x 12 =1 • Chimie min. : x 13 x 14 x 15 x 16 =1 • Chimie orga. : x 17 x 18 x 19 x 20 =1 Sport au moins une fois par semaine : x 21 x 22 x 23 ≥1 b) 4h de TD max. par jour (donc hors sport) : • lundi : 2 x 1 2 x 5 2 x 13 x 14 1,5 x 17 x 18 ≤4 • mardi : 2 x 2 2 x 6 3 x 9 x 10 ≤4 • mercredi : 2 x 3 x 4 2 x 7 ≤4 • jeudi : 2 x 8 3 x 11 x 12 2 x 15 ≤4 • vendredi : 2 x 16 1,5 x 19 x 20 ≤4 c) Une heure de pause minimum entre 12h et 14h : • lundi : pas de problème car l'énoncé respecte la contrainte et ne nécessite pas d'équation. • mardi : idem • mercredi : x 4 x 23 ≤1 (Algèbre ou Sport) x 7 x 23 ≤1 (Analyse ou Sport) x 22 x 23 ≤1 (2 fois Sport supprime la pause) • jeudi : pas de problème • vendredi : x 16 x 19 ≤1 (Chimie min. ou orga.) x 19 x 20 ≤1 (contrainte redondante avec le point a) - 23 - Cours FIIFO 4 d) L'étudiant ne peut être présent à plusieurs cours en même temps (don d'ubiquité) lundi : • x 1 x 2 x 15 ≤1 x x x 13 14 17 ≤1 redondante , peut aussi s'écrire avec les 2 inéquations : { x 13 x 17 ≤1 x 14 x 17 ≤1 mardi : • x2 x6 x 9 x 10 ≤1 redondante x 9 x 10 ≤1 , mais là c'est tellement redondant que c'est inutile x x x x 22 ≤1 • mercredi : • jeudi : x 11 x 12 ≤1 , redondant donc inutile • vendredi : 3 4 7 redondant x 16 x 20 ≤1 x 19 x 20 ≤1 inutile Pour résumer, le PL s'écrit donc : { 20 max ∑ x i p i i=1 a) b) s.c. c) d) ∀ x i ∈{0, 1},i={1, ..., 23} 2. On reprend le programme pour lequel on fixe des variables en fonction des nouvelles contraintes : a) pas de TD mercredi : x 3 =0 ; x 4 =0 ; x 7 =0 et vendredi : x 16 =0 ; x 19 =0 ; x 20 =0 b) Uniquement les TD dont la préférence est ou dépasse 5 : x 2 =0 ; x 5 =x 6 =0 ; x 9 =0 ; x 17 = x 19 = x 20 =0 On essaie ensuite de trouver les variables restantes : - 24 - Cours FIIFO 4 x 1 =1 ; x 8 =1 ; x 18 =1 (a) x 10 x 11 x 12 =1 ⇒ x 10 =1 d'après (b) x 13 x 14 x 15 =1 ⇒ x 15 =1 d'après (b) 2 2 x 13 x 14 1,5 ≤4 ⇔ 2 x 13 x 14 ≤0,5 ⇔ x 13 x 14 ≤0,25 ⇒ x 13 = x 14 =0 (b) 3 x 10 ≤4 ⇒ x 10 ≤4/3 ⇒ x 10 =1 d'après (a) 2 3 x 11 x 12 2 ≤4 ⇔3 x 11 x 12 ≤0 ⇒ x 11 =x 12 =0 Toutes les variables des TD ont une (et une seule) valeur. Il n'y a donc qu'une unique solution qui satisfasse ces contraintes : x 1 = x 8 = x 10 = x 15 =1 , les variables des TD restantes sont nulles. Reste le cas du sport pour lequel il reste les inégalités suivantes : x 23 ≤1 ; x 22 ≤1 x 21 x 22 x 23 ≤1 x 22 x 23 ≤1 Exercice 4 Un administrateur d'un hôpital doit établir l'emploi du temps des infirmières satisfaisant les contraintes données par le tableau 1. Les tours de garde de jour durent huit heures consécutives et ceux de nuits durent quatre heures. L'administrateur cherche à trouver le nombre minimum d'infirmières à embaucher. Formuler ce problème sous forme d'un programme linéaire. Tableau 1 Réponses Sûrement perturbé par les infirmières de l'énoncé ou par la température glaciale de l'amphi ce matin là, nous avons hésité dans le choix des variables, pour finalement proposer cette version. Variables xi indique le nombre d'infirmières par intervalle de 8h en journée et de 4 heures de nuit. On a donc : • x1 de 6h à 14h (8 heures), • x2 de 10h à 18h (8 heures), • x3 de 14h à 22h (8 heures), • x4 de 22h à 2h (4 heures), - 25 - Cours FIIFO 4 • x5 de 2h à 6h (4 heures). Fonction objectif 5 min ∑ x i i=1 Contraintes x 1 ≥70 ; x 1 x 2 ≥80 ; x 2 x 3 ≥50 ; x 3 ≥60 ; x 4 ≥40 ; x 5 ≥30 x i ≥0 pour i=1, 2 , ..., 5 - 26 - Cours FIIFO 4 VII. ANNEXE – TRAVAUX DIRIGÉS 2 Exercice 1 Soit le programme quadratique sans contraintes suivant : min f x= x 12 4 x 22 4 x 1 x 2 x 1, x 2 ∈{0, 1} (PQuad) 1. Donner le programme quadratique relaxé de (PQuad). 2. Après linéarisation des termes quadratiques, formuler le problème en terme de programme linéaire. 3. Écrire la relaxation semidéfinie positive de (PQuad). On utilisera la notion de trace de matrice pour formuler le programme dual SDP. 1. { 2 2 min f x= x 1 4 x 2 4 x 1 x 2 s.c. 0 ≤ x 1 ≤1 0 ≤ x 2 ≤1 (PQuadrelaxé) 2. On effectue un changement de variables afin de linéariser (PQuad). Posons y ij = x i x j . Il vient les contraintes suivantes (c'est aussi la table de vérité du ET booléen) : y ij ≤x i y ii ≤ x i y ij ≤x j d'où le cas particulier si i=j : 2 x i − y ii ≤1 x i x j − y ij ≤1 0 ≤ y ii ≤1 0 ≤ y ij ≤1 (PQuadrelaxé) linéarisé devient alors : { min y 11 4 y 22 4 y 12 (PLinrelaxé) y 11 ≤ x 1 s.c. 2 x 1 − y 11 ≤1 y 22 ≤ x 2 2 x 2 − y 22 ≤1 y 12 ≤ x 1 y 12 ≤ x 2 x 1 x 2 − y 12 ≤1 0 ≤ x 1 ≤1 0 ≤ x 2 ≤1 0 ≤ y 11 ≤1 0 ≤ y 22 ≤1 0 ≤ y 12 ≤1 Note : le programme (PLinrelaxé) donnera une solution inférieure à celle de (PQuad) ; c'est la borne inférieure. Exercice 2 - 27 - Cours FIIFO 4 Considérons le programme quadratique suivant : min f x=9 x 12 4 x 22 −18 x 1 x 2 (PQuad2) s/c 3 x 1 2 x 2 ≤6 x 1, x 2 ∈{0,1 } 1. Après linéarisation des termes quadratiques, formuler le problème en terme de programme linéaire. 2. Écrire la relaxation semidéfinie positive de (PQuad2). On utilisera la notion de trace de matrice pour formuler le programme dual SDP. 3. Pour chacune des transformations suivantes de la contrainte linéaire, écrire la nouvelle relaxation SDP : a) Remplacer x par x², b) Élever au carré les deux membres de la contrainte, c) Multiplier les deux membres par 3 x 1 2 x 2 , d) Remplacer la contrainte par 6 −3 x 1 2 x 2 ≥0 et l'élever au carré, e) Multiplier la contrainte respectivement par x 1 , x 2 , 1 − x 1 et 1 − x 2 4. Comparer les différentes relaxations. 1. Rappel : pour linéariser un problème discret, il faut appliquer le changement de variables y ij =x i x j et ajouter les contraintes suivantes : y ij ≤ x i y ij ≤ x j x i x j − y ij ≤1 y ij ∈{0,1} Ici, si l'on pose y 11 = x 12 , y 22 = x 22 et y 12 = x 1 x 2 on obtient ici le PL suivant : { min 9 y 11 4 y 22 −18 y 12 3 x 1 2 x 2 ≤6 x 1 , x 2 ∈{0,1} y ≤x 1 ; 2 x 1 − y 11 ≤1 s.c. 11 y 22 ≤ x 2 ; 2 x 2 − y 22 ≤1 y 12 ≤x 1 ; y 12 ≤ x 2 ; x 1 x 2 − y 12 ≤1 y 11 , y 12 , y 22 ∈{0,1} Dans le cadre du 1er TP, nous avons utilisé CPlex1 (c:\ilog\cplex81\bin\msvc6). Ce 1 Une présentation rapide du produit est disponible à http://www.ilog.com/products/optimization/presentations/cplexintro.pdf en anglais - 28 - Cours FIIFO 4 programme permet la résolution des : • PLC : Problèmes Linéaires Continus ( 0 ≤ x≤1 ou x0 ; • PLE : Problèmes Linéaires Entiers (valeurs discrètes des variables) ; • PQC : Problèmes Quadratiques Continus ; • PQE : Problèmes Quadratiques Entiers. Pour notre exercice, on rédigera un fichier PLE.pl ainsi : Minimize obj: 9 y11 + 4 y22 – 12 y12 Subject To (toutes les variables doivent être dans le membre de gauche de l'inégalité) c1: y11 – x1 <= 0 c2: 2 x1 – y11 <= 1 c3: y22 – x2 <= 0 c4: 2 x2 – y22 <= 1 c5: y12 – x1 <= 0 c6: y12 – x2 <= 0 c7: x1 + x2 – y12 <= 1 c8: 3 x1 + 2 x2 <= 6 Binaries x1 x2 y11 y22 y12 On peut demander la résolution du problème1 : CPLEX> read PLE.lp Problem 'PLE.lp' read. Read time = 0.03 sec. CPLEX> optimize Tried aggregator 1 time. MIP Presolve eliminated 3 rows and 0 columns. MIP Presolve modified 4 coefficients. Aggregator did 2 substitutions. Reduced MIP has 3 rows, 3 columns, and 7 nonzeros. Presolve time = 0.04 sec. Clique table members: 2 MIP emphasis: balance optimality and feasibility Root relaxation solution time = 0.00 sec. Integer optimal solution: Objective = -5.0000000000e+000 Solution time = 0.10 sec. Iterations = 2 Nodes = 0 Et CPlex nous la donne ! La solution optimale est trouvée avec une fonction objectif à -5. Reste à connaître les valeurs des variables : 1 Merci Laurent pour les copies d'écran. - 29 - Cours FIIFO 4 CPLEX> display solution variables Variable Name Solution Value y11 1.000000 y22 1.000000 y12 1.000000 x1 1.000000 x2 1.000000 Remarque : notre problème possédant peu de variables, sa résolution par cette méthode est possible. La complexité de la résolution étant exponentielle, elle ne peut pas être utilisée audelà d'une centaine de variables. Dans ce cas, il faudra commencer par transformer ce problème linéaire entier en problème linéaire continu en relaxant ses variables : { min 9 y 11 4 y 22 −18 y 12 3 x 1 2 x 2 ≤6 0 ≤ x 1 ≤1, 0 ≤x 2 ≤1 s.c. y 11 ≤x 1 ; 2 x 1 − y 11 ≤1 y 22 ≤ x 2 ; 2 x 2 − y 22 ≤1 y 12 ≤x 1 ; y 12 ≤ x 2 ; x 1 x 2 − y 12 ≤1 0 ≤ y 11 ≤1 ; 0 ≤ y 12 ≤1 ; 0 ≤ y 22 ≤1 Cela se traduit par le fichier PLC.pl suivant : Minimize obj: 9 y11 + 4 y22 – 12 y12 Subject To c1: y11 – x1 <= 0 c2: 2 x1 – y11 <= 1 c3: y22 – x2 <= 0 c4: 2 x2 – y22 <= 1 c5: y12 – x1 <= 0 c6: y12 – x2 <= 0 c7: x1 + x2 – y12 <= 1 c8: 3 x1 + 2 x2 <= 6 Bounds 0 <= x1 <= 1 0 <= x2 <= 1 0 <= y11 <= 1 0 <= y12 <= 1 0 <= y22 <= 1 Et donne le résultat suivant : CPLEX> r PLC.lp Problem 'PLC.lp' read. Read time = 0.03 sec. CPLEX> o Tried aggregator 1 time. LP Presolve eliminated 1 rows and 0 columns. Reduced LP has 7 rows, 5 columns, and 15 nonzeros. - 30 - Cours FIIFO 4 Presolve time = 0.02 sec. Iteration log . . . Iteration: 1 Dual objective = -18.000000 Dual simplex - Optimal: Objective = -9.0000000000e+000 Solution time = 0.05 sec. Iterations = 3 (0) Et les variables ont les valeurs : CPLEX> d so v Variable Name Solution Value y12 0.500000 x1 0.500000 x2 0.500000 All other variables in the range 1-5 are zero. La fonction objectif a pour valeur -9 et les variables x1, x2 et y12 valent 0,5, les autres étant nulles. On a ici a faire à une borne inférieure de la solution (z) qui se trouve à 45% de l'optimum. Cet écart est très mauvais dans le cas d'une application réelle et rend cette borne inférieure peut significative. Essayons maintenant de faire résoudre notre problème initial, c'est à dire Quadratique et Entier, sachant toujours que cela ne peut fonctionner que pour un petit nombre de variables. La rédaction du fichier est un peu différente (PQE.pl) : Minimize obj: [ 9 x1 ^ 2 + 4 x2 ^2 - 18 x1 * x2 ] / 2 Subject To: c1: 3 x1 +2 x2 <= 6 Binaries x1 x2 La fonction objectif s'écrit entre crochets et doit être suivi par la division par deux car le système s'attend à résoudre un problème de la forme : 1 min x t Q x 2 s.c Ax≤b x i ∈{0,1} { Et le résultat est celui attendu ;-) : CPLEX> read PQE.lp Problem 'PQE.lp' read. Read time = 0.03 sec. CPLEX> optimize Number of nonzeros in lower triangle of Q = 1 Using Approximate Minimum Degree ordering Total time for automatic ordering = 0.01 sec. Summary statistics for factor of Q: - 31 - Cours FIIFO 4 Rows in Factor = 2 Integer space required = 2 Total non-zeros in factor = 3 Total FP ops to factor = 5 Tried aggregator 1 time. MIQP Presolve eliminated 1 rows and 0 columns. MIQP Presolve modified 1 coefficients. Reduced MIQP has 0 rows, 2 columns, and 0 nonzeros. Presolve time = 0.11 sec. Dual steepest-edge pricing selected. MIP emphasis: balance optimality and feasibility Root relaxation solution time = 0.00 sec. Integer optimal solution: Objective = -2.5000000000e+000 Solution time = 0.15 sec. Iterations = 1 Nodes = 0 CPLEX> display solution variables Variable Name Solution Value x1 1.000000 x2 1.000000 Évidemment la fonction objectif est inférieure de moitié en valeur absolue à la valeur attendue. Pour éviter cela il aurait fallut doubler les coefficients de l'équation objectif. Dernier test, vérifier le fonctionnement de CPlex dans le cas du Problème Quadratique Continu. En effet CPlex attend un problème de la forme : 1 min x t Q x 2 s.c Ax≤b 0 ≤ x i ≤1 { mais seulement si Q est semidéfinie positive, c'est à dire ssi ∀ z , z t Q z≥0 . Essayons donc de résoudre notre problème après sa relaxation, ce qui nous donnera une borne inférieure à la solution optimale. Voici le fichier PQC.pl) : Minimize obj: [ 9 x1 ^ 2 + 4 x2 ^2 - 18 x1 * x2 ] / 2 Subject To: c1: 3 x1 +2 x2 <= 6 Bounds 0 <= x1 <= 1 0 <= x2 <= 1 Et voilà le résultat : CPLEX> read PQC.lp Problem 'PQC.lp' read. Read time = 0.01 sec. CPLEX> optimize Number of nonzeros in lower triangle of Q = 1 - 32 - Cours FIIFO 4 Using Approximate Minimum Degree ordering Total time for automatic ordering = 0.02 sec. Summary statistics for factor of Q: Rows in Factor = 2 Integer space required = 2 Total non-zeros in factor = 3 Total FP ops to factor = 5 Presolve time = 0.07 sec. CPLEX Error 5002: Q is not positive semi-definite. On ne peut pas trouver de solution à ce problème par cette méthode. Mais un peu de patience car le second TP commence ici et nous allons utiliser un autre programme permettant de résoudre ce problème. - 33 -
Documents pareils
Petite introduction à CPLEX
La commande générique pour lancer l’optimisation du problème courant est
« optimize ». Selon le type du problème, le meilleur type d’algorithme sera choisi. On peut
cependant imposer un algorithme,...