p. Egészértékű lineáris programozás Integer Linear Programming (ILP) és Mixed Integer Linear Programming (MIP) nevezetes kombinatorikus optimizálási problémák megfogalmazása ILP formájában definíció, tulajdonságok, bonyolultság lineáris programok megoldására visszavezethető ILP-k általános ILP megoldási módszerek: Gomory-féle duál-frakcionális vágások módszere korlátozás és szétválasztás (branch-and-bound) korlátozás és vágás (branch-and-cut) Lagrange-i relaxáció
p. Irodalom Jordán, Recski, Szeszlér: Rendszeroptimalizálás, Typotex, 2004. Nemhauser, Wolsey: Integer Programming and Combinatorial Optimization, Wiley, New York, 1988. Schrijver: Theory of Integer and Linear Programming, Wiley, Chichester,1986.
p. Példa max x 1 + x 2 s.t. x 1 + 2x 2 4 5x 1 + x 2 20 2x 1 2x 2 7 x 1 0 x 2 0 x 1 Z x 2 Z
Példa (folyt.) p.
Alapfeladat: ILP ILP (Integer Linear Programming) = lineáris programozás egészértékű változókkal max s.t. c T x Ax b x Z n ahol x a változók n elemű oszlopvektora, amelyről megköveteljük, hogy minden eleme egészértékű A egy m n méretű mátrix c T egy n elemű sorvektor b egy m elemű oszlopvektor továbbá Dx = d alakú feltételek is megengedhetőek p.
p. Alapfeladat: MIP MIP (Mixed Integer Programming) = lineáris programozás egészértékű és valós változókkal max c 1 T x 1 + c 2 T x 2 s.t. A 1 x 1 + A 2 x 2 b x 1 Z n 1 x 2 R n 2 ahol x 1 egy n 1 elemű egészértékű, x 2 egy n 2 elemű valós oszlopvektor A 1 egy m n 1 méretű, és A 2 egy m n 2 mátrix c 1 T egy n 1 elemű, és c 2 T egy n 2 elemű sorvektor b egy m elemű oszlopvektor
p. Az utazó ügynök probléma Traveling SalesPerson (TSP) adott egy irányított, összefüggő gráf G(V,E), ahol V a pontok és E V V az élek halmaza egy költségfüggvény c : E Z +, amely minden élhez egy pozitív egész költséget rendel keressük a gráf legrövidebb Hamilton-körét (c szerint) Hamilton-kör: a gráf minden pontján pontosan egyszer megy át minden pont be-foka 1 minden pont ki-foka 1 a pontok minden S V részhalmazának ki-foka legalább 1
p. Az utazó ügynök probléma (folyt.) jelölje x ij változó, hogy egy (i,j) E él benne van-e a Hamilton-körben min c ij x ij s.t. (i,j) E j:(j,i) E j:(i,j) E i S,j V \S x ji = 1 i V (be-fok) x ij = 1 i V (ki-fok) x ij 1 S V (részhalmazok foka) 0 x ij 1,x ij Z (i,j) E
p. Az utazó ügynök probléma (folyt.) probléma: exponenciális számú feltétel a TSP felírható polinom méretű ILP-ként is (Miller-Tucker-Zemlin, 1960) legyen n = V és induljunk tetszőleges v 0 -ból vezessünk be egy új változót z i : a i V pont a Hamilton-kör éppen z i -edik állomása legyen z v0 = 1
p. 1 Az utazó ügynök probléma (folyt.) (i,j) él benne van a Hamilton-körben z j = z i +1 ha i,j v 0 (i,j) él nincs benne a Hamilton-körben z i z j n 1 z i z j + nx ij n 1 minden v 0 -ra nem illeszkedő élre igaz
p. 1 Az utazó ügynök probléma (folyt.) min s.t. c ij x ij (i,j) E) j:(j,i) E j:(i,j) E (1) x ji = 1 i V (2) x ij = 1 i V (3) z i z j + nx ij n 1 (i,j) E : i,j v 0 (4) x ij {0, 1} (i,j) E (5) 2 z i n i V \ v 0 (6) z v0 = 1 (7)
Az utazó ügynök probléma (folyt.) Tétel: x,z megoldja (1) (7) ILP-t, akkor és csak akkor, ha x éppen megoldja a TSP-t Biz.: (2), (3) és (5) miatt a {(i,j) E : x ij = 1} élek halmaza mindig diszjunkt körök halmazát adja G-ben elég belátni, hogy (4) szerint csak egy kör van, a Hamilton-kör tegyük fel, hogy nem: létezik egy K kör (pontjait jelölje V K és éleit E K ), úgy, hogy v 0 / V K és (i,j) E K : x ij = 1, és legyen u : z u = maxz i K utolsó pontja i V K v : z v = min i V K z i K első pontja ekkor (4) miatt z v z u + 1 ellentmondás p. 1
p. 1 3-kielégíthetőség Boolean 3-satisfiability (3-SAT) létezik-e A, B, C és D logikai változó, hogy (A VAGY B VAGY C) ÉS (A VAGY C VAGY D) = IGAZ például C = IGAZ helyes választás
p. 1 3-kielégíthetőség (folyt.) 3-SAT: megválasztható-e X i : i {1,...,k} logikai változó úgy, hogy kielégítse az alábbi, konjunktív normálformában adott logikai függvényt: f(x 1,X 2,...,X k ) = d ) (( )X i1 ( )X i2 ( )X i3 i=1 = IGAZ matematikai logika: : logikai ÉS művelet : a logikai VAGY művelet ( )X ij az i j -edik változó vagy a negáltja X ij
3-kielégíthetőség (folyt.) X i -khez rendeljünk z i bináris változókat: z i {0, 1} konvertáljuk az elemi diszjunkciókat: ha mindhárom változó negálatlan (X i1 X i2 X i3 ): z i1 + z i2 + z i3 1 (8) ha az egyik változó negált (X i1 X i2 X i3 ): z i1 + (1 z i2 ) + z i3 1 (9) ha két változó negált ( X i1 X i2 X i3 ): (1 z i1 ) + (1 z i2 ) + z i3 1 (10) ha mindhárom változó negált ( X i1 X i2 X i3 ): (1 z i1 ) + (1 z i2 ) + (1 z i3 ) 1 (11) p. 1
p. 1 3-kielégíthetőség (folyt.) tehát X ij helyére rendre z ij -t írunk és X ij helyére pedig (1 z ij )-t az f(.) logikai függvénnyel adott 3-kielégíthetőség probléma ILP formájában: max s.t. k i=1 z i z i kielégíti a (8) (11) feltételeket z i {0, 1} a célfüggvény tetszőleges, a 3-SAT problémát a feltételrendszer írja le
p. 1 Példa f(a,b,c,d) =(A VAGY B VAGY C) ÉS (A VAGY C VAGY D) max z A + z B + z C + z D s.t. z A + (1 z B ) + z C 1 (1 z A ) + z C + (1 z D ) 1 z A,z B,z C,z D {0, 1}
p. 1 3-kielégíthetőség (folyt.) Tétel: az f(.) logikai függvénnyel adott 3-kielégíthetőség probléma akkor és csak akkor oldható meg, ha a megfelelő ILP megoldható Biz.: legyen X i = IGAZ z i = 1 ekkor f(.) igaz minden elemi diszjunkció (( )X i1 ( )X i2 ( )X i3 ) igaz minden (8) (11) feltétel teljesül az ILP megoldható
p. 1 Az ILP feladat bonyolultsága két nevezetes NP-teljes problémát ILP megoldására vezettük vissza vajon az ILP feladat is NP-teljes? eldöntendő kérdés: ILP: Van-e az S := {x : Ax b,x Z n } halmaznak olyan x eleme, amelyre teljesül c T x t? tegyük fel, hogy erre a kérdésre polinom időben meg tudjuk adni a választ ekkor tudjuk a max{c T x : Ax b,x Z n } feladatra is a választ polinom időben (bináris kereséssel)
p. 2 Az ILP feladat bonyolultsága (folyt.) Tétel: az ILP probléma NP-teljes Biz.: NP-beli, mert egy megfelelő x vektor polinom méretű és polinom időben ellenőrizhető tanú NP-nehéz, mert visszavezethető rá a TSP probléma: TSP: Van-e egy gráfban t-nél kisebb költségű Hamilton-kör? vagy a 3-kielégíthetőség probléma ILP NP-beli és NP-nehéz, ezért NP-teljes
p. 2 ILP visszavezetése lineáris programra adott egy ILP és ennek LP relaxációja kérdés: max{c T x : Ax b,x Z n } max{c T x : Ax b,x R n } max ILP? = max LP ilyenkor az ILP polinom időben megoldható
p. 2 Totálisan unimoduláris mátrixok Def.: egy mátrix totálisan unimoduláris (TU), ha minden négyzetes részmátrixának aldeterminánsa 0, 1 vagy 1 természetesen, egy TU mátrix minden eleme 0, 1 vagy 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 TU [ 1 1 1 1 ] nem TU, pedig minden elem 0, 1 vagy 1
p. 2 ILP-k TU feltételrendszerrel Tétel: legyen A egy TU mátrix, b egy egészértékű és c valós értékű vektor és tegyük fel, hogy a max{c T x : Ax b} (LP) lineáris program megoldható, és maximuma véges. Ekkor a max{c T x : Ax b,x Z n } (ILP) is megoldható, és maximuma megegyezik az LP maximumával. Biz.: belátjuk, hogy LP minden bázis megoldása egészértékű minden x B bázis megoldás felírható A egy megfelelő B bázisával Bx B = b mivel B bázis nemszinguláris és TU és b egész, a Cramer-szabályból az állítás már következik
Emlékeztető: a bázismegoldások adott max{c T x : Ax = b,x 0} lineáris program, ahol A mátrix mérete m n és sorai lineárisan függetlenek legyen B az A mátrix egy m m méretű nemszinguláris részmátrixa (bázis) a változók sorrendjének felcserélésével: A = [B N], x T = [x T B xt N ], ct = [c T B ct N ] max s.t. c T B B 1 b + (c T N ct B B 1 N)x N x B + B 1 Nx N = B 1 b x B 0,x N 0 és a bázison kívüli változókra x N = 0 ezért a B bázishoz tartozó bázismegoldás x B = B 1 b és a célfüggvény értéke c T B B 1 b p. 2
p. 2 Emlékeztető: Cramer szabály Cramer szabály: adott egy inhomogén lineáris egyenletrendszer nemszinguláris, kvadratikus együtthatómátrixszal Bx = b ekkor a megoldás létezik és egyértelmű (x = B 1 b), és i-edik koordinátája egyszerűen számítható x i = det(b i) det(b) ahol B i -t úgy kapjuk, hogy az B mátrix i-edik oszlopát lecseréljük b-re.
p. 2 ILP-k TU feltételrendszerrel (folyt.) min s.t. [ ] 0 1 1 x 1 0 0 0 1 0 0 0 1 x = 1 1 1 x opt = [ 0 1 2 ] x 0 1 1 2 3
p. 2 ILP-k TU feltételrendszerrel (folyt.) min s.t. [ ] 1 0 1 x 1 0 0 0 1 0 0 0 1 x = 1 1 1 x opt = [ 1 0 2 ] x 0 1 1 2 3
p. 2 ILP-k TU feltételrendszerrel (folyt.) min s.t. [ ] 2 2 1 x 1 0 0 0 1 0 0 0 1 x = 1 1 1 x opt = [ 1 1 1 ] x 0 1 1 2 3
p. 2 ILP-k TU feltételrendszerrel (folyt.) Következmény: ha max{c T x : Ax b,x Z n } ILP-ben A mátrix TU és b egészértékű, akkor az ILP polinom időben megoldható az LP relaxáció megoldásával néhány nevezetes problémáról tudjuk, hogy a feltételrendszere TU mátrixot ad: legrövidebb út minimális költségű folyam maximális folyam maximális súlyú párosítás páros gráfokban másrészt, egy mátrixról polinom időben eldönthető, hogy totálisan unimoduláris-e
p. 3 TU mátrixok transzformációi Tétel: egy TU A mátrix TU marad, ha a.) transzponáljuk b.) egy sorát (oszlopát) 1-gyel szorozzuk c.) hozzáadunk egy egységvektort új sorként (oszlopként) d.) egyik sorát (oszlopát) új sorként (oszlopként) hozzáadjuk
TU mátrixok transzformációi (folyt.) Biz.: csak a változás által érintett részmátrixok determinánsa változik a.) a determináns transzponálásra invariáns b.) a determináns 1-szeresére változik, ha a mátrix egy sorát (oszlopát) 1-gyel szorozzuk c.) adjunk a mátrixhoz egységvektort, és tekintsük az új sort (oszlopot) tartalmazó részmátrixokat ha az új sorban (oszlopban) benne van az 1-es, akkor fejtsük ki a determinánst ettől az elemtől ha nincs, akkor a determináns 0 (van csupa 0 sor vagy oszlop) d.) ha a megduplázott sor (oszlop) már egyszer benne volt a részmátrixban, akkor a determináns 0, egyébként a részmátrix A sorainak (oszlopainak) permutációjával előáll, így determinánsa változatlan p. 3
p. 3 TU mátrixok transzformációi (folyt.) Következmény: ha A TU, akkor [A,I] és [ A I ] is TU ha A TU és b egészértékű és c valós, akkor max{c T x : Ax b} max{c T x : Ax = b,x 0} (standard alak) (kanonikus alak) összes bázis megoldása egészértékű ha A TU és b és c egészértékű, akkor a max{c T x : Ax b} LP, továbbá a min{y T b : y T A = c,y 0} duális LP összes bázis megoldása egészértékű
p. 3 Legrövidebb út probléma adott G(V,E) irányított gráf és két pont s,d V,s d egy költségfüggvény c : E R +, amely minden élhez egy nemnegatív költséget rendel feladat: keressük a legrövidebb s d utat polinom időben megoldható (Dijkstra algoritmusa, Bellman-Ford algoritmusa, stb.) fogalmazzuk meg ILP formájában
p. 3 Példa Élek: l (i,j): 1 (1, 2), 2 (1, 3), 3 (3, 2), 4 (3, 4), 5 (2, 4) Élköltségek: c (1,2) = 4, c (1,3) = 1, c (3,2) = 2, c (3,4) = 7, c (2,4) = 3 és s = 1,d = 4
p. 3 Legrövidebb út probléma (folyt.) legrövidebb s d út minimális költségű 1-értékű folyam Def.: az f : E R függvény (hálózati) folyam, ha f(j,i) f(i,j) = 0 i V \ {s,d} j:(j,i) E j:(i,j) E f(i,j) 0 (i,j) E
p. 3 Legrövidebb út probléma (folyt.) min s.t. (i,j) E c ijx ij j:(j,i) E x ji j:(i,j) E x ij = x ij 0 x ij {0, 1} 0 ha i V \ {s,d} 1 ha i = s 1 ha i = d (i,j) E (i,j) E
p. 3 Legrövidebb út probléma (folyt.) min{c T x : Nx = e d e s,x {0, 1} m } N: illeszkedési mátrix (n m méretű, n = V, m = E ) (N) il = 1 ha l = (k,i) E valamely k V \ {i} pontra 1 ha l = (i,k) E valamely k V \ {i} pontra 0 egyébként x: folyamvektor (m elemű oszlopvektor), amelynek az l-edik koordinátája jelöli a folyamot az l-edik élen e i : (kanonikus) egységvektor (n elemű oszlopvektor), amelynek az i-edik eleme 1, a többi 0 c T : költségvektor (m elemű sorvektor), amelynek az l-edik koordinátája jelöli az l-edik él költségét
p. 3 Legrövidebb út probléma (folyt.) min s.t. [ ] 4 1 2 7 3 x 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 x = 0 0 0 1 1 1 0 0 1 x {0, 1} m
Az illeszkedési mátrix Tétel: irányított gráf illeszkedési mátrixa totálisan unimoduláris Biz.: kiválasztjuk N egy k méretű kvadratikus M részmátrixát, és k-ra vonatkozó teljes indukcióval belátjuk, hogy det(m) = 0, 1 vagy 1 k = 1: M = 0, 1 vagy 1 k 2: ha M-nek van olyan oszlopa, amelyben csak egy nemnulla elem van, fejtsük ki det(m)-t ennél az elemnél; det(m) így már csak k 1 méretű részmátrixoktól függ, ezekre pedig teljesül a feltétel ha M minden oszlopa pontosan egy 1 és egy 1 elemet tartalmaz, akkor a sorok összege 0, így a determináns is 0 p. 3
p. 4 Legrövidebb út probléma (folyt.) az ILP formában megfogalmazott legrövidebb útvonal probléma min{c T x : Nx = e d e s,x {0, 1} m } helyett elég ennek LP relaxációját megoldani min{c T x : Nx = e d e s,x 0} mivel N TU, az összes bázis megoldás egészértékű
p. 4 Legrövidebb út probléma (folyt.) min s.t. [ ] 4 1 2 7 3 x 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 x = 0 0 0 1 1 1 0 0 1 x 0 Bázis megoldások: x b1 = [ 1 0 0 0 1 ], c T x b1 = 7 x b2 = [ 0 1 1 0 1 ], c T x b2 = 6 x b3 = [ 0 1 0 1 0 ], c T x b3 = 8
p. 4 Legrövidebb út probléma (folyt.) Primál: min{c T x : Nx = e d e s,x 0} Duál: max{π T (e d e s ) : π T N c T } = max π d π s s.t. π j π i c ij (i,j) E minden P = {(s,u 2 ), (u 2,u 3 ),...,(u k,v)}, s pontból d pontba vezető útvonalra igaz, hogy π v π s = (π u2 π s )+(π u3 π u2 )+...+(π v π uk ) c ij (i,j) P potenciál: π v a v pont lehetséges legnagyobb össztávolsága s-től a c ij élköltségek függvényében
Legrövidebb út probléma (folyt.) Tétel: legyen P = {(s,u 2 ), (u 2,u 3 ),...,(u k,v)} egy minimális költségű s d útvonal; ekkor a duál LP minden π optimális megoldására (i,j) P : π j π i = c ij Biz.: ha P minimális költségű útvonal, akkor létezik olyan optimális és megengedett x megoldása a primál LP-nak, melyre (i,j) P : x ij > 0 alkalmazva a komplementáris változókra vonatkozó szabályt ( complementary slackness ): x ij > 0 π j π i = c ij p. 4
p. 4 Emlékeztető Tétel: legyen P := max{c T x : Ax b,x 0} és D := min{y T b : y T A c T,y T 0} a duálisa, továbbá legyen ˆx optimális megoldása P -nek és ŷ T optimális megoldása D-nek. Ekkor: Aˆx b, ˆx 0 (primal feasibility) ŷ T A c T,ŷ T 0 (dual feasibility) ŷ T (b Aˆx) = 0 (complementary slackness 1) (ŷ T A c T )ˆx = 0 (complementary slackness 2) a complementary slackness szabály bővebben: ŷ i > 0 a iˆx = 0 ˆx j > 0 ŷ T a j = 0 a iˆx > 0 ŷ i = 0 ŷ T a j > 0 ˆx j = 0
p. 4 Maximális folyam probléma adott G(V, E) összefüggő, irányított gráf és két pont s,d V,s d egy kapacitásfüggvény u : E R +, amely minden élhez egy nemnegatív élkapacitást rendel feladat: keressük a maximális s d folyamot úgy, hogy az éleken a folyam az élkapacitás alatt marad polinom időben megoldható (Edmonds-Karp algoritmusa, Goldberg-Tarjan preflow-push algoritmusai, stb.) fontos tulajdonság: ha az élkapacitások egészértékűek, akkor mindig van egészértékű maximális folyam fogalmazzuk meg LP formájában
p. 4 Példa Élek: l (i,j): 1 (1, 2), 2 (1, 3), 3 (3, 2), 4 (3, 4), 5 (2, 4) Élkapacitások: u (1,2) = 2, u (1,3) = 5, u (3,2) = 2, u (3,4) = 1, u (2,4) = 7 és s = 1,d = 4
p. 4 Maximális folyam probléma (folyt.) s.t. max t j:(j,i) E x ji 0 ha i V \ {s,d} j:(i,j) E x ij = t ha i = s t ha i = d 0 x ij u ij (i,j) E vektoros formában: max t s.t. Nx t(e d e s ) = 0 0 x u
Példa (folyt.) max [ 0 0 0 0 0 1 ] [ x t ] s.t. 1 1 0 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 [ x t ] = 0 0 0 0 2 5 2 1 7 x 0 p. 4
p. 4 Maximális folyam probléma (folyt.) max{t : [N (e d e s )] [ ] x t = 0, 0 x u} = (12) = max{(x ) (d,s) : N x = 0, 0 x u } (13) vagyis (12) átírható egy G (V,E ) gráf felett megfogalmazott ekvivalens (13) formába, ahol G -t úgy kapjuk, hogy G-t kiegészítjük egy d-ből s-be mutató éllel, melynek a kapacitásértékét végtelenre állítjuk N az új éllel kiegészített G gráf illeszkedési mátrixa u az új éllel kiegészített G gráf élkapacitásvektora (13) célja olyan x kört találni G -ben, mely a (d,s) élre maximális értékű folyamot vezet
Példa (folyt.) p. 5
p. 5 Maximális folyam probléma (folyt.) slack változókat bevezetve max (x ) (d,s) s.t. N x = 0 x + y = u x 0,y 0 y: m méretű oszlopvektor, minden kapacitásfeltételhez max{(x ) (d,s) : [ ] [ ] N 0 x I I y = [ ] 0 u,x 0,y 0}
p. 5 Maximális folyam probléma (folyt.) Tétel: ha u egészértékű, akkor a maximális folyam probléma minden bázis megoldása egészértékű Biz.: N definíció szerint TU [ N I ] is TU [ N 0 I I ] is TU (lásd: TU mátrixok transzformációi) említettük, hogy ha az élkapacitások egészértékűek, mindig létezik egészértékű maximális folyam (Ford és Fulkerson) most kaptunk egy alternatív bizonyítást
p. 5 Példa (folyt.) s = 1,d = 4 Bázis megoldások: x b1 = [ 2 0 0 0 2 ], t b1 = 2 x b2 = [ 2 1 0 1 2 ], t b2 = 3 x b3 = [ 0 0 0 0 0 ], t b3 = 0 x b4 = [ 0 1 0 1 0 ], t b4 = 1 x b5 = [ 0 3 2 1 2 ], t b5 = 3 x b6 = [ 0 2 2 0 2 ], t b6 = 2 x b7 = [ 2 3 2 1 4 ], t b7 = 5 x b8 = [ 2 2 2 0 4 ], t b8 = 4
p. 5 Maximális folyam probléma (folyt.) Primál: max t (14) s.t. Nx + t(e d e s ) = 0 (15) x u (16) x 0 (17) π T : duális változó (15) feltételhez (n méretű sorvektor) w T : duális változó (16) feltételhez (m méretű sorvektor) Duál: min w T u (18) s.t. π T N + w T 0 (19) π T (e d e s ) = 1 (20) w T 0 (21)
p. 5 Maximális folyam probléma (folyt.) min (i,j) E w iju ij s.t. π j π i w ij (i,j) E π d π s = 1 w ij 0 (i,j) E hasonló a legrövidebb útvonal probléma duáljához π v ismét potenciált definiál de az élköltségek (w ij ) most részei a problémának mint duális változók
Maximális folyam probléma (folyt.) a G(V, E)-beli vágások összefüggésbe hozhatók (18) (21) megoldásaival legyen (S,V \ S) egy G-beli s d vágás és π v = { 0 ha v S 1 ha v V \ S w ij = { 1 ha i S és j V \ S 0 egyébként π T,w T kielégíti (19) (21) feltételeket, és a vágás kapacitása éppen w T u ha (S,V \ S) minimális vágás, akkor π T,w T optimális megoldás a maximális folyam értéke (vagyis (14) (17) maximuma) megegyezik a minimális vágás kapacitásával (vagyis (18) (21) minimumával) lásd: LP dualitás tétel p. 5
Példa (folyt.) Élek: l (i,j): 1 (1, 2), 2 (1, 3), 3 (3, 2), 4 (3, 4), 5 (2, 4) Élkapacitások: u (1,2) = 2, u (1,3) = 5, u (3,2) = 2, u (3,4) = 1, u (2,4) = 7 és s = 1,d = 4 S = {1, 3}, V \ S = {2, 4} p. 5
p. 5 Minimális költségű folyam probléma adott G(V, E) összefüggő, irányított gráf és két pont s,d V,s d egy költségfüggvény c : E R +, amely minden élhez egy nemnegatív költséget rendel egy kapacitásfüggvény u : E R +, amely minden élhez egy nemnegatív élkapacitást rendel t igény s és d pont között feladat: keressük azt a folyamot, mely s pontból d pontba t igényt a minimális költséggel vezeti el szintén polinom időben megoldható (network simplex, out-of-kilter, stb.) fogalmazzuk meg LP formájában
p. 5 Minimális költségű folyam (folyt.) min c T x s.t. Nx = t(e d e s ) 0 x u a feltételrendszer totálisan unimoduláris egészértékű élkapacitások és egészértékű igény esetén mindig van egészértékű minimális költségű folyam a minimális költségű folyam probléma megoldására a lineáris programozási módszer a gyakorlatban is versenyképes lásd: network simplex algoritmus
p. 6 ILP: mégegyszer ILP = lineáris programozás egészértékű változókkal max s.t. c T x Ax = b x 0 x Z n ahol A egy m n méretű mátrix c T egy n elemű sorvektor b egy m elemű oszlopvektor x egy n elemű oszlopvektor, amelyről megköveteljük, hogy minden eleme egészértékű és nemnegatív
p. 6 ILP-k megoldása az ILP visszavezetése LP-re csak bizonyos ILP-kre használható például ha a feltételrendszer totálisan unimoduláris ilyenkor polinom időben megvan a megoldás az ILP megoldása LP-k sorozataként minden ILP-re használható véges, de nem feltétlenül polinom idejű megoldás Cutting plane algoritmusok (Gomory-féle duál-frakcionális vágások módszere) korlátozás és szétválasztás (branch-and-bound) korlátozás és vágás (branch-and-cut) Lagrange-i relaxáció
p. 6 Cutting plane algoritmusok 0.) adott ILP: max{c T x : Ax = b,x 0,x Z n } 1.) oldjuk meg az LP relaxációt: max{c T x : Ax = b,x 0} 2.) ha a megoldás x 0 egészértékű, készen vagyunk 3.) ha nem, készítünk egy f T x g feltételt, amely az optimális megoldásra biztos teljesül: f T x opt g de x 0 pontot elvágja: f T x 0 > g 4.) hozzáadjuk az LP relaxációhoz f T x g feltételt és folytatjuk 1.) pontban
p. 6 Jelölések LP: max{c T x : Ax = b,x 0} legyenek A sorai lineárisan függetlenek és legyen B az A mátrix egy bázisa számozzuk át A oszlopait, továbbá x és c elemeit úgy, hogy A = [B N], x = [ x B xn ] és c T = [c T B c T N ] max c T B x B + c T N x N s.t. Bx B + Nx N = b x B, x N 0 max c T B B 1 b + (c T N ct B B 1 N)x N (22) s.t. x B + B 1 Nx N = B 1 b (23) x B,x N 0 (24)
Gomory-féle vágások legyen B a fenti LP relaxáció optimális megoldásához tartozó bázis ekkor x N = 0 és x B = B 1 b ha x B egészértékű, készen vagyunk ellenkező esetben x B = ˆb = B 1 b elemei között van törtértékű (frakcionális), például az i-edik felhasználva (23)-t x Bi + j J y ij x Nj = ˆb i (25) ahol x Bi az i-edik bázisbeli változó és y ij a B 1 N mátrix i-edik sorához és j-edik oszlopához tartozó eleme p. 6
p. 6 Gomory-féle vágások (folyt.) jelölje x az x alsó egészrészét ( 1.7 = 2!) bontsuk az együtthatókat (25)-ben egész és tört részeikre x Bi + j J ( y ij + (y ij y ij ))x Nj = ˆb i + (ˆb i ˆb i ) vigyünk mindent át a jobboldalra, amiről tudjuk, hogy egészértékű (y ij y ij )x Nj = (ˆb i ˆb i )+ j J + ( x Bi j J y ij x Nj + ˆb i ) = ˆb i ˆb i + k, k Z
p. 6 Gomory-féle vágások (folyt.) mivel y ij y ij 0 és x Nj 0, tudjuk, hogy j J (y ij y ij )x Nj 0 továbbá tudjuk, hogy 0 ˆb i ˆb i < 1 és (y ij y ij )x Nj = ˆb i ˆb i + k, k Z j J innen következik, hogy k 0, és ezért (y ij y ij )x Nj ˆb i ˆb i (26) j J Gomory-féle duális frakcionális vágás nemtriviális, ha ˆb i / Z
Gomory-féle vágások (folyt.) adjuk tehát hozzá az alábbi sort az LP relaxáció optimális szimplex táblájához (y ij y ij )x Nj s = ˆb i ˆb i, s 0 j J Tétel: az (26) szerint adott vágást az optimális táblához adva nem zárunk ki egészértékű elemet de kizártuk az aktuális optimális megoldást az új bázis a duál szimplex módszerrel optimalizálható a Gomory-féle vágásokat használó cutting plane algoritmus véges lépésben megadja az ILP optimális megoldását p. 6
p. 6 Példa max x 2 s.t. 3x 1 + 2x 2 6 3x 1 + 2x 2 0 x 1, x 2 0 x 1 Z x 2 Z
Példa (folyt.) p. 6
p. 7 Példa (folyt.) az ILP kanonikus alakban max x 2 s.t. 3x 1 + 2x 2 + x 3 = 6 3x 1 + 2x 2 + x 4 = 0 x 1, x 2, x 3, x 4 0 x 1 Z x 2 Z x 3 Z x 4 Z
p. 7 Példa (folyt.) az LP relaxáció kanonikus alakban max x 2 s.t. 3x 1 + 2x 2 + x 3 = 6 3x 1 + 2x 2 + x 4 = 0 x 1, x 2, x 3, x 4 0
p. 7 Emlékeztető: a szimplex tábla max s.t. z z + (c T B B 1 N c T N )x N = c T B B 1 b x B + B 1 Nx N = B 1 b x B 0,x N 0 z x B x N RHS z 1 0 c T B B 1 N c T N ct B B 1 b 0. sor x B 0 I B 1 N B 1 b 1-m sorok
p. 7 Emlékeztető: a szimplex tábla (folyt.) z x B1... x Bm x N1... x Nn m RHS z 1 0... 0 z N1... z Nn m ˆb0 x B1 0 1... 0 y 1,1... y 1,n m ˆb1............. x Bm 0 0... 1 y m,1... y m,n m ˆbm
p. 7 Emlékeztető: a szimplex tábla (folyt.) max ˆb0 j J z jx Nj x Bi = ˆb i j J y ijx Nj x Bi,x Nj 0 i {1,...,m} primál szimplex megengedett táblák: i : ˆb i 0 optimalitás: j J : z j 0 belép a bázisba: k = argmin (z j : j J) ) kilép a bázisból: r = argmin( ˆbi y ik,i : y ik > 0
p. 7 Emlékeztető: a szimplex tábla (folyt.) pivot az y rk elem mentén az r-edik sort elosztjuk y rk -val az r-edik sor kivételével az összes i sorthoz hozzáadjuk az r-edik sor y ik -szorosát a 0-dik sorhoz hozzáadjuk az r-edik sor z k -szorosát
p. 7 Példa (folyt.) x 1 x 2 x 3 x 4 RHS z 0 1 0 0 0 x 3 3 2 1 0 6 x 4 3 2 0 1 0 bázis: x 3 = 6, x 4 = 0 nembázis : x 1 = x 2 = 0 célfüggvény: ˆb 0 = 0 belép a bázisba: x 2 kilép a bázisból: x 4
p. 7 Példa (folyt.) x 1 x 2 x 3 x 4 RHS z 3 2 0 0 1 2 0 x 3 6 0 1 1 6 x 2 3 2 1 0 1 2 0 bázis: x 2 = 0, x 3 = 6 nembázis : x 1 = x 4 = 0 célfüggvény: ˆb 0 = 0 belép a bázisba: x 1 kilép a bázisból: x 3
p. 7 Példa (folyt.) x 1 x 2 x 3 x 4 RHS z 0 0 1 4 x 1 1 0 1 6 1 6 1 x 2 0 1 1 4 1 4 1 4 3 2 3 2 bázis: x 1 = 1, x 2 = 3 2 nembázis : x 3 = x 4 = 0 célfüggvény: ˆb 0 = 3 2
Példa (folyt.) p. 7
p. 8 Példa (folyt.) az x 2 változó nem egészértékű x 2 + 1 4 x 3 + 1 4 x 4 = 3 2 készítsünk Gomory-féle vágást: (y ij y ij )x Nj ˆb i ˆb i j J 1 4 x 3 + 1 4 x 4 1 2 behelyettesítve x 1 és x 2 változókat: x 2 1 bevezetve az s 1 slack változót 1 x 4 3 + 1x 4 4 s 1 = 1, s 2 1 0
p. 8 Példa (folyt.) hozzáadjuk az új feltételt az LP relaxációhoz max x 2 s.t. 3x 1 + 2x 2 + x 3 = 6 3x 1 + 2x 2 + x 4 = 0 1x 4 3 1x 4 4 + s 1 = 1 2 x 1, x 2, x 3, x 4, s 1 0 az eredeti változók (x 1, x 2 ) terében max x 2 s.t. 3x 1 + 2x 2 6 3x 1 + 2x 2 0 x 2 1 x 1, x 2 0
Példa (folyt.) p. 8
Példa (folyt.) x 1 x 2 x 3 x 4 s 1 RHS z 0 0 1 4 1 3 0 4 2 1 x 1 1 0 1 0 1 6 6 1 1 3 x 2 0 1 0 4 4 2 s 1 0 0 1 1 1 1 4 4 2 bázis: x 1 = 1, x 2 = 3, s 2 1 = 1 2 nembázis : x 3 = x 4 = 0 célfüggvény: ˆb 0 = 3 2 belép a bázisba: x 3 kilép a bázisból: s 1 p. 8
p. 8 Emlékeztető: a szimplex tábla (folyt.) max ˆb0 j J z jx Nj x Bi = ˆb i j J y ijx Nj x Bi,x Nj 0 i {1,...,m} duál szimplex megengedett táblák: j J : z j 0 optimalitás: i : ˆb i 0 ) kilép a bázisból: r = argmin(ˆbi : i {1,...,m} ( ) zj belép a bázisba: k = argmin y rj, j J : y rj < 0
p. 8 Példa (folyt.) x 1 x 2 x 3 x 4 s 1 RHS z 0 0 0 0 1 1 x 1 1 0 0 1 2 2 3 3 3 x 2 0 1 0 0 1 1 x 3 0 0 1 1 4 2 bázis: x 1 = 2 3, x 2 = 1, x 3 = 2 nembázis : x 4 = s 1 = 0 célfüggvény: ˆb 0 = 1
Példa (folyt.) p. 8
p. 8 Példa (folyt.) az x 1 változó nem egészértékű x 1 1 3 x 4 + 2 3 s 1 = 2 3 készítsünk Gomory-féle vágást 2 3 x 4 + 2 3 s 1 2 3 bevezetve az s 2 slack változót 2 3 x 4 2 3 s 1 + s 2 = 2 3, s 2 0 behelyettesítve x 1 és x 2 változókat x 2 x 1
p. 8 Példa (folyt.) hozzáadjuk az új feltételt az LP relaxációhoz max x 2 3x 1 + 2x 2 + x 3 = 6 3x 1 + 2x 2 + x 4 = 0 1x 4 3 1x 4 4 + s 1 = 1 2 2x 3 4 2s 3 1 + s 2 = 2 3 x 1, x 2, x 3, x 4, s 1, s 2 0
p. 8 Példa (folyt.) az eredeti változók (x 1, x 2 ) terében max x 2 s.t. 3x 1 + 2x 2 6 3x 1 + 2x 2 0 x 2 1 x 1 + x 2 0 x 1, x 2 0
Példa (folyt.) p. 9
p. 9 Példa (folyt.) x 1 x 2 x 3 x 4 s 1 s 2 RHS z 0 0 0 0 1 0 1 x 1 1 0 0 1 2 2 0 3 3 3 x 2 0 1 0 0 1 0 1 x 3 0 0 1 1 4 0 2 s 2 0 0 0 2 3 2 3 1 2 3
p. 9 Példa (folyt.) x 1 x 2 x 3 x 4 s 1 s 2 RHS z 0 0 0 0 1 0 1 x 1 1 0 0 0 1 1 2 1 x 2 0 1 0 0 1 0 1 x 3 0 0 1 0 1 3 1 2 2 x 4 0 0 0 1 1 3 1 2 optimum: x 1 = x 2 = 1 két Gomory-féle vágás elég volt sajnos általában jóval több kell MIP-re is kiterjeszthető
p. 9 Korlátozás és szétválasztás branch-and-bound max s.t. c T x Ax b f x g x Z n ahol f és g egészértékű vektorok a megengedett megoldások halmaza S = {x : Ax b,f x g,x Z n } legyen z S = max{c T x : x S}
p. 9 Oszd meg és uralkodj! osszuk S-t diszjunkt alhalmazokra S 1 = {x : Ax b,f x h,x Z n } S 2 = {x : Ax b,h x g,x Z n } S = S 1 S2 és S 1 S2 = ekkor egyrészt z S = max(z S1,z S2 ) másrészt z S1 z S és z S2 z S
p. 9 Korlátozás és szétválasztás (folyt.) oldjuk meg az LP relaxációt: max{c T x : Ax b,f x g} ha az optimális megoldás egészértékű, kész Szétválasztás: osszuk fel S-t a fentiek szerint S 1 és S 2 diszjunkt halmazokra és oldjuk meg az LP relaxációt S 1 -en és S 2 -n is Korlátozás: ha valamelyik részprobléma megoldása egészértékű, jegyezzük meg, mert z S már nem lehet ennél kisebb folytassuk az S 1 és S 2 részhalmazaival rekurzívan ha valamelyik alhalmazon az LP relaxáció megoldása a korlátnál kisebb, akkor az alhalmazt már nem kell tovább szétválasztanunk és a rekurzió itt megáll
p. 9 Inicializálás legyen tehát a megoldandó ILP max{c T x : Ax b,f x g,x Z n } az algoritmus az ILP-k egy L listáján dolgozik, melybe az eredeti S halmaz alhalmazain megfogalmazott ILP-ket helyezi el ezenkívül számon tartja az az eddig talált legjobb, egészértékű x megoldást és a hozzá tartozó célfüggvényértéket: z = c T x 0. lépés: adjuk hozzá L-hez a megoldandó ILP-t, legyen z = és x nem definiált
p. 9 Relaxáció 1. lépés: ha L =, végeztünk ha nem, akkor válasszunk egy ILP-t L-ből és töröljük onnan oldjuk meg az LP relaxációt max{c T x : Ax b,f k x g k } ahol S k = {x : Ax b,f k x g k } a k-edik alhalmaz ha nincs megoldás, vissza az 1. lépésre ha van, legyen x k egy optimális megoldás és a hozzá tartozó célfüggvényérték z k = c T x k
p. 9 Korlátozás 2. lépés: három alesetet különböztetünk meg z k z : ilyenkor az S k alhalmamazon nem tudunk javítani az eddig talált optimumon; vissza az 1. lépésre, mert az összes további részfeladat optimuma is legfeljebb z k lehet ez a kulcslépés, hiszen így a keresési fa egy egész ágát lemetszettük, nincs szükség az összes alhalmaz bejárására z k > z és x k egészértékű: x k jobb megoldás, mint az eddig talált optimum, ezért eltároljuk: z = z k és x = x k z k > z de x k nem egészértékű: folytatjuk a 3. lépéssel
p. 9 Szétválasztás 3. lépés: S k halmazt két további alhalmazra osztjuk legyen x k i / Z egy nem egészértékű változó S k+1 = {x : Ax b,f k x g k,x i x k i } S k+2 = {x : Ax b,f k x g k,x i x k i + 1} és adjuk hozzá max{c T x : x S k+1 } és max{c T x : x S k+2 } ILP-ket L-hez folytassuk az 1. lépésnél
p. 10 Példa Z = max 21x 1 + 11x 2 s.t. 7x 1 + 4x 2 13 x 1, x 2 0 x 1, x 2 Z
Példa (folyt.) p. 10
p. 10 Példa (folyt.) 1. lépés Start? y 1. probléma x 1 0, x 2 0 Z = 39, x 1 = 13 7, x 2 = 0? y 2. probléma x 1 2, x 2 0 nincs megoldás 2. lépés x 1 2 szétválasztás x 1 -en 3. lépés x 1 1 3. probléma 1 x 1 0, x 2 0 Z = 37 1 2, x 1 = 1, x 2 = 3 2
p. 10 Példa (folyt.) S 2 = {x : 7x 1 + 4x 2 13, x 1 2,x 2 0} = nincs megoldás S 2 -ben a rekurzió itt nem folytatódik 2. probléma x 1 2, x 2 0 nincs megoldás
p. 10 Példa (folyt.) 3. probléma 1 x 1 0, x 2 0 Z = 37 1 2, x 1 = 1, x 2 = 3 2
p. 10 Példa (folyt.) 3. probléma 1 x 1 0, x 2 0 Z = 37 1 2, x 1 = 1, x 2 = 3 2? y 5. probléma 1 x 1 0, x 2 2 Z = 37, x 1 = 5 7, x 2 = 2 5. lépés x 2 2 szétválasztás x 2 -n 4. lépés x 2 1 4. probléma 1 x 1 0, 1 x 2 0 Z = 32, x 1 = 1, x 2 = 1
p. 10 Példa (folyt.) x 1 = x 2 = 1 egészértékű megoldás, pillanatnyilag a legjobb megjegyezzük 4. probléma 1 x 1 0, 1 x 2 0 Z = 32, x 1 = 1, x 2 = 1
p. 10 Példa (folyt.) 5. probléma? y 6. probléma 1 x 1 0, x 2 2 nincs megoldás 6. lépés x 1 1 szétválasztás x 1 -en 7. lépés x 1 0 7. probléma 0 x 1 0, x 2 2 Z = 35 3 4, x 1 = 0, x 2 = 3 1 4? y 8. probléma 0 x 1 0, 3 x 2 2 Z = 33, x 1 = 0, x 2 = 3 8. lépés x 2 3 szétválasztás x 2 -n 9. lépés x 2 4 9. probléma 0 x 1 0, x 2 4 nincs megoldás
p. 10 Példa (folyt.) x 1 = 0, x 2 = 3 egészértékű megoldás Z = 33 pillanatnyilag a legjobb, mert Z > Z megjegyezzük mivel a további keresés során nem találunk jobb megoldást, ez az optimum 8. probléma 0 x 1 0, 3 x 2 2 Z = 33, x 1 = 0, x 2 = 3
p. 10 Praktikus megfontolások a következő ILP kiválasztása L-ből LIFO: a legutoljára generált ILP-t oldjuk meg ekkor ugyanis a pillanatnyi bázismegoldás duál szimplex-szel tovább optimalizálható mélységi bejárás a keresési fán FIFO: szélességi bejárás melyik változónál alkalmazzunk szétválasztást? általában azt a változót érdemes választani, amely a legmesszebb van az egészértékűségtől ( maximum integer infeasibility ) vagy: felhasználó által megadott prioritások
p. 11 Korlátozás és vágás branch-and-cut az előző kettő kombinációja induljunk az LP relaxációból használjuk a Gomory-féle (vagy egyéb) módszert néhány gyors vágás elkészítésére, amelyek az LP nem egészértékű megoldásainak nagy részét hamar kiküszöbölik egy idő után az újabb vágások már csak egészen kis tartományokat metszenek el; ekkor térjünk át a korlátozás és szétválasztás módszerére a résztartományokon ismét készíthetünk új vágásokat előny: a korlátozás és szétválasztás fázisában jóval kisebb tartományon kell keresni
p. 11 Lagrange-i relaxáció Lagrangian relaxation dekompozíciós módszer: komplex problémák egyszerűbb részekre bontása Példa: Constrained Shortest Path Problem (CSPF) adva egy G(V,E) gráf, s,t V, és két élköltségfüggvény c : E R + : egységnyi folyam átvitelének ára az élen t : E R + : az él késleltetése keressük a legrövidebb P útvonalat s és d között melynek a késleltetése kisebb mint egy T korlát
p. 11 A CSPF probléma Z = min c ij x ij (i,j) E s.t. x ji j:(j,i) E (i,j) E t ij x ij T x ij {0, 1} j:(i,j) E x ij = 0 ha i V \ {s,d} 1 ha i = s 1 ha i = d komplikáló feltétel (i,j) E
p. 11 Példa (folyt.) s = 1, d = 4 és legyen T = 5 P 1 = (1 2 4): c P1 = 2, t P1 = 6 P 2 = (1 3 2 4): c P2 = 6, t P2 = 4 P 3 = (1 3 4): c P3 = 7, t P3 = 5
p. 11 Lagrange-i relaxáció a CSPF probléma NP-teljes de a komplikáló feltétel nélkül legrövidebb út problémát kapunk az optimális útvonal mind c mind t szerint rövid keressünk egy olyan útvonalat, ami c-t és t-t is minimalizálja min (c ij + λt ij )x ij (i,j) E beépítjük a komplikáló feltételt a célfüggvénybe (egy λ értékkel megszorozva) ha eltaláljuk a megfelelő λ értéket, megvan a megoldás (a fenti példában válasszunk λ = 3-at)
p. 11 Lagrange-i relaxáció (folyt.) legyen P egy nehéz kombinatorikus optimalizálási probléma Z = min c T x s.t. Ax b Dx e x 0 és egészértékű feltételezzük, hogy X = {x : Dx e,x 0,x Z n } halmaz felett könnyű optimalizálni és Ax b komplikáló feltétel
p. 11 Lagrange-i relaxáció (folyt.) oldjuk meg inkább a Lagrange-i problémát ( Z(λ) = min c T x + λ(ax b) ) x X λ a Lagrange-i multiplikátorok vektora a komplikáló feltételt, beszorozva λ-val, felvittük a célfüggvénybe (dualizálás) Tétel: minden λ > 0-ra: Z(λ) Z Biz: legyen x optimális P -ben. Ekkor Z = c T x c T x + λ(ax b) (mert λ > 0 és x kielégíti a komplikáló feltételt: Ax b) és mivel x X, vagyis x megengedett megoldás a Lagrange-i problémában is, ezért : c T x + λ(ax b) Z(λ).
p. 11 A CSPF Lagrange-i relaxációja s.t. Z(λ) = min (c ij + λt ij )x ij λt = i,j) E = min i,j) E x ji x ij = j:(j,i) E j:(i,j) E c ij x ij + λ( t ij x ij T) i,j) E 0 ha i V \ {s,d} 1 ha i = s 1 ha i = d x ij {0, 1} (i,j) E
p. 11 Lagrange-i relaxáció (folyt.) a Lagrange-i problémát könnyű megoldani, és a megoldása alsó határa a bonyolult probléma optimumának remekül használható a korlátozás és szétválasztás módszerében, gyors és jó alsó határok előállítására minél nagyobb alsó határt találunk, annál jobb ehhez meg kell találni az optimális Lagrange-i multiplikátort szubgradiens módszer oldjuk meg a Lagrange-i problémát valamely kezdeti λ-ra, és legyen a megoldás x ha x megengedett P -ben és λ(ax b) = 0, készen vagyunk állítsunk λ-n és új iteráció