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” aiTx<bi Pi= x Rn : xi iC J + - xi iC J - < |C|-1-|C J -| per ogni CCai,bi Formulazione cover del“knapsack” KPi P T P= i=0 • P P0 i Formulazione cover della Pianificazione Investimenti 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 trasformazione in “knapsack” con coefficienti positivi max 3z1 +2z2 +5z3 -6y4+6 2z1 +2z2 +3z3 + 4y4 < 6 x {0,1}4 Cover: { 3,4},{ 1,2,3}, {1,2,4}, {2,3,4}, {1,3,4}, {1,2,3,4} Cover: { 3,4},{ 1,2,3}, {1,2,4}, {2,3,4}, {1,3,4}, {1,2,3,4} max 3z1 +2z2 + 5z3 -6y4 +6 2z1 +2z2 +3z3 + 4y4 < 6 z1 +z2 +z3 < 2 z1 +z2 +y4 < 2 z1 +z3 +y4 < 2 z2 +z3 +y4 < 2 z3 +y4 < 1 (z,y) {0,1}4 max 3x1 +2x2 + 5x3 +6x4 2x1 +2x2 +3x3 - 4x4 < 2 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 x {0,1}4 Oracolo di Separazione delle Disequazioni Cover Cai,bi = insieme dei cover del “knapsack” aiTx<bi Pi= x Rn : x^Rn xi iC J + Oracolo di Separazione - xi iC J - < |C|-1-|C J -| per ogni CCai,bi x^Pi x^ Pi ^xi - ^xi iC J + > |C|-1-|C J -| iC J - Oracolo di Separazione delle Disequazioni Cover ^xi - ^xi iC J + > |C|-1-|C J -| iC J - Disequazione associata a C violata u{0,1}n vettore di incidenza di un cover C ui ^xi - ui ^xi - iJ + iJ + ui ^xi > ui -1- ui iJ - iN iJ - ui x^i > ui -1 iJ - iJ + ( ^xi -1)ui - ^xi ui > -1 iJ + iJ - La disequazione associata ad un cover C è violata da ^ x se e solo se il vettore di incidenza di C soddisfa la disequazione precedente. Oracolo di Separazione delle Disequazioni Cover (II) • C Nè un cover del “knapsack” aiTx<bi (aTx<b ) e e solo se: ak kC ak + J+ kC >b J- “knapsack” a coefficienti positivi u{0,1}n vettore di incidenza di un cover C akuk kJ + + akuk > b kJ - Se a e b sono interi possiamo scrivere: akuk kJ + + akuk > b+1 kJ - Oracolo di Separazione delle Disequazioni Cover (III) Abbiamo dunque: ^ se e solo se il vettore La disequazione associata ad un cover C è violata da x di incidenza di C soddisfa la disequazione: A ( ^xi -1)ui - ^xi ui > -1 iJ - iJ + u{0,1}n vettore di incidenza di un cover C se e solo se: B akuk kJ + + akuk > b+1 kJ - ^ se e solo se un vettore La disequazione associata ad un cover C è violata da x u{0,1}n soddisfa le disequazioni: ( ^xi -1)ui - ^xi ui > -1 u è il vettore di incidenza del cover violato C iJ + Come trovare il vettore u ? kJ + akuk iJ - + akuk > b+1 kJ - Oracolo di Separazione delle Disequazioni Cover (IV) ( ^xi -1)ui - ^xi ui > -1 iJ - iJ + A akuk kJ + + akuk> kJ - u{0,1}n z(u) b+1 max ( ^xi -1)ui iJ + akuk kJ + + - ^xi ui iJ - akuk> bi+1 kJ - u {0,1}n u* soluzione ottima Se z(u*)<-1 Se z(u*)>-1 u ammissibile z(u) < z(u*)< -1 Non esiste un vettore u che soddisfa le condizioni A Nessun cover ^ è violato da x u* vettore di incidenza di un cover violato da x^ Pi= x Rn : xi iC J + xi - iC J - < |C|-1-|C J -| per ogni CCai,bi Oracolo di Separazione per Pi z(u*)=max ( ^xi -1)ui iJ + akuk kJ + ^xRn + - x^i ui iJ - akuk > b+1 kJ - u{0,1}n Se z(u*)<-1 ^x Pi Se z(u*)>-1 ^x Pi u* vettore di incidenza di un cover violato da ^x Oracolo di Separazione Approssimato per Pi z(u*)=max z(u°) ^xRn x^i ui ( ^xi -1)ui - akuk akuk > b+1 iJ + kJ + + u{0,1}n iJ - kJ - 1n > u > 0n • u° soluzione ottima del rilassamento • u+ arrotondamento all’intero superiore della soluzione ottima del rilassamento Se z(u°) <-1 z(u*)< zLP <-1 Se z(u+)>-1 ^x Pi ^x Pi u+ vettore di incidenza di un cover violato da ^ x P T PC= i=1 i Poliedro definito dalle (sole) disequazioni “cover” Oracolo di Separazione per PC x^ Pi i:=i ^xi ^xRn Oracolo Esatto di Separazione di Pi i:=i+1 NO iC J + - ^xi > |C|-1-|C J -| ^ xP C iC J - x^Pi i=T ? SI x^PC Soluzione del Rilassamento della Formulazione Cover P= Problema “core” (form. Naturale) D=A ; d=b a iT bi i Disequazioni “cover” Nuova D e nuovo d d i=0 b A min cTx xQ = Dx<d, (PQ) 1n > x > 0n D P T Aggiunta del vincolo “cover” violato Metodo del Simplesso Q= x* ottima (in Q) Oracolo di Separazione x*PC di PC x*PC P= x* ottima Esempio: Formulazione cover del “knapsack” max 3x1 +7x2 +3x3 +5x4 +7x5 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 x {0,1}5 15 > x > 05 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 2z1 +3y2 +4y3 +3z4 +5z5 < 12 z*=18.25 “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 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: z(u*)=max ( x*i -1)ui - x*i ui iJ + akuk kJ + + iJ - akuk > b+1 kJ - 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 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 x {0,1}5 15 > x > 05 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z1 +4z2 +3y3 +3z4 +4z5 < 8 z*=18.25 “knapsack” a coefficienti positivi Soluzione ottima del rilassamento: x*1 =x*2 =x*3 =1; x*4 =0; x*5 =3/4 z1 +4z2 +3y3 +3z4 +4z5 < 8 Oracolo Approssimato: z*=18.25 “knapsack” a coefficienti positivi z(u*)=max ( x*i -1)ui - x*i ui iJ + akuk kJ + + iJ - akuk > b+1 kJ - 1n > u > 0n 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” max 3x1 +7x2 +3x3 +5x4 +7x5 2x1 -3x2 -4x3 +3x4 +5x5 < 5 x1 +4x2 -3x3 +3x4 +4x5 < 5 x1 +x2 +x5 < 2 x {0,1}5 15 > x > 05 Soluzione ottima del rilassamento: x*1 =x*2 =x*3 = x*4 =1; x*5 =0; Soluzione ottima del problema intero z*=18