Operációkutatás I. 2015/2016-2. Szegedi Tudományegyetem Informatikai Tanszékcsoport Számítógépes Optimalizálás Tanszék 6. Előadás
Árazási interpretáció Tekintsük újra az erőforrás allokációs problémát (vonat és katona gyártása, fa és festék kell) Max z = 3x 1 +2x 2 [profit] x 1 +x 2 80 [fa] 2x 1 +x 2 100 [festék] x 1, x 2 0 Legyen egy egység fa piaci ára y 1 ($), egy egység festék ára y 2 ($). Mit tehet a gyártó? Eladhatja az erőforrásait (fa, festék) piaci áron Vehet további fát és festéket Gyárt a rendelkezésre álló erőforrásokból és eladja a játékokat Mi a legjobb stratégia (feltéve, hogy mindent tényleg el tud adni)?
Árazási interpretáció Ha eladja a készletét 80y 1 + 100y 2 profitra tesz szert Ha egy katona (piaci) előálĺıtási ára kisebb, mint az eladási ára, azaz y 1 + 2y 2 < 3($) akkor a gyártó korlátlan hasznot el tud érni. Miért? 1 db katona gyártási költsége y 1 + 2y 2 = x 1 db katona esetén: x 1 (y 1 + 2y 2 ) Mivel y 1 + 2y 2 < 3, legyen pl. y 1 + 2y 2 = 2.9$ (költség), az eladási ár pedig 3$ = 1db katona esetén a profit 0.1$ = x 1 db katona esetén: 0.1x 1 $ (ami tetszőlegesen nagy lehet)
Árazási interpretáció Hasonlóan megy a dolog a vonatokra is: Ha egy vonat (piaci) előálĺıtási ára kisebb, mint az eladási ára, azaz y 1 + y 2 < 2($) akkor a gyártó korlátlan hasznot el tud érni. De hogyan működik a piac? A piac nem engedi, hogy a gyártó korlátlan haszonra tegyen szert. Ellenkezőleg, úgy álĺıtja be az árakat, hogy a gyártó a lehető legkisebb profitot realizálja.
Árazási interpretáció: a piac ár képzése A piac a következő optimalizálási feladatot oldja meg : Min 80y 1 +100y 2 y 1 +2y 2 3 [katonák] y 1 +y 2 2 [vonatok] y 1, y 2 0 Ezt hívjuk az eredeti feladat duálisának Az eredeti feladatot ez alapján primál feladatnak hívjuk.
Primál-duál feladatpár A primál feladat: Max z = 3x 1 +2x 2 x 1 +x 2 80 2x 1 +x 2 100 x 1, x 2 0 A duál feladat: Min 80y 1 +100y 2 y 1 +2y 2 3 y 1 +y 2 2 y 1, y 2 0
Primál-duál feladatpár A primál-duál feladatpár általánosan: n a ij x j b i i = 1, 2,... m j=1 Primál feladat x j 0 j = 1, 2,... n n max c i x i = z i=1 m a ij y i c j j = 1, 2,... n i=1 Duál feladat y i 0 i = 1, 2,... m m min b i y i = w i=1
Primál-duál feladatpár A primál-duál feladatpár általánosan, mátrix formában: A primál feladat: Max c T x Ax b x 0 A duál feladat: Min b T y A T y c y 0 A duál a (standard alakú) primából egyszerűen megkapható: transzponáljuk A mátrixot cseréljük fel b és c vektorok szerepét cseréljük az egyenlőtlenségeket -ra Max helyett Min feladat
Gyenge dualitás tétel Tétel. (Gyenge dualitás) Ha x = (x 1,..., x n ) lehetséges megoldása a primál feladatnak és y = (y 1,..., y m ) lehetséges megoldása a duál feladatnak, akkor c T x b T y, azaz n m c j x j b i y i. j=1 Vagyis a duális feladat bármely lehetséges megoldása felső korlátot ad a primál bármely lehetséges megoldására (azaz az optimális megoldásra is). Bizonyítás. Egyszerű helyettesítés becsléssel: ( n n m ) m n c j x j y i a ij x j = x j a ij y i j=1 vagy mátrixosan: j=1 i=1 i=1 i=1 j=1 c T x (A T y) T x = (y T A)x = y T (Ax) y T b = b T y m b i y i, i=1
Gyenge dualitás Látjuk, hogy a korlátosság és a megoldhatóság nem függetlenek egymástól Ha a primál nem korlátos, akkor a duálnak nincs lehetséges megoldása Hasonlóan, ha a duál nem korlátos, akkor a primálnak nincs lehetséges megoldása Lehetséges, hogy egyiknek sincs lehetséges megoldása De ha mindkettőnek van, akkor mindkettő korlátos Továbbá a primál és a duál feladat egyidejű optimalitása ellenőrizhető
Primál-duál esetek
Erős dualitás tétel Tétel. (Erős dualitás) Ha x = (x 1,..., x n ) egy optimális megoldása a primál feladatnak és y = (y 1,..., y m ) optimális megoldása a duál feladatnak, akkor c T x = b T y, azaz n c j x j = j=1 m b i y i. i=1 Továbbá az is igaz, hogy y T (b Ax) = 0 és x T (A T y c) = 0. Egyszerűen, ha valamely i-edik feltétel egyenlet nem éles (azaz nincs egyenlőség) a primál optimumban, akkor a duál kapcsolódó y i változó 0 kell legyen. Visszafelé, ha egy primál x i változó szigorúan pozitív, akkor a kapcsolódó duális feltétel egyenlet éles kell legyen. Ezt komplementáris lazaságnak hívjuk.
Erős dualitás tétel A második rész bizonyítása: 0 y T (b Ax) = y T b y T Ax = b T y (A T y) T x b T y c T x = 0, illetve 0 x T (A T y c) = (y T A c T )x = y T (Ax) c T x y T b c T x = b T y c T x 0.
Erős dualitás tétel A első rész bizonyítás vázlata: Példa. Adott a következő primál feladat: x 1 x 2 x 3 + 3x 4 1 5x 1 + x 2 + 3x 3 + 8x 4 55 x 1 + 2x 2 + 3x 3 5x 4 3 x 1, x 2, x 3, x 4 0 max 4x 1 + x 2 + 5x 3 + 3x 4 = z A feladat megoldásának utolsó szótára x 4 = 5 x 1 x 3 x 5 x 7 x 6 = 1 + 5x 1 + 9x 3 + 21x 5 + 11x 7 x 2 = 14 2x 1 4x 3 5x 5 3x 7 z = 29 2x 1 2x 3 11x 5 6x 7
A duális feladat: y 1 + 5y 2 y 3 4 y 1 + y 2 + 2y 3 1 y 1 + 3y 2 + 3y 3 5 3y 1 + 8y 2 5y 3 3 y 1, y 2, y 3 0 min y 1 + 55y 2 + 3y 3 = w A duális egy optimális megoldása: y = (11, 0, 6) A primál feladat utolsó szótárában a mesterséges változók célfüggvény együtthatói: c 5 = 11, c 6 = 0, c 7 = 6 (Mit veszünk észre?)
Erős dualitás tétel A gyenge dualitási tétel miatt elég, ha találunk egy olyan (y1, y 1, y 3 ) duál lehetséges megoldást, amelyre 4 j=1 c jx j = 3 i=1 b iyi Az eredeti feladat utolsó szótárából kiolvasható a duális feladat megoldása. A példában x 4 = 5 x 1 x 3 x 5 x 7 x 6 = 1 + 5x 1 + 9x 3 + 21x 5 + 11x 7 x 2 = 14 2x 1 4x 3 5x 5 3x 7 z = 29 2x 1 2x 3 11x 5 +0x 6 6x 7 A duális változók az eredeti feladat mesterséges változóihoz rendelhetők: x 5 y 1, x 6 y 2, x 7 y 3 y 1 = 11, y 2 = 0, y 3 = 6 Az általános esetben az utolsó szótárhoz érve ezt kell számolással ellenőrizni az optimumok egyenlőségét.
Dualitási tételből adódó lehetőségek A dualitás fogalma rendkívül hasznos, mert rugalmas hozzáállást teszt lehetővé az LP feladatok megoldásánál. 1 A szimplex algoritmus iterációszáma közeĺıtőleg a sorok számával arányos sok feltétel, kevés változó esetén érdemes áttérni a duálisra 2 Ha az első esetben szükség van 2 fázisra, míg a duálisnál nincs, érdemes áttérni 3 Ha menet közben kell új feltételeket hozzávenni az LP-hez a duál feladattal dolgozva az új feltétel csak egy új, nembázis változóként jelenik meg hozzávesszük az aktuális szótárhoz, és folytatjuk a feladatmegoldást
Általános LP feladat Mi a helyzet akkor, ha az LP feladatunk tartalmaz egyenlőséget vagy nem korlátozott változót (ami felvehet negatív értéket is)? A jó hír, hogy ez kezelhető, ugyanis az egyenlőség feltétel egy nem korlátozott változóhoz tartozik egy nem korlátozott változó esetén egy egyenlőség feltétel kell legyen Miért? Például tegyük fel, hogy x 1 + x 2 = 80 [fa] 3x 1 + 2x 2 5x 1 + 2x 2 = ( 1) (x 1 + x 2 ) +3 (2x } {{ } 1 + x 2 ) } {{ } =80 100 Azaz y 1 nem korlátozott (itt 1). 80 + 3 100 = 220$
Általános LP feladat Összegezve: az feltétel egy nem-pozitív változóhoz tartozik nem-pozitív változóhoz egy feltétel tartozik Primál (Max) Duál (Min) i-edik feltétel y i 0 i-edik feltétel y i 0 i-edik feltétel = y i nem korlátozott x i 0 i-edik feltétel x i 0 i-edik feltétel x i nem korlátozott i-edik feltétel =
Általános LP feladat Példa. Primál Duál Max z = 3x 1 + 2x 2 + x 3 x 1 + x 2 + 0.5x 3 80 2x 1 + x 2 + x 3 = 100 x 1 + x 3 40 x 1 x 2 0 x 3 0 nem korlátozott Min w = 80y 1 + 100y 2 + 40y 3 y 1 + 2y 2 + y 3 = 3 y 1 + y 2 2 0.5y 1 + y 2 + y 3 1 y 1 y 1 0 y 2 nem korlátozott y 3 0
LP feladatok megoldhatósága Inkonzisztencia: egyenletek és egyenlőtlenségek egy m elemű n a ij x j b i j=1 n a ij x j = b i j=1 i I i E rendszere inkonzisztens, ha léteznek olyan y 1, y 2,..., y m valós számok, amelyekre teljesül, hogy m a ij y i = 0 i=1 m b i y i < 0 i=1 y i 0 j = 1, 2,..., n i I
LP feladatok megoldhatósága Tucker lehetetlenségi tétele egyenlet és egyenlőtlenség rendszerekre: egyenletek és egyenlőtlenségek egy rendszere akkor és csak akkor megoldhatatlan, ha inkonzisztens Nem bizonyítjuk A tétel bizonyítható a lineáris programozás alaptételének és az erős dualitás tételének általános LP feladatokra vonatkozó formájára támaszkodva
Komplementáris lazaság Tekintsük a következő feladatot: Max z = 6x 1 + x 2 x 3 x 4 x 1 + 2x 2 + x 3 + x 4 5 3x 1 + x 2 x 3 8 x 2 + x 3 + x 4 = 1 x 1 nem korlátos x 2, x 3, x 4 0 Azt szeretnénk ellenőrizni, hogy vajon a következők egyike optimális megoldás-e: x 1 = 2, x 2 = 1, x 3 = 0, x 4 = 0 x 1 = 3, x 2 = 0, x 3 = 1, x 4 = 0 Gondoljuk át, miért pont ezeket választottuk?
Komplementáris lazaság Ha a primál-duál feladatpár Max c T x Ax b x 0 Min b T y A T y c y 0 akkor azt mondjuk, hogy x = (x 1,... x n ) és y 1 = (y 1,..., y m ) komplementárisak, ha y T (b Ax) = 0 és x T (A T y c) = 0. Vagyis ha y i > 0, akkor x-et az i-edik egyenletbe helyettesítve =-et kapunk ( a feltétel éles ) ha x i > 0, akkor y-t a duális feladat i-edik egyenletébe helyettesítve az = teljesül
Komplementáris lazaság tétel Az erős dualitás tételnél több is tudunk mondani: Tétel. (Komplementáris lazaság) Tegyük fel, hogy x a primál feladat optimális megoldása. Ekkor Ha y a duál optimális megoldása, akkor x és y komplementáris Ha y lehetséges megoldása a duálisnak és komplementáris x-szel, akkor y optimális megoldása a duálnak Létezik olyan lehetséges y megoldása a duálnak, hogy x és y komplementáris.
Komplementáris lazaság: példa Visszatérve a példához, annak ellenőrzéséhez, hogy a javasolt megoldások valamelyik optimális-e, kelleni fog a duális feladat: Max z = 6x 1 + x 2 x 3 x 4 x 1 + 2x 2 + x 3 + x 4 5 3x 1 + x 2 x 3 8 x 2 + x 3 + x 4 = 1 x 1 nem korlátos x 2, x 3, x 4 0 Duál: Min w = 5y 1 + 8y 2 + y 3 y 1 + 3y 2 = 6 2y 1 + y 2 + y 3 1 y 1 y 2 + y 3 1 y 1 + y 3 1 y 1, y 2 0 y 3 nem korlátos
Komplementáris lazaság: példa Az első javaslat: x 1 = 2, x 2 = 1, x 3 = 0, x 4 = 0; tegyük fel, hogy ez optimális Ekkor létezik y = (y 1, y 2, y 3 ) lehetséges megoldása a duálisnak ami komplementáris x-szel Az első primál feltétel: x 1 + 2x 2 + x 3 + x 4 = 2 + 2 + 0 + 0 = 4 < 5 nem éles y 1 = 0 kell legyen a komplementaritás miatt A második primál feltétel: 3x 1 + x 2 x 3 = 6 + 1 0 = 7 < 8 nem éles y 2 = 0 kell legyen a komplementaritás miatt Ezek alapján az első duál feltétel: y 1 + 3y 2 = 0 + 0 = 0 6 azaz (y 1, y 2, y 3 ) nem lehetséges megoldása a duálnak, de feltettük, hogy az x nem optimális megoldása a primálnak
Komplementáris lazaság: példa Az második javaslat: x 1 = 3, x 2 = 0, x 3 = 1, x 4 = 0; tegyük fel, hogy ez optimális Ekkor létezik y = (y 1, y 2, y 3 ) lehetséges megoldása a duálisnak ami komplementáris x-szel Az első primál feltétel: x 1 + 2x 2 + x 3 + x 4 = 3 + 0 + 1 + 0 = 4 < 5 nem éles y 1 = 0 kell legyen a komplementaritás miatt A második primál feltétel: 3x 1 + x 2 x 3 = 9 + 0 1 = 8 éles A harmadik primál feltétel: x 2 + x 3 + x 4 = 0 + 1 + 0 = 1 éles Előjel feltételek is teljesülnek (x 1, x 2, x 3, x 4 0) x lehetséges megoldása a primálnak
Komplemetáris lazaság: példa Nézzünk meg a x értékeit a duálra vonatkozóan x 1 nem korlátos első duál feltétel y 1 + 3y 2 = 6 éles (szükségszerűen) x 3 > 0 a harmadik duál feltételnek élesnek kell legyen: y 1 y 2 + y 3 = 1 Összegezve az eddigieket: y 1 = 0 y 1 + 3y 2 + y 3 = 6 y 1 y 2 + y 3 = 1 Ennek az egyértelmű megoldása: y 1 = 0, x 2 = 2, y 3 = 1. A konstrukcióból adódóan ez komplementáris x-szel. Az utolsó lépés annak ellenőrzése, hogy y lehetséges megoldása-e a duálnak. Igen x optimális megoldása a primálnak.
Komplementáris lazaság: összegzés Összefoglalva: 1 Adott x (javasolt primál megoldás), ellenőrizzük, hogy lehetséges-e 2 Nézzük meg mely y i változóknak kell 0-nak lennie 3 Nézzük meg mely duál feltételeknek kell élesnek lennie egyenletrendszert kapunk 4 Oldjuk meg ezt a rendszert 5 Ellenőrizzük, hogy a kapott megoldás lehetséges megoldása-e a duálnak Ha minden lépés sikeres volt, akkor az adott x optimális, különben nem. Kérdés: mi van akkor, ha x lehetséges, de nem bázismegoldás?