DATV: Itroduktio til optimerig og operatiosaalyse, 2007 Følsomhed af Kapsack Problemet David Pisiger, Projektopgave 1 Dette er de første obligatoriske projektopgave på kurset DATV: Itroduktio til optimerig og operatiosaalyse. Opgave stilles fredag 16. februar 2007 og skal afleveres seest tirsdag 27. februar 2007 kl. 12.00 i DIKU s førstedelsadmiistratio. For at blive godkedt skal der være gjort et reelt forsøg på at løse samtlige spørgsmål. Besvarelse skal udarbejdes i grupper på to til tre deltagere. Grupper med é deltager kræver skriftlig accept fra istruktore midst e uge før opgave skal afleveres. Læs veligst hele opgaveformulerige igeem ide du går i gag. Hits til opgavere ka fås ved øvelsere, hvor der er afsat tid til at arbejde med projektopgave. Idledig Kapsack problemet har utallige avedelser idefor økoomi (budgetlægig) trasport (pakig, ladig), og som uderproblem ved løsig af mere komplekse problemer [4, 3]. Specielt bruges kapsack problemet til at separere lovlige uligheder i heltalsprogrammerigs-løsere og det opstår som pricig problem år ma løser bi-packig problemet ved Datzig-Wolfe dekompoerig. Kapsack problemet er et heltalsprogrammerigsproblem (IP-problem) som er NP-hårdt at løse. Formelt ka kapsack problemet defieres på følgede vis: Lad der være givet gestade som hver har e tilkyttet profit p j og vægt w j. Udvælg e delmægde af gestadee således at de samlede profit-sum bliver maksimeret ude at de tilhørede vægt-sum overstiger e give græse c, kaldet kapacitete. Hvis vi bruger biære variable x j til at agive om e gestad vælges eller ej, får vi følgede matematiske defiitio af problemet: maximize subject to p j x j (1) w j x j c, (2) x j {0,1}, j = 1,...,. (3) De optimale løsigsværdi vil blive beteget z. Det atages ormalt at alle koefficieter p j, w j og c er positive heltal. Se evt. Corme [2] afsit 16.2 for yderligere beskrivelse af problemet. Eksempel 1 I det følgede eksempel er c = 9 og der er givet = 7 gestade med følgede profitter og vægte: j 1 2 3 4 5 6 7 p j 6 5 8 9 6 7 3 w j 2 3 6 7 5 9 4 De optimale løsig er at vælge gestadee 1 og 4 hvilket giver e optimal løsig på z = 15. 1
Løsig af det fraktioelle kapsack problem LP-relaxerige af (1) (3) svarer til det fraktioelle kapsack problem, hvor det er tilladt at medtage brøkdele af gestade: maximize subject to p j x j (4) w j x j c, (5) 0 x j 1, j = 1,...,. (6) Selv om problemet (4) (6) er et ormalt LP-problem, og derfor ka løses med Simplex algoritme, ka det bedre betale sig at løse problemet med e grådig algoritme. Først sorteres gestadee efter aftagede effektivitet p j /w j således at p 1 w 1 p 2 w 2 p 3 w 3... p w (7) hvorpå rygsække fyldes som følger: Elemetere 1, 2, 3,... lægges i rygsække idtil ma støder på de første gestad s, som der ikke er plads til. De optimale løsig er da at medtage de første s 1 gestade (dvs. x j = 1 for j = 1,...,s 1) mes e brøkdel af gestad s medtages således at hele de tilbageværede kapacitet udyttes: x s = c s 1 w j w s Ige af gestadee efter s medtages (dvs. x j = 0 for j = s + 1,...,). Det fraktioelle kapsack problem ka dermed løses i O( log ) tid, hvor de tugeste beregig er sorterige (7). Løsigsværdie til det fraktioelle kapsack problem beteges z LP z LP = s 1 Opgave 1 Fid z LP for istase fra eksempel 1. p j + p s c s 1 w j w s Grådig løsig Sorterige (7) ka bruges til at fide e lovlig (me ikke ødvedigvis optimal) løsig til kapsack problemet (1) (3). Vi geemløber gestadee i rækkefølge 1,2,3,..., og medtager gestad j (dvs. sætter x j = 1) hvis de ka tilføjes rygsække ude at overskride kapacitete c. De tilsvarede løsigsværdi vil blive beteget z G. Opgave 2 Fid z G for istase fra eksempel 1. 2
Duale problem Opgave 3 Opskriv (i geerel form) det duale problem af (4) (6). Lad y være de duale variabel svarede til begræsig (5) og y j for j = 1,..., være de duale variable svarede til begræsigere (6). Opgave 4 Agiv værdiere af y og y 1,...,y for istase fra eksempel 1. Opgave 5 Vis at der geerelt gælder at de duale værdi svarede til begræsig (5) er givet ved y = p s /w s. Opgave 6 Bestem i geerelt form de duale værdier y i svarede til begræsigere (6). LP-følsomhedsaalyse Ofte keder ma ikke profitter p j og vægte w j af gestadee med fuldstædig øjagtighed. Det ka derfor være relevat at bestemme hvor meget profitte eller vægte af e gestad j ka ædres ude at de optimale LP-løsig ædrer sig. Dette kaldes følsomhedsaalyse (sesitivity aalysis), jf. Taha [5] afsit 4.5. Opgave 7 Agiv for hver gestad j = 1,...,7 i eksempel 1 de midste og største værdi af profit p j således at LP-løsige er uædret. Det er tilstrækkeligt ku at redegøre for detaljere i udregige for de første gestad, og herefter at opstille alle resultater i tabel-form. Reduced-cost fixig Opgave 8 Vis at hvis vi øger/midsker kapacitete c af rygsække med, da er e øvre græseværdi U for det fraktioelle kapsack problem givet ved U(c + ) = z LP + y Atag at vi har fudet e LP-løsig til det fraktioelle kapsack problem (4) (6). Hvis der for e gestad j gælder at p p s j w j zlp z G (8) w s så vil x j i e IP-løsig (kapsack problemet) have samme værdi som x j i de tilhørede LP-løsig (fraktioelle kapsack problem). Opgave 9 Vis at oveståede påstad er korrekt. Metode kaldes reduced cost fixig og de ka avede til at formidske e istas af kapsack problemet idet de variable hvis IP-løsigsværdi er kedt ka fjeres fra problemet ([6] sectio 7.8 exercise 7). Opgave 10 Udreg værdie af p j w j p s /w s for j = 1,..., i istase fra eksempel 1, og aved reduced cost fixig til at bestemme de optimale IP-løsigsværdier for så mage variable som muligt. Opgave 11 Fjer de reducerede variable fra kapsack problem istase i eksempel 1 og opskriv det tilbageværede problem. Husk at reducere kapacitete c af rygsække med e passede værdi. 3
Dyamisk programmerig Bellma viste i 1957 at kapsack problemet ka løses med dyamisk programmerig [1] (se også Taha [5] afsit 10.3.1). Lad f i (d) være e optimal løsig til (1) (3), hvor kapacitete er begræset til c = d og hvor ku de første i gestade tages i betragtig. Med adre ord har vi i i f i (d) = max{ p j x j : w j x j d, x j {0,1} for i = 0,..., og d = 0,...,c. For i = 0 ka ma aturligvis ku opå profit-summe 0 uaset værdie af d så der gælder f 0 (d) = 0 for d = 0,...,c (10) Hvis vi keder de optimale løsiger for f i 1 ka vi fide de optimale løsiger for f i ved brug af følgede rekursio { fi 1 (d) hvis d < w i f i (d) = { } (11) max f i 1 (d), f i 1 (d w i ) + p i hvis d w i De optimale løsigsværdi til (1) (3) fides dermed som z = f (c). Eksempel 2 Tabelle f i (d) for eksempel 1 løst med dyamisk programmerig bliver: d\ i 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 6 6 6 6 6 6 6 3 0 6 6 6 6 6 6 6 4 0 6 6 6 6 6 6 6 5 0 6 11 11 11 11 11 11 6 0 6 11 11 11 11 11 11 7 0 6 11 11 11 12 12 12 8 0 6 11 14 14 14 14 14 9 0 6 11 14 15 15 15 15 } (9) IP følsomhedsaalyse Modsat følsomhedsaalyse af LP-problemer er det ikke emt at lave følsomhedsaalyse af IP-problemer. For kapsack problemet ka det dog lade sig gøre relativt effektivt ved brug af dyamisk programmerig. Betragt kapsack problemet fra eksempel 1 og de tilhørede dyamisk programmerigs tabel fra eksempel 2. Opgave 12 Atag at vi vil fide de midste og største værdi af p i således at IP-løsige er uædret. Vi betragter de sidste gestad = 7 i problemet. Betragt de sidste to koloer i dyamisk programmerigs tabelle, og agiv på basis af disse de midste og største værdi af p 7 så IP-løsige er uædret. 4
Dyamisk programmerigs rekursioe (11) fugerer uaset rækkefølge af gestadee. Vi ka derfor på skift lade hver gestad i være de sidste gestad i istase. Opgave 13 Beyt dee ide til for samtlige j = 1,...,7 at fide midste og største værdi af p j således at IP-løsige er uædret. Noter Det ka være hesigtsmæssigt at udvikle ogle små programmer til f.eks. at løse kapsack problemet med dyamisk programmerig. Dermed spares mage beregiger, og ma udgår at lave regefejl. Udskrifter af sådae programmer må godt vedlægges besvarelse, me besvarelse skal kue læses ude at kigge i programmet. Litteratur [1] R.E. Bellma (1957), Dyamic programmig, Priceto Uiversity Press, Priceto, NJ. [2] T.H. Corme, C.E. Leisersio, R.L. Rivest, C. Stei (2003), Itroductio to Algorithms, secod editio, MIT-Press, Cambridge, Eglad. [3] H. Kellerer, U. Pferschy, ad D. Pisiger (2004), Kapsack Problems, Spriger, Berli, Germay. [4] S. Martello ad P. Toth (1990), Kapsack Problems: Algorithms ad Computer Implemetatios, Wiley, Chichester, Eglad. [5] H.A. Taha (2003) Operatios Research, a itroductio, Pretice Hall, Lodo, Eglad. [6] L.A. Wolsey (1998) Iteger Programmig Wiley, Chichester, Eglad. 5
Vejledede løsiger Svar 1 Gestadee og deres profit-vægt forhold er: j 1 2 3 4 5 6 7 p j 6 5 8 9 6 7 3 w j 2 3 6 7 5 9 4 p j /w j 3.0000 1.6667 1.3333 1.2857 1.2000 0.7778 0.7500 dvs. gestadee er allerede sorteret efter p j /w j. De grådig algoritme fider s = 3 og dermed de primale løsig de tilhørede løsigsværdi er x 1 1.000000 x 2 1.000000 x 3 0.666667 z LP = 6 + 5 + (9 5) 8 = 11 + 5.3333 = 16.3333 6 Svar 2 De grådige løsig medtager gestade 1,2,7. De tilhørede løsigsværdi er z G = p 1 + p 2 + p 7 = 6 + 5 + 3 = 14 Svar 3 Primale problem for eksempel 1: )!#"$%$& ' ( )+* ' (, )- ' (, ) ' (, ) ' (, ). ' (, ) ' (, ' (, ) Duale problem for eksempel 1: 0/ )1*2,),),),),),),3)!#"$%$& )1*2 ) 4 ( )1* ) 4 ( )1* ) 4 ( )1* ) 4 ( )1* ) 4 ( )1* ) 4 ( )1* )54 ( 6
Geerelt gælder primale problem: maximize subject to p j x j (12) w j x j c, (13) 0 x j 1, j = 1,...,. (14) duale problem: miimize cy + y j (15) subject to w j y + y j p j, j = 1,..., (16) y j 0, j = 1,...,. (17) y 0 (18) Svar 4 Duale løsig er y 1.333333 y 1 3.333333 y 2 1.000000 Svar 5 De duale variabel y agiver hvor meget z LP ka øges hvis vi forøger c med 1. Dette vil etop svare til p s /w s Svar 6 De duale variabel y j agiver hvor meget z LP ka øges hvis vi forøger højreside i (6). Hvis x j < 1 i LP-løsige, så vil z LP ikke blive øget uaset hvor meget vi øger højreside i (6), og dermed y j = 0. Hvis x j = 1 i LP-løsige, vil z LP blive øget med p j w j p s /w s hver gag vi øger højreside i (6). Ituitivt set, får vi profitte af gestad j me vi skal fjere w j vægteheder af gestad s fra rygsække. Altså er y j = p j w j p s /w s. Svar 7 Følsomheds itervallere er: j p mi j p j p max j 1 2.6667 6.0000 + 2 4.0000 5.0000 + 3 7.7143 8.0000 10.0000 4 9.0000 9.3333 5 6.0000 6.6667 6 7.0000 12.0000 7 3.0000 5.3333 Svar 8 Da de duale værdi y agiver hvor meget z LP øges/midskes ved forøgelse/formidskelse af kapacitete c får vi direkte at U(c + ) = z LP + y 7
Svar 9 Atag at j < s dvs. p j /w j p s /w s. Da ka umeriskteget hæves og vi får kriteriet hvilket ka omskrives til p j w j p s w s z LP z G z G U(c + w j ) p j her agiver højreside e øvre græseværdi for det fraktioelle kapsack problem hvis vi sætter x j = 0. Med adre ord har vi e sædvalig upper boud test for forgreige x j = 0. Hvis kude ka forkastes, er det tilladt at sætte x j = 1. Atag at j > s dvs. p j /w j p s /w s. Da hæves umeriskteget og vi får kriteriet hvilket ka omskrives til p j + w j p s w s z LP z G z G U(c w j ) + p j her agiver højreside e øvre græseværdi for det fraktioelle kapsack problem hvis vi sætter x j = 1. Med adre ord har vi e sædvalig upper boud test for forgreige x j = 1. Hvis kude ka forkastes, er det tilladt at sætte x j = 0. Svar 10 Vi udreger værdiere j p j w j p s /w s 1 3 1 3 2 1 3 0 4 1 3 5 2 3 6 5 7 2 1 3 Vi har edvidere z LP z G = 16 1 3 14 = 2 1 3. Dermed ses det at x 1 = 1 og x 6 = 0 i e optimal IP-løsig. Edvidere vil x 7 = 0 i ehver forbedret løsig, me det er ikke det vi blev spurgt om. Svar 11 De reducerede istas er med kapacitet c = 9 2 = 7 j 2 3 4 5 7 p j 5 8 9 6 3 w j 3 6 7 5 4 Svar 12 Lad i = 7 være det sidste elemet. Da x i = 0 i de optimale løsig, øsker vi i recursio (11) at det første led bliver valgt i max-operatore: { } f i (d) = max f i 1 (d), f i 1 (d w i ) + p i (19) Dette sker hvis Da i = 7, w i = 4 og d = c = 9 skal der gælde at f i 1 (d) f i 1 (d w i ) + p i f 6 (9) f 5 (9 4) + p i hvilket er esbetydede med p i f 6 (9) f 5 (9 4) = 15 11 = 4 Svar 13 Samme metode bruges for alle elemeter. 8
!"$# %'&&( )) *,+ *,+- *,+- *,+- *,+- *,+- *,+- *,+- /.$0 1,2354567 (/8& 95: /,0,;5; : ; /&( : <& =?> 3522 : (5@ A5@ =. & 0 : (/B /.$0C% (5@! $. > D,0! %/ 0 32E : (/BGF %/(@!.HF.0.(. $ : ( > 2 : (5@/A& = + IJ>KII %L> M & : /& (/.N@5(,;O>)>> M & : /& (/.QP R! @.S5 " /@ &5T+ IJ>KII5II5I5I M & : /& (/.QP R! @( "$# %'&U 'A + >K555 R! 5@ $8@5/ -VW/8& 5@JP W "# %& A+ X> 55555$ IU Y (@! & /(.& = + IJ>KII %L> M & : & (/. +[Z 5\ 1,2354567 0 ) (5@A : V ] : " @^ Y (5@! & (/. ] @! X>_I5I5II5II X>_I5I5II5II $ IJ> 555 ` @@(/& E : A : " @ '.)& E : /.$;$a,vb : : (J>! 1 & : R! 2 : ` E : 0! : E : : : 1,2354567 0 ) (5@0 cv (. '.&)^ 5@ 5% %$ X>_555 %/ J>_555 %b X>_I5I5II5II @@(/& 5@8 5% '.& /.$;$a,vb $ (J> 1,2354567 0 ) /.N( "#,V W/d e Y /. & 'AU '&T D /.$;$ ] : " @^ D 0! % 0 1 ( & R(/B. 1! :5: /.& f$8 $ : ( J> 5 >KII5II '.$S. '&T $ : ( g>ki5ii5i?>kii5ii '.$S. '&T $ $ : ( h>k ' J>KII5II IJ>_I5I5II 9
VbIJ>_55 V,.S '. &5T?>KII5II?>_55 VbIJ> 55 V,.S '. &5T >KII5II > 55 V/?>_I5I5II V,.S '. &5T J>KII5II b?>_i5i5ii $ V/?>_55 V,.S '. &5T J>KII5II?>_55 1,2354567 0 ) /. : E,V D YY /. & 'AU '&T D /.$;$ 1 (. & : '.&)^ R! @ 2 : 5% R(/B. 1! :5: /.& f$8 %$ X>_55 J>KI5II5I?>KII5II X>_I5I5II %/ J>_55 $ : ( X>KII5II J>_I5I5II %b X>_I5I5II Ih>K55 X>KII5II?>_55 % $ : ( Ih> 5 X>KII5II '.$S. '&T %/ $ : ( $ : ( X>KII5II '.$S. '&T % $ : ( $ : ( X>KII5II '.$S. '&T %b $ : ( $ : ( X>KII5II '.$S. '&T %b $ : ( $ : ( X>KII5II '.$S. '&T 1,2354567 0 ) /.N@ " 5V 3 (bb : d(!.0 Y. '& A &5T D /.$;$ ] : " @^ D 0! % 0 1 ( & R(/B. 1! :5: /.& f$8 $ : ( V,.S '. &5T : ( X>_I5I5II $ : ( V,.S '. &5T : ( X>_I5I5II $ $ : ( V,.S '. &5T : ( IJ> 55 VbIJ>_55 VIh>_,$, : ( IJ>, ' VbIJ> 55 VIh> II5I : ( IJ>_5I5II V/?>_I5I5II VIh>_55 : ( IJ>K55 $ V/?>_55 VIh>_,II5I : ( X>_I5I5II 1,2354567 0 ) /.!5" 5V f$858 : d(!.0 Y. '& A &5T D /.$;$ ] : " @^ D 0! % 0 1 ( & R(/B. 1! :5: /.& f$8 $ : ( G>KI5II5I '.$S '.U '&T '.$S. '&T $ : ( G>KI5II5I '.$S '.U '&T '.$S. '&T $ $ : ( Ih> 5 '.$S '.U '&T '.$S. '&T VbIJ>_55 $ : ( '.$S '.U '&T '.$S. '&T VbIJ> 55 $ : ( '.$S '.U '&T '.$S. '&T V/?>_I5I5II $ : ( '.$S '.U '&T '.$S. '&T $ V/?>_55 $ : ( '.$S '.U '&T '.$S. '&T 10