Programmation Linéaire 2
Transcription
Programmation Linéaire 2
Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Programmation Linéaire 2 - Cours 1 P. Pesneau [email protected] Université Bordeaux 1 Bât A33 - Bur 256 D’après Linear Programming, Vasek Chvatal - McGraw-Hill, 1983 et les notes de cours de L.A. Wolsey et F. Vanderbeck P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Convention d’indexation des composantes de y Primal Dual Variables originales xO = (x1 , . . . , xn ) ↔ Variables d’écart yO = (y1 , . . . , yn ) Variables d’écart xE = (xn+1 , . . . , xn+m ) ↔ Variables originales yE = (yn+1 , . . . , yn+m ) Dictionnaires final : z= s.c. cB B −1 b + (cN − cB B −1 N)xN xB = B −1 b − B −1 NxN xB , xN ≥ 0 Solution z ∗ = cB B −1 b = cx ∗ = y ∗ b ∗ , . . . , y∗ −1 avec y ∗ = yE∗ = (yn+1 n+m ) = −c̄E = cB B P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé Idée : ne calculer que ce qui est nécessaire. Ne pas calculer les dictionnaires dans leur totalité. Exemple : c = (19, 13, 12, 17, 0, 0, 0) 225 3 2 1 2 1 0 0 b = 117 A= 1 1 1 1 0 1 0 420 4 3 3 4 0 0 1 Avec B = {1, 3, 7}, N = {2, 4, 5, 6}, 3 1 0 54 xB = 63 , B = 1 1 0 , 4 3 1 15 P. Pesneau [email protected] 2 2 1 0 N= 1 1 0 1 3 4 0 0 Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé Trouver une variable entrante k de coût réduit positif : Calculer c̄N = cN − cB B −1 N : Calculer yE = cB B −1 en résolvant le système yE B = cB . 3 1 0 (y5 y6 y7 ) 1 1 0 = (19 12 0) 4 3 1 0). On obtient yE = ( 27 17 2 Calculer c̄N = cN − yE N (13 17 0 0) − ( 72 On obtient c̄N = (− 52 x4 entre en base. 3 2 P. Pesneau [email protected] 17 2 − 7 2 2 2 1 0 0) 1 1 0 1 . 3 4 0 0 − 17 2 ). Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé Trouver une variable sortante s en augmentant la variable entrante jusqu’à la valeur t pour laquelle une variable de B s’annule : max {t ≥ 0 : B −1 b − B −1 N.,k t ≥ 0}. Calculer d = B −1 N.,k en résolvant le système Bd = N.,k 2 d1 3 1 0 1 1 0 d2 = 1 d3 4 4 3 1 1 1 1 T Ce qui donne d = ( 2 2 2 ). b̄ = B −1 b, la valeur courante de xB est disponible. Calculer max{t ≥ 0 : tdi ≤ b̄i , i = 1, . . . , m} = min{ b̄dii , i = 1, . . . , m : di > 0} 63 15 54 , 1/2 , 1/2 } = min{ 1/2 On obtient tmax = 30 pour s = 7. x7 sort de la base. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé Remettre à jour la solution de base. B = (B \ {s}) ∪ {k} N = (N \ {k}) ∪ {s} On obtient la solution associée en posant : xk = tmax xs = 0 xi = xi − tmax di pour i ∈ B \ {s}. Il faut encore remettre à jour B et N. B {4} = {1, 3, = ({1, 3,7} \ {7}) ∪ 3 1 2 39 xB = 48 , B = 1 1 1 , N = 4 3 4 30 P. Pesneau [email protected] 4} 2 0 1 0 1 0 0 1 3 1 0 0 Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Quelques remarques L’ordre des colonnes de B n’a pas d’importance à partir du moment ou il est cohérent avec l’ordre des composants de B. La méthode du simplex révisé demande nettement moins de travail que celle du simplex qui calcule tous les coéfficients du nouveau dictionnaire. En pratique, la matrice B est factorisée, B = LU, pour une plus grande efficacité de résolution des systèmes yE B = cB et Bd = N.,k . P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Algorithme du simplex révisé Soit B, xB et B une base initiale et la solution associée. 1 2 3 4 5 Résoudre yE B = cB . Choisir une variable k ∈ N telle que c̄k = ck − yE A.,k > 0. S’il n’en existe pas, la solution est optimale, STOP. Résoudre Bd = A.,k . Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}. S’il n’en existe pas, le problème est non-borné, STOP. Sinon, on choisi une variable s qui tombe à zéro dans xB − tmax d. Poser xB = xB − tmax d et remplacer xs par xk = tmax dans xB Poser B = (B \ {s}) ∪ {k} et remplacer la colonne s de B par A.,k . Retourner au pas 1. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Interprétation économique d’une itération 1 Résoudre yE B = cB Trouver un système de valeur (prix) des ressources qui “justifie” (i.e., explique) complètement le profit des activités retenues xB . Trouver des valeurs duales qui assurent que les conditions de complémentarité sont remplies. 2 Choisir une variable k ∈ N telle que : c̄k = (ck − yE A.,k ) > 0 Voir si une activité “non-basic” ne définirait pas un meilleur usage de nos ressources : apporterait un profit plus grand que la valeur des ressources consommées. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Interprétation économique d’une itération 3 Résoudre Bd = A.,k Calculer une combinaison d d’activités de base auxquelles on pourrait substituer 1 unité de l’activité entrante k pour une même consommation en ressource. 4 Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}. Puisque cette substitution est profitable, calculer le quantité maximum de l’activité k qu’on peut substituer à la combinaison d. 5 Poser xB = xB − tmax d et xk = tmax dans xB . Implémenter cette substitution maximum. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Programme linéaire avec varibales bornées Considérons le programme linéaire suivant : Pn max cx Pn j=1 j j s.c. ≤ bi i = 1, . . . , m j=1 ai,j xj lj ≤ xj ≤ uj j = 1, . . . , n Mettre ce problème sous la forme Pn max cx Pn j=1 j j s.c. a ≤ bi j=1 i,j xj xj ≤ u j xj ≥ l j i = 1, . . . , m j = 1, . . . , n j = 1, . . . , n implique de travailler avec une base de taille m + 2n. Question : peut-on adapter l’algorithme du simplex afin de tenir compte automatiquement des bornes sur les variables ? P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Programme linéaire avec varibales bornées Jusqu’à maintenant : variables 0 ≤ xj ≤ ∞ variables hors-bases fixées à 0 (leur borne inférieure) à chaque itération du simplexe, on garantie que chaque variable reste ≥ 0 (plus grande que leur borne inférieure). Adaptation au cas général : variables bornées : lj ≤ xj ≤ uj Si lj = −∞ et uj = ∞, alors xj variable libre Si lj = uj ∈ IR , alors xj variable fixée (on remplace xj par sa valeur dans toutes les expressions linéaires). Si lj < uj , alors xj variable restreinte (bornée) Les variables hors-base restreintes seront fixées à l’une de leurs bornes. A chaque itération, on va s’assurer que chacune des variables reste dans son domaine de définition. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Généralisation de la notion de base Considérons le programme linéaire suivant (après ajout des variables d’écart) : P ′ n c j xj max Pn′j=1 = bi i = 1, . . . , m s.c. j=1 ai,j xj lj ≤ xj ≤ uj j = 1, . . . , n′ Une solution de base sera définie en partitionnant l’ensemble des variables en m variables de base B, n′ − m variables hors-base N = {L, U , F}, tel que la sous-matrice B associée soit non-singulière (inversible) chaque variable bornée de N prend comme valeur soit lj → j ∈ L, soit uj → j ∈ U les variables libres de N ont une valeur libre → j ∈ F. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Généralisation de la notion de base Une base est donc définie par une partition (B, L, U , F). La solution de base associée x ∗ (si F 6= ∅, elle n’est pas unique) est réalisable si l ≤ x ∗ ≤ u. Prenons un dictionnaire pour une base (B, L, U , F) : z= s.c. cB B −1 b + (cN − cB B −1 N)xN xB = B −1 b − B −1 NxN xB , xN ≥ 0 Noter que la solution de base n’est plus donnée uniquement par B −1 b. Il faut maintenant prendre en compte que les variables hors-base peuvent être fixées à des bornes 6= 0. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Un exemple Considérons le programme linéaire suivant : c =[ 2 1 −2 −2 3 2 3 −4 0 −2 −3 3 ] A= [ 3 1 1 0 5 9 6 5 9 8 4 1 3 2 4 7 7 8 6 7 4 9 5 1 ] b= [ l =[ u=[ −5 + − 3 −4 −2 −2 3 2 5 0 1 0 + 3 + − 0 − 5 − + − + ] ] xa = [ xb = [ 1 2 0 2 −2 −2 3 3 2 2 0 0 0 0 3 3 0 0 5 5 −1 −1 1 0 ] ] c̄ = ( 0 0 2 −3 2 −1 2 −1 1 −1 2 −1 ) 72 62 x a et x b sont deux solutions associées à la base B = {1, 2} et N = {3, . . . , 12} avec P. Pesneau [email protected] L = {5, 6, 7, 8}, U = {3, 4, 9, 10}, F = {11, 12}. Programmation Linéaire 2 - Cours 1 ] Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Un exemple Remarque : comme B = {1, 2}, on a : B= 3 1 1 0 , B −1 = 0 1 1 −3 1 1 2 −3 et B −1 b = 62 −14 6= xB En effet : B −1 N = 9 −22 5 −9 8 −15 7 −17 8 −17 7 −15 9 −23 Noter que xB = B −1 b − B −1 NxN = B −1 b − B −1 NL xL − B −1 NU xU − B −1 NF xF où les variables de L sont fixées à leur borne inférieure, les variables de U sont fixées à leur borne supérieure, les variables de F sont fixées à une valeur arbitraire. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 1 2 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Un exemple c=[ A=[ l =[ u=[ xa = [ 2 3 1 −5 + 1 1 1 0 − 3 0 −2 5 9 −4 −2 −2 −2 6 5 −2 3 3 3 9 8 2 5 2 2 4 1 0 1 0 3 3 2 0 + 0 −4 4 7 3 + 3 0 7 8 − 0 0 −2 6 7 − 5 5 −3 4 9 − + −1 3 5 1 − + 1 ] ] b= [ 72 62 ] ] ] Dans x a , pour x5 , on a x5 = 2 = l5 et c̄5 = 2. On peut faire entrer x5 en base : 3 1 d1 9 d1 8 Bd = A.,5 ⇔ = ⇒ = 1 0 d2 8 d2 −15 Les contraintes sur l’augmentation de x5 sont 2 ≤ 2 + t ≤ 5, d’où tmax = 1 5 −5 ≤ 1 − 8t, 15t ≤ 3 et x2 sort de la base. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 ] Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Un exemple c=[ A=[ l =[ u=[ xa = [ 2 3 1 −5 + 1 1 1 0 − 3 0 −2 5 9 −4 −2 −2 −2 6 5 −2 3 3 3 9 8 2 5 2 2 4 1 0 1 0 3 3 2 0 + 0 −4 4 7 3 + 3 0 7 8 − 0 0 −2 6 7 − 5 5 −3 4 9 − + −1 3 5 1 − + 1 ] ] b= [ 72 62 ] ] ] Dans x a , pour x4 , on a x4 = 3 = u4 et c̄4 = −3. On peut faire entrer x4 en base : 3 1 d1 6 d1 5 Bd = A.,4 ⇔ = ⇒ = 1 0 d2 5 d2 −9 Les contraintes sur l’augmentation de x4 sont −2 ≤ 3 − t ≤ 3, −5 ≤ 1 + 5t, −9t ≤ 3 d’où tmax = 5 et x4 passe à sa borne inférieure. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 ] Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé pour un PL à variables bornées (Phase II) 0 Commencer avec une solution de base réalisable x : B, B 1 Résoudre yE B = cB 2 Choisir une variable k ∈ N telle que : soit xk < uk (k ∈ L ∪ F) et c̄k = (ck − yE A.,k ) > 0 ; soit xk > lk (k ∈ U ∪ F) et c̄k = (ck − yE A.,k ) < 0. S’il n’en existe pas, la solution est optimale, STOP. 3 Résoudre Bd = A.,k P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé pour un PL à variables bornées (Phase II) 4 Si xk < uk (k ∈ L ∪ F), (cas 1 ci-dessus) définir xk (t) = xk + t et xB (t) = xB − td. Si xk > lk (k ∈ U ∪ F), (cas 2 ci-dessus) définir xk (t) = xk − t et xB (t) = xB∗ + td. Si lk ≤ xk (t) ≤ uk et lB ≤ xB (t) ≤ uB quand t → ∞, le problème est non-borné, STOP. Sinon chercher tmax satisfaisant ces contraintes. Si une contrainte lB ≤ xB (t) ≤ uB est la plus serrée, alors la variable correspondante s quitte la base. Sinon B reste inchangé, mais la partition (L, U , F) de N change. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Simplex révisé pour un PL à variables bornées (Phase II) 5 Poser xk = xk (tmax ) et xB = xB (tmax ). Si B est inchangée, aller en 2. Sinon, poser B = B \ {s} ∪ {k} et remplacer la colonne s de B par A.,k . Aller en 1. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Le simplex révisé pour un PL à variables bornées (Phase I) max s.c. Pn ′ c j xj Pn′j=1 j=1 ai,j xj l j ≤ xj ≤ bi ≤ uj i = 1, . . . , m j = 1, . . . , n′ Introduire des variables artificielles xn′ +i : Pn ′ i = 1, . . . , m j=1 ai,j xj + xn′ +i = bi Poser au choix x̂j = lj ou x̂j = uj pour toutes variables bornées. Poser les autres à zéro, x̂j = 0, pour toute variable libre j, et P ′ x̂n′ +i = bi − nj=1 ai,j x̂j . Si x̂n′ +i < 0, définir ln′ +i = −∞, un′ +i = 0 et cn′ +i = −1 Si x̂n′ +i > 0, définir ln′ +i = 0, un′ +i = ∞ et cn′ +i = 1 P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Le simplex révisé pour un PL à variables bornées (Phase I) Résoudre le problème suivant min s.c. Pn′ +m j=n′ cj xj a x j=1 i,j j + xn′ +i l j ≤ xj Pn ′ = bi ≤ uj i = 1, . . . , m j = 1, . . . , n′ + m Si ce problème atteint son minimum en 0, alors le problème original est réalisable et la base optimale du problème ci-dessus donne une base réalisable pour le problème original. Remettre l’objectif original et appliquer la phase II du simplex. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Programme Linéaire Généralisé : Exemple du Bin Packing Problème : Soient m objets de taille wi pour i = 1, . . . , m. Combien de groupes de taille W sont nécessaires pour caser tous les objets. Exemples : nombre minimum de camions pour les livraisons du jour, nombre min de machines/personnes pour effectuer toutes les tâches en 1 jour. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Programme Linéaire Généralisé : Exemple du Bin Packing Formulation extensive : xj = 1 si le remplissage j := {ai,j , i = 1, ..., m} est utilisé, avec Pm ∀j i=1 ai,j wi ≤ W Min s.c. PJ PJ j=1 xj j=1 ai,j xj xj = ∈ 1 {0, 1} i = 1, . . . , m ∀j Question : Comment résoudre un LP avec énormément de variables ? On va générer les variables utiles au fur et à mesure : génération de colonnes. P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique W = 6, m = 5, w = (1, 2, 2, 3, 4) Programme linéaire : 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 0 0 0 0 x1 1 0 0 0 x2 x3 ≥ 0 1 0 0 0 0 1 0 x4 0 0 0 1 x5 1 1 1 1 1 Z (S) = 5, x = (1, 1, 1, 1, 1), y = (1, 1, 1, 1, 1). Générer une variable (un remplissage) qui permette d’améliorer la solution (coût réduit négatif). P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique Générer une variable (un remplissage) qui permette d’améliorer la solution (coût réduit négatif). Trouver une variables x6 telle que c̄6 = c6 − cB B −1 A.,6 < 0 ⇔ c̄6 = 1 − yA.,6 < 0 Trouver un ensemble d’objet définissant un remplissage (A.,6 ) et minimisant 1 − yA.,6 (⇔ maximisant yA.,6 ). Sous problème de sac-à-dos : max a 1 + a 2 + a 3 + a4 + a 5 a1 + 2a2 + 2a3 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 3, solution a = (1, 1, 1, 0, 0) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 + x6 x1 0 0 0 0 1 . 1 0 0 0 1 .. 0 1 0 0 1 . ≥ 0 0 1 0 0 .. 0 0 0 1 0 x6 1 1 1 1 1 Z (S) = 3, x = (0, 0, 0, 1, 1, 1), y = (0, 0, 1, 1, 1). Sous problème de sac-à-dos : max a 3 + a 4 + a5 2a3 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 2, solution a = (0, 0, 1, 1, 0) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 + x6 + x7 x1 0 0 0 0 1 0 . 1 0 0 0 1 0 .. 0 1 0 0 1 1 . ≥ 0 0 1 0 0 1 .. 0 0 0 1 0 0 x7 1 1 1 1 1 Z (S) = 3, x = (0, 0, 0, 1, 1, 1, 0), y = (0, 1, 0, 1, 1). Sous problème de sac-à-dos : max a 2 + a 4 + a5 2a2 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 2, solution a = (0, 1, 0, 1, 0) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 x1 0 0 0 0 1 0 0 . 1 0 0 0 1 0 1 .. 0 1 0 0 1 1 0 . ≥ 0 0 1 0 0 1 1 .. 0 0 0 1 0 0 0 x8 1 1 1 1 1 Z (S) = 3, x = ( 21 , 0, 0, 0, 1, 12 , 12 , 21 ), y = (1, 0, 0, 1, 1). Sous problème de sac-à-dos : max a1 + a4 + a5 a1 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 2, solution a = (1, 0, 0, 0, 1) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 x1 0 0 0 0 1 0 0 1 . 1 0 0 0 1 0 1 0 .. 0 1 0 0 1 1 0 0 . ≥ 0 0 1 0 0 1 1 0 .. 0 0 0 1 0 0 0 1 x9 1 1 1 1 1 Z (S) = 2.5, x = (0, 0, 0, 0, 0, 12 , 12 , 12 , 1), y = (0, 21 , 12 , 21 , 1). Sous problème de sac-à-dos : max 0.5a2 + 0.5a3 + 0.5a4 + a5 2a2 + 2a3 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 1.5, solution a = (0, 1, 0, 0, 1) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique 1 0 0 0 0 min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 x1 0 0 0 0 1 0 0 1 0 . 1 0 0 0 1 0 1 0 1 .. 0 1 0 0 1 1 0 0 0 . ≥ . 0 0 1 0 0 1 1 0 0 . 0 0 0 1 0 0 0 1 1 x10 1 1 1 1 1 Z (S) = 2 + 13 , x = (0, 0, 0, 0, 0, 13 , 23 , 13 , 23 , 13 ), y = ( 31 , 13 , 31 , 23 , 23 ). Sous problème de sac-à-dos : max 31 a1 + 13 a2 + 31 a3 + 32 a4 + 32 a5 a1 + 2a2 + 2a3 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 1 + 13 , solution a = (1, 1, 0, 1, 0) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 x1 1 0 0 0 0 1 0 0 1 0 1 1 . . 1 0 1 0 0 0 1 0 1 0 1 1 . 0 0 1 0 0 1 1 0 0 0 0 . ≥ 1 . 0 0 0 1 0 0 1 1 0 0 1 . 1 0 0 0 0 1 0 0 0 1 1 0 1 x11 Z (S) = 2 + 41 , x = (0, 0, 0, 0, 0, 14 , 34 , 0, 21 , 12 , 41 ), y = ( 41 , 41 , 12 , 12 , 34 ). Sous problème de sac-à-dos : max 41 a1 + 14 a2 + 21 a3 + 21 a4 + 43 a5 a1 + 2a2 + 2a3 + 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 1 + 13 , solution a = (0, 0, 1, 0, 1) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1 Rappel : le Simplex révisé Simplex révisé avec variables bornées Génération de colonnes / Bin Packing Application numérique min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 x1 1 1 0 0 0 0 1 0 0 1 0 1 0 . 0 1 0 0 0 1 0 1 0 1 1 0 .. 1 0 0 1 0 0 1 1 0 0 0 0 1 . ≥ 1 0 0 0 1 0 0 1 1 0 0 1 0 .. 1 1 0 0 0 0 1 0 0 0 1 1 0 1 x12 Z (S) = 2, x = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1), y = (0, 0, 0, 1, 1). Sous problème de sac-à-dos : max a 4 + a5 3a4 + 4a5 ai ≤6 ∈ {0, 1} KNP(y) = 1, solution a = (0, 0, 0, 0, 1) P. Pesneau [email protected] Programmation Linéaire 2 - Cours 1