La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Génération de colonnes

Présentations similaires


Présentation au sujet: "Génération de colonnes"— Transcription de la présentation:

1 Génération de colonnes
ENSIIE-Master MPRO Alain Faye

2 Introduction On considère le problème: (Pb) max f(x) s.c. gj(x)0 jJ , xX Avec f linéaire, gj affines Avec X={xZn: h(x)0 } X partie de Zn , contraintes quelconques h(x) 0 On fait les hypothèses suivantes : X contient un nombre fini de points Max f(x) s.c. xX se résout facilement f linéaire même si X est grand Autrement dit, si on enlève les contraintes gj(x)0 on sait résoudre le problème On va tout de même tenir compte des contraintes mais considérer une autre relaxation.

3 Relaxation de X à ConvX On considère la relaxation de (Pb) suivante : (P) max f(x) s.c. gj(x)0 jJ , xConvX On écrit : x=iixi avec i0, ii=1, xiX On reporte dans (P) et par linéarité les i sortent de f et des gj : (P') max iif(xi) s.c. iigj(xi) 0 jJ i0, ii=1 Maintenant les variables sont les i tandis que f(xi), gj(xi) sont les coefficients de l’objectif et des contraintes. (P') est un programme linéaire que l’on va résoudre par un algorithme similaire au simplexe. (P') a généralement un nombre exponentiel de variables, on n’introduit que celles qui sont utiles , celles non introduites sont considérées hors-base et sont nulles. A une itération on introduit la variable de coût réduit>0 le plus grand. On s’arrête quand toutes les variables ont leur coût réduit 0

4 Algorithme de génération de colonnes
On démarre avec un sous ensemble restreint de points de X t.q. au moins un satisfait les contraintes. On note I les indices de ces points. 1- On résout le problème restreint : (PR') max iIif(xi) s.c. -iIigj(xi) 0 jJ iIi=1 (convexité) i0 iI On note j0 jJ,  les variables duales associées aux contraintes jJ et à la contrainte convexité. 2- Sous-problème: on recherche une variable de coût réduit>0. Pour cela on résout : cred=maxxXf(x)+j jgj(x) -  Si cred>0 alors soit xiX la solution du sous-pb, on ajoute son indice i à I I:=I{i} (nouvelle colonne) et on retourne en 1. Sinon on arrête car tous les coûts réduits sont 0 et (P') est résolu

5 Encadrement de la valeur optimale de (P)
A chaque itération de l’algorithme de génération de colonnes , on a l’encadrement suivant: f(x*)+cred Où x* est la solution de (P) et  la variable duale associée à la contrainte de convexité. Par dualité,  est égale à la valeur du problème restreint courant (PR) Exercice: démontrer cet encadrement.

6 Exercice Max 5x1+4x2+3x3+2x4+x5 s.c. x1+2x2+3x3+4x4+5x57 xX={0,1}5 Poser g(x)=7 - (x1+2x2+3x3+4x4+5x5) 1-Ecrire (PR') le problème restreint à l’enveloppe convexe des 3 points de X : ( ), ( ), ( ) 2-On résout (PR') et on obtient 1=0,2=1/9,3=8/9, et les variables duales =1/3 et =12+1/3 Résoudre le sous-problème et rajouter la nouvelle colonne à (PR') 3-On résout le nouveau (PR') et on obtient 1=2=0,3=3/4,4=1/4, et les variables duales =1/2 et =12+1/2 Résoudre le sous-problème et conclure.

7 Génération de coupes (P) résolu, il se peut que l’on ait résolu (Pb) . Il suffit pour cela que les i soient non fractionnaires. Si tel n’est pas le cas on peut toujours rajouter des coupes et réitérer l’algorithme de génération de colonnes. 1- Résoudre (P) par l’algorithme de génération de colonnes Soit * la solution de (P) , poser x*=i*ixi. Si x*X alors Stop on a résolu (Pb) Sinon Chercher des inégalités valides violées par x*. Les rajouter à l’ensemble J Retourner en 1

8 Branch&Bound Une fois (P) résolu et après avoir ajouté des coupes, il se peut que la solution optimale x*=i*ixi n’appartienne pas à X (* fractionnaire). On a alors recours à une procédure de type séparation et évaluation pour résoudre (Pb). De la même façon que l’on rajoute des coupes à (P) dans l’algorithme de coupes, on ajoute ici des contraintes qui séparent l’ensemble des solutions réalisables en deux parties. Soit x*j une coordonnée de x* fractionnaire. On sépare (P) en deux problèmes fils: - l’un avec la contrainte xjx*j , l’autre avec la contrainte xjx*j +1 . On résout chacun par génération de colonnes.

9 Lien avec la relaxation lagrangienne
Relaxation lagrangienne des contraintes J: on injecte les contraintes dans l’objectif . max f(x)+jjgj(x) s.c. xX Avec j0 jJ Cela donne une borne supérieure de la valeur de (Pb). On recherche la plus petite borne supérieure. Le problème dual lagrangien consiste à minimiser la fonction duale: (D) min0 max f(x)+jjgj(x) s.c. xX Pour éliminer le max du problème interne on rajoute simplement une variable z : (D) minz, 0 z s.c. z f(x)+jjgj(x) xX (D) est un programme linéaire de variables z et . Si on écrit le dual de (D) avec les variables i0 une par contrainte de (D), on retrouve (P‘) . Donc dans (Pb) la relaxation de X à son enveloppe convexe revient à faire la relaxation lagrangienne des contraintes J.

10 Cas particuliers La relaxation lagrangienne des contraintes J de (Pb) revient à optimiser sur ConvX c’est-à-dire au problème (P). Dans le cas où l’on sait décrire ConvX par un polyèdre i.e. ConvX={x : Axb}, alors la relaxation lagrangienne de (Pb), équivalente à (P) , revient au programme linéaire: max f(x) s.c. gj(x)0 jJ , Axb Exemple: Si X={0,1}n alors ConvX=[0,1]n Dans ce cas le problème (P) revient à la relaxation continue de (Pb) dans laquelle l’intégrité de xj est remplacée par 0xj1. Conclusion, si X={0,1}n la relaxation lagrangienne est équivalente à la relaxation continue.

11 Exercice: (Pb) max f(x)=x1+2x2 s.c. g1(x)=3-3x1-2x20 g2(x)=3-2x1-3x20 xX={0,1}2 Soit (P) la relaxation de (Pb) obtenue en passant de X à ConvX Représenter graphiquement les solutions réalisables de (P). Observer le point extrême qui n’est pas dans X. Que peut-on en conclure? Ecrire (P‘) Ecrire (D) le dual langrangien de (Pb) avec la variable z. Ecrire le dual de (D) et vérifier que l’on retrouve (P‘)

12 Généralisation: problème décomposable sous contraintes couplantes
(Pb) max k=1,…,K fk(xk) s.c. k=1,…,K gj,k(xk)0 jJ , xkXk k=1,…K Avec | Xk | fini, fk linéaire, gj,k affines (k) Relaxation (P) = (Pb) avec xkConvXk k=1,…K On écrit : xk=ik,ixki avec k,i0, k,ii=1, xkiXk On reporte dans (P) et par linéarité les k,i sortent de fk et des gj,k : (P') max k=1,…,K ik,ifk (xki) s.c. k=1,…,K ik,igj,k(xki) 0 jJ k,ii=1 k=1,…,K k,i0 k=1,…,K, i Maintenant les variables sont les k,i


Télécharger ppt "Génération de colonnes"

Présentations similaires


Annonces Google