Modelli e Algoritmi per la Logistica Lezione – 9 Formulazione “Cover” - Separazione ANTONIO SASSANO Università di Roma“La Sapienza” Dipartimento di Informatica e Sistemistica Roma, 25-11-99
Formulazione Alternativa (Cover) P0 ={xÎ Rn: Ax<b, 1n > x > 0n} Formulazione Naturale Cai,bi = insieme dei cover del “knapsack” aTx<bi i å xi iÎ C Ç J + å xi < |C|-1-|C Ç J -| iÎ C Ç J - - per ogni CÎCai,bi Pi= xÎ Rn : Formulazione cover del“knapsack” KPi P= Ç Pi i=0 T Formulazione cover della Pianificazione Investimenti P Í P0 Formulazione migliore di quella Naturale Le disequazioni cover appartengono alla formulazione ottima
Esempio: Formulazione cover del “knapsack” max 3x1 +2x2 +5x3 +6x4 2x1 +2x2 +3x3 - 4x4 < 2 xÎ {0,1}4 max 3z1 +2z2 +5z3 -6y4+6 2z1 +2z2 +3z3 + 4y4 < 6 xÎ {0,1}4 trasformazione in “knapsack” con coefficienti positivi { 3,4},{ 1,2,3}, {1,2,4}, {2,3,4}, {1,3,4}, {1,2,3,4} Cover:
Cover: max 3z1 +2z2 + 5z3 -6y4 +6 max 3x1 +2x2 + 5x3 +6x4 { 3,4},{ 1,2,3}, {1,2,4}, {2,3,4}, {1,3,4}, {1,2,3,4} Cover: max 3z1 +2z2 + 5z3 -6y4 +6 (z,y)Î {0,1}4 z1 +z2 +z3 < 2 z1 +z2 +y4 < 2 z1 +z3 +y4 < 2 z2 +z3 +y4 < 2 z3 +y4 < 1 2z1 +2z2 +3z3 + 4y4 < 6 max 3x1 +2x2 + 5x3 +6x4 xÎ {0,1}4 x1 +x2 +x3 < 2 x1 +x2 - x4 < 2-1 < 1 x1 +x3 - x4 < 2-1 < 1 x2 +x3 - x4 < 2-1 < 1 x3 - x4 < 1-1<0 2x1 +2x2 +3x3 - 4x4 < 2
Oracolo di Separazione delle Disequazioni Cover Cai,bi = insieme dei cover del “knapsack” aTx<bi i å xi iÎ C Ç J + å xi < |C|-1-|C Ç J -| iÎ C Ç J - - per ogni CÎCai,bi Pi= xÎ Rn : Oracolo di Separazione ^ xÎ Pi xÎ Rn x Ï Pi iÎ C Ç J - å xi - å xi > |C|-1-|C Ç J -| iÎ C Ç J +
Oracolo di Separazione delle Disequazioni Cover iÎ C Ç J - å xi - å xi > |C|-1-|C Ç J -| iÎ C Ç J + ^ Disequazione associata a C violata La disequazione associata ad un cover C è violata da x se e solo se il vettore di incidenza di C soddisfa la disequazione precedente. ^ uÎ {0,1}n vettore di incidenza di un cover C å ui xi - å ui xi > å ui -1-å ui ^ iÎ J + iÎ J - iÎ N iÎ J - å ui xi - å ui xi > å ui -1 ^ iÎ J + iÎ J - iÎ J + ^ iÎ J + å ( xi -1)ui - å xi ui > -1 iÎ J -
Oracolo di Separazione delle Disequazioni Cover (II) C Í N è un cover del “knapsack” aiTx<bi (aTx<b ) e e solo se: åak kÎ C Ç J + åak > b kÎ C Ç J - + “knapsack” a coefficienti positivi uÎ {0,1}n vettore di incidenza di un cover C å akuk kÎ J + å akuk > b kÎ J - + Se a e b sono interi possiamo scrivere: å akuk kÎ J + å akuk > b+1 kÎ J - +
Oracolo di Separazione delle Disequazioni Cover (III) Abbiamo dunque: ^ iÎ J + å ( xi -1)ui - å xi ui > -1 iÎ J - A La disequazione associata ad un cover C è violata da x se e solo se il vettore di incidenza di C soddisfa la disequazione: La disequazione associata ad un cover C è violata da x se e solo se un vettore uÎ {0,1}n soddisfa le disequazioni: ^ å akuk kÎ J + å akuk > b+1 kÎ J - + uÎ {0,1}n vettore di incidenza di un cover C se e solo se: B ^ iÎ J + å ( xi -1)ui - å xi ui > -1 iÎ J - u è il vettore di incidenza del cover violato C å akuk kÎ J + å akuk > b+1 kÎ J - + Come trovare il vettore u ?
Oracolo di Separazione delle Disequazioni Cover (IV) ^ iÎ J + å ( xi -1)ui - å xi ui > -1 iÎ J - å akuk kÎ J + å akuk> b+1 kÎ J - + uÎ {0,1}n A z(u) ^ iÎ J + å ( xi -1)ui - å xi ui iÎ J - max å akuk kÎ J + å akuk> bi+1 kÎ J - + uÎ {0,1}n u* soluzione ottima u ammissibile z(u) < z(u*)< -1 Non esiste un vettore u che soddisfa le condizioni A Nessun cover è violato da x ^ Se z(u*)<-1 Se z(u*)>-1 u* vettore di incidenza di un cover violato da x ^
å xi å xi < |C|-1-|C Ç J -| å ( xi -1)ui å akuk å akuk > b+1 iÎ C Ç J + å xi < |C|-1-|C Ç J -| iÎ C Ç J - - per ogni CÎCai,bi Pi= xÎ Rn : Oracolo di Separazione per Pi ^ iÎ J + å ( xi -1)ui - å xi ui iÎ J - z(u*)=max å akuk kÎ J + å akuk > b+1 kÎ J - + uÎ {0,1}n xÎ Rn ^ Se z(u*)<-1 xÎ Pi ^ Se z(u*)>-1 x Ï Pi ^ u* vettore di incidenza di un cover violato da x ^
å ( xi -1)ui åakuk å akuk > b+1 Oracolo di Separazione Approssimato per Pi ^ iÎ J + å ( xi -1)ui - å xi ui iÎ J - z(u*)=max åakuk kÎ J + å akuk > b+1 kÎ J - + uÎ {0,1}n z(u°) 1n > u > 0n xÎ Rn ^ u° soluzione ottima del rilassamento u+ arrotondamento all’intero superiore della soluzione ottima del rilassamento Se z(u°) <-1 z(u*)< zLP <-1 xÎ Pi ^ Se z(u+)>-1 x Ï Pi ^ u+ vettore di incidenza di un cover violato da x ^
å xi - å xi > |C|-1-|C Ç J -| x Ï Pi xÏ PC xÎ Pi xÎ PC PC= Ç Pi T Poliedro definito dalle (sole) disequazioni “cover” Oracolo di Separazione per PC xÎ Rn ^ ^ x Ï Pi iÎ C Ç J - å xi - å xi > |C|-1-|C Ç J -| iÎ C Ç J + xÏ PC i:=i Oracolo Esatto di Separazione di Pi i=T ? ^ xÎ Pi i:=i+1 NO SI ^ xÎ PC
Soluzione del Rilassamento della Formulazione Cover P= Ç Pi i=0 T Soluzione del Rilassamento della Formulazione Cover A b Disequazioni “cover” Problema “core” (form. Naturale) D=A ; d=b Metodo del Simplesso min cTx xÎ Q = Dx<d, (PÍ Q) 1n > x > 0n Q= Æ P= Æ x*ÏPC Nuova D e nuovo d D d aiT bi Aggiunta del vincolo “cover” violato Oracolo di Separazione di PC x* ottima (in Q) x*Î PC x* ottima
Esempio: Formulazione cover del “knapsack” max 3x1 +7x2 +3x3 +5x4 +7x5 xÎ {0,1}5 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 15 > x > 05 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z*=18.25 2z1 +3y2 +4y3 +3z4 +5z5 < 12 “knapsack” a coefficienti positivi La trasformazione non puo’ essere effettuata su tutto il sistema ! Esaminiamo (e trasformiamo) un “knapsack” alla volta e ai soli fini dell’individuazione di vincoli “cover” violati
å ( x*i -1)ui å akuk å akuk > b+1 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z*=18.25 2z1 +3y2 +4y3 +3z4 +5z5 < 12 “knapsack” a coefficienti positivi Oracolo Approssimato: iÎ J + å ( x*i -1)ui - å x*i ui iÎ J - z(u*)=max å akuk kÎ J + å akuk > b+1 kÎ J - + 1n > u > 0n max (x*1 -1) u1 - x*2 u2 - x*3 u3 + (x*4 -1) u4 + (x*5 -1) u5 = max - u2 - u3 - u4 -1/4 u5 2u1 +3u2 +4u3 +3u4 +5u5 > 13 15 > u > 05 Soluzione: u°1 =u°5 =u°3 =1; u°2 =2/3; u°4=0 z(u°)=-2/3-1-1/4=-23/12<-1 Nessun cover violato
Esempio: Formulazione cover del “knapsack” max 3x1 +7x2 +3x3 +5x4 +7x5 xÎ {0,1}5 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 15 > x > 05 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z*=18.25 z1 +4z2 +3y3 +3z4 +4z5 < 8 “knapsack” a coefficienti positivi
å ( x*i -1)ui å akuk å akuk > b+1 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z*=18.25 z1 +4z2 +3y3 +3z4 +4z5 < 8 “knapsack” a coefficienti positivi iÎ J + å ( x*i -1)ui - å x*i ui iÎ J - z(u*)=max å akuk kÎ J + å akuk > b+1 kÎ J - + 1n > u > 0n Oracolo Approssimato: max (x*1 -1) u1 +( x*2 -1)u2 - x*3 u3 + (x*4 -1) u4 + (x*5 -1) u5 = max - u3 - u4 -1/4 u5 u1 +4u2 +3u3 +3u4 +4u5 > 9 15 > u > 05 Soluzione: u°1 = u°2 = u°5 =1; u°3 = u°4 = 0 z(u°)=-1/4>-1 x1 +x2 +x5 < 2 Cover violato
Esempio: Formulazione cover del “knapsack” xÎ {0,1}5 max 3x1 +7x2 +3x3 +5x4 +7x5 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 15 > x > 05 x1 +x2 +x5 < 2 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 = x*4 =1; x*5 =0; z*=18 Soluzione ottima del problema intero