200 likes | 274 Views
Operációkutatás Kalmár János, 2011. Hiperbolikus és kvadratikus programozás. Hiperbolikus programozás. Alapfeladat: A x b , x 0 d T x + 0 (1) c T x + max d T x + Legyen x = y /t ( y 0, t > 0) akkor.
E N D
OperációkutatásKalmár János, 2011. Hiperbolikus és kvadratikus programozás
Hiperbolikus programozás Alapfeladat: Ax b, x 0 dTx + 0 (1) cTx + max dTx + Legyen x = y/t(y 0, t > 0) akkor
Hiperbolikus programozás Ay bt cTy + t max dTy + t Válasszuk meg t paramétert úgy, hogy dTy + t = 1 Teljesüljön, akkor (1) ekvivalens
Hiperbolikus programozás Ay - bt 0 dTy+t = 1 (2) cTy+t max lineáris programozási feladattal, melynek y megoldásából (1) megoldása x = y / t alapján számítható.
Hiperbolikus programozás Tételek: • (2) feladat mindig megoldható, és t>0 teljesül • Ha (y, t) optimális megoldása (2)-nek, akkor x = y/t optimális megoldása (1)-nek • Ha x optimális megoldása (1)-nek akkor t= 1/(dTx + ) és y=t x optimális megoldása (2)-nek.
Hiperbolikus programozás Számpélda: x1 + x2 4 x1 - x2 2 (2x1 + x2 - 2)/(x1 + x2 + 1) max helyett megoldandó y1 + y2 – 4t 0 y1 - y2 -2t 0 y1 + y2 + t = 1 2y1 + y2 – 2t max
Hiperbolikus programozás A számpéldát LP-ként megoldva kapjuk: y1 = 0,6 y2 = 0,2 t = 0,2 ezért a megoldások x-re x1 = 3 x2 = 1 a célfgv értéke pedig 1
Kvadratikus programozás Alapfeladat: Ax b, x 0 (1) pTx+xTCxmin Ahol C szimmetrikus és pozitív szemidefinit (x-re xTCx 0, a szimmetria pedig mindig elérhető xTCx =xTCTx és C’ = (C + CT)/2 miatt). (1) helyett oldjuk meg a (2) feladatot:
Kvadratikus programozás Ax + y =b, x, y, v, u 0 - Cx + v - ATu = p (2) xTv + yTu = 0 bTu max (2) már közel lineáris programozási feladat, ahol az xTv + yTu = 0 nemlineárisfeltételt úgy teljesítjük, hogy xi és vi, illetve yi és ui ismeretlenek nem lehetnek egyidejűleg a bázisban, mert a különben pozitív tagú összeg csak akkor lesz 0, ha minden tagja 0, ezért a tagok egyik tényezője kötelezően 0 lesz, tehát ismeretlenként nem tartozhat a bázisba. Tétel: (2)-nek mindig van megoldása, ha az Ax b összefüggést nem csak az üres halmaz elégíti ki, és x egyben (1)-nek is megoldása.
Kvadratikus programozás (1) és (2) feladatok ekvivalenciájának belátása: Ax + y =b, x, y, v, u 0 rész triviális, - Cx + v - ATu = p feltétel atranszponálás után xTC + vT- uT A = pT /x xTCx + vTx - uTAx = pTx ezért (1) célfüggvénye pTx + xTCx = vTx - uTAx de uTAx = uT(b – y) = uTb - uTy ezért (1) célfüggvénye pTx + xTCx = vTx - uTb + uTy aholaz xTv + yTu = 0 feltétel miatt a célfgv. - bTu min-re egyszerűsödik, ami bTu max alakban is felírható. Tehát újabb változók és lineáris feltételek segítségével sikerült a célfüggvényt is lineárissá tenni, csak az xTv + yTu = 0 feltétel okoz – az előző dián ismertetett - változást a standard megoldáshoz képest .
Kvadratikus programozás (2) megoldása: • fázis: határozzuk meg Ax b, x 0 egy lehetséges x’ megoldását szimplex módszerrel, és definiáljuk F előjel-mátrixot a következőképpen: F = (f1,f2,…fn) diagonális mátrix, ahol fj = sign(ejT(Cx’+p))ej ahol sign az előjelfgv Tekintsük a következő lineáris programozási feladatot:
Kvadratikus programozás Ax + y =b, x, y, v, u, z 0 • Cx + v - ATu + Fz = p (3) xTv + yTu = 0 t = zi min (i=1..n) aminek egy lehetséges bázismegoldása: x’ y’ = b - Ax’ v’ = 0 (4) u’ = 0 z’ = F(Cx’ + p) (3) feltételei ekvivalensek (2)-vel, ha a megoldásban z = 0, ezt fejezi ki (3) célfüggvénye.
Kvadratikus programozás 2. fázis: (4) Megoldásból kiindulva oldjuk meg (3)-at szimplex módszerrel úgy, hogy minden bázisvektor csere esetén vegyük figyelembe, hogy az aktuális bázisban nem lehet egyidejűleg xj és vj, illetve yj és uj. (3) Megoldása akkor ér véget, ha a t célfüggvény értéke 0 – ezután z oszlopainak elhagyásával folytassuk (2) megoldását a bTu maxcélfüggvény szerint. Az eredményben szereplő x a tétel szerint egyidejűleg az (1) feladat optimális megoldása is.
Kvadratikus programozás Számpélda: x1+x2 3 x1, x2 0 -x1+4x2 4 x12-4x1x2+5x22+6x1-20x2 min A = 1 1 b = 3 C = 1 -2 p = 6 -1 4 4 -2 5 -20 (1) induló bázismegoldása lehet x1=0, x2=0, ezért (4) kezdő-megoldás a következő lesz: x1=0, x2=0, y1=3, y2=4, v1=0, v2=0, u1=0, u2=0, z1=6, z2=20
Kvadratikus programozás Szimplextábla/1: x1 x2 v1 v2 u1 u2 b y1 1 1 0 0 0 0 3 y2 -1 4 0 0 0 0 4 z1 -1 2 1 0 -1 1 6 z2 -2 5 0 -1 1 4 20 bTu 0 0 0 0 3 4 0 ----------------------------------------------------------------------------------------------------------------------------------------------------- zi 3 -7 -1 1 0 -5 -26 y2 helyére az x2 kerül a bázisba
Kvadratikus programozás Szimplextábla/2: x1 y2 v1 v2 u1 u2 b y1 5/4 -1/4 0 0 0 0 2 x2 -1/4 1/4 0 0 0 0 1 z1 -1/2 -1/2 1 0 -1 1 4 z2 -3/4 -5/4 0 -1 1 4 15 bTu 0 0 0 0 3 4 0 ----------------------------------------------------------------------------------------------------------------------------------------------------- zi 19/4 7/4 -1 1 0 -5 -19 z2 helyére az u2 kerül a bázisba
Kvadratikus programozás Szimplextábla/3: x1 y2 v1 v2 u1 z2 b y1 5/4 -1/4 0 0 0 0 2 x2 -1/4 1/4 0 0 0 0 1 z1 -5/16 -3/16 1 1/4 -5/4 -1/4 1/4 u2 -3/16 -5/16 0 -1/4 1/4 1/4 15/4 bTu 3/4 5/4 0 1 2 -1 -15 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ zi 61/16 3/16 -1 9/4 5/4 5/4 -1/4 z1 helyére az v1 kerül a bázisba
Kvadratikus programozás Szimplextábla/4: x1 y2 z1 v2 u1 z2 b y1 5/4 -1/4 0 0 0 0 2 x2 -1/4 1/4 0 0 0 0 1 v1 -5/16 -3/16 1 1/4 -5/4 -1/4 1/4 u2 -3/16 -5/16 0 -1/4 1/4 1/4 15/4 bTu 3/4 5/4 0 1 2 -1 -15 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ zi 14/4 0 1 5 0 2 0
Kvadratikus programozás Elértük, hogy z kikerüljön a bázisból, ezért a redukált szimplex táblával folytathatjuk: x1 y2 v2 u1 b y1 5/4 -1/4 0 0 2 x2 -1/4 1/4 0 0 1 v1 -5/16 -3/16 1/4 -5/4 1/4 u2 -3/16 -5/16 -1/4 1/4 15/4 ------------------------------------------------------------------------------------------------------------------------------------------------------------------- bTu 3/4 5/4 1 2 -15
Kvadratikus programozás A redukált szimplex táblában csak a pozitív elemeket választhatjuk generáló-elemnek, melyek viszont a xTv + yTu = 0 feltételnek ellentmondó bázisvektor cseréhez vezetnének (pl. x1y1, x2y2, u1u2, v1v2), ezért továbblépni nem tudunk, az aktuális táblázat már az optimális eredményt (x1=0, x2=1, célfüggvény = -15) mutatja.