Lineáris programozás
A feladat megfogalmazása a) A és B textília jellegű termékeket azonos alapanyagból gyártjuk. Ebből A-hoz 2 m, B-hez 5 m szükséges minden egyes méter késztermék előállításához, és amelyből hetente legfeljebb 3.000 méter áll rendelkezésünkre. b) Egységnyi termelési költségek A-ra 20 Ft/m és B-re 30Ft/m, amelyek heti összegzett költsége nem haladhatja meg a 18.000 Ft-ot. c) A gyártáshoz felhasználunk bizonyos segédanyagot, amelyből A-hoz 1 m-t, B-hez 1/2 m-t használunk fel. A felhasznált segédanyagok heti mennyisége nem haladhatja meg a 700 m-t. d) Előzetes felmérés szerint A-ból hetente legalább 100 m-re van szükség. e) A rendelkezésre álló gépparkkal a B-ből hetente legfeljebb 400 m gyártható. f) A termelés nyeresége termékegységre vetítve A terméken 2 Ft, B-n 6 Ft. minden lineáris!
A feladat megfogalmazása a) A és B textília jellegű termékeket azonos alapanyagból gyártjuk. Ebből A-hoz 2 m, B-hez 5 m szükséges minden egyes méter késztermék előállításához, és amelyből hetente legfeljebb 3.000 méter áll rendelkezésünkre. b) Egységnyi termelési költségek A-ra 20 Ft/m és B-re 30Ft/m, amelyek heti összegzett költsége nem haladhatja meg a 18.000 Ft-ot. c) A gyártáshoz felhasználunk bizonyos segédanyagot, amelyből A-hoz 1 m-t, B-hez 1/2 m-t használunk fel. A felhasznált segédanyagok heti mennyisége nem haladhatja meg a 700 m-t. d) Előzetes felmérés szerint A-ból hetente legalább 100 m-re van szükség. e) A rendelkezésre álló gépparkkal a B-ből hetente legfeljebb 400 m gyártható. f) A termelés nyeresége termékegységre vetítve A terméken 2 Ft, B-n 6 Ft. Keressük azt a feltételeket kielégítő megoldást (program), ahol a nyereség (a célfüggvény értéke) a legnagyobb. Feladat: a célfüggvény maximalizálása a megadott feltételek mellett.
Matematikai jelrendszerrel x1 x2 (d) (e) (c) (b) (a)
Grafikus megoldás x1 x2 (d) (e) (c) (b) (a)
Grafikus megoldás x1 x2 z x1 x2
Grafikus megoldás Zopt x1 x2 z x1 x2
Általános eset A feladat: Minden sor egyenlőtlenségét (és a feltételeket is) kielégítő vektorok egy egy zárt féltéren helyezkednek el! Az „m” darab ilyen zárt féltér által köz-bezárt térrészt konvex poliéder-nek nevezünk, ami egyben a megengedett programok halmaza. Mátrix-alakban: Def.: Az x0 megoldás optimális, ha a célfüggvény ezen a helyen veszi fel a maximumát!
Segédváltozók bevezetése A segédváltozókkal bővített feladat: Az xn+i (i=1,2,….,m) változó feladata, hogy az egyenlőtlenségeket kiegészítse egyenlőségekké, tehát 0 < xn+i (i=1,2,….,m). Ekkor az együttható-mátrixunk kibővül jobbról egy egységmátrixszal. A célfüggvény együttható-vektorát csupa nulla komponenssel kiegészítve egy n+m dimenziós vektort kapunk, de a célfüggvény értéke nem változik: a x + a x + .......... .......... . + a x + x = b 11 1 12 2 1 n n n + 1 1 a x + a x + .......... .......... + a x + x = b 21 1 22 2 2 n n n + 2 2 . . . a x + a x + .......... ......... + a x + x = b m 1 1 m 2 2 mn n n + m m x ³ ; x ³ ; x ³ ; .......... .......... .; x ³ 1 2 3 n + m c x + c x + ..... + c x + x + .... + x = z 1 1 2 2 n n n + 1 n + m z ® max
A lineáris programozás alaptétele Tétel: Ha egy LP probléma rendelkezik (korlátos) optimális megoldással, akkor létezik a megoldások halmazának olyan extrém pontja, amely optimális. Emiatt az optimális megoldás megtalálható a konvex poliéder sarokpontjainak vizsgálatával. Egy korlátos számú feltétel által megadott konvex poliéder korlátos számú sarokponttal rendelkezik. Ez garantálja, hogy az optimum korlátos számú lépésben megtalálható. Nézzük végig az összes sarokpontot? (Egy gyakorlati probléma esetén ez néhány millió is lehet.) Nem, a célfüggvény linearitása miatt van hatékonyabb módszer is.
A megoldás módja SZIMPLEX algoritmus: induljunk ki az egyik csúcspontból valamelyik határoló élen menjünk át egy olyan szomszédos csúcsra, ahol a célfüggvény értéke magasabb ha már nincsen „jobb” szomszédos csúcs, akkor elértük az optimális megoldást Minden extrém pontot egyértelműen meghatároz egy bázismegoldás. Ezt m változó kiválasztásával és a többi 0-vá tételével érhetjük el. (Minden sarok m darab feltétel teljes kimerítésével írható le.) Ennek a rendszernek a megoldása a bázis. Egy szomszédos csúcsra való áttérés azt jelenti, hogy egy új bázisra térünk át, ami csak egy elemében tér el a korábbitól.
Mintafeladat (standard forma) x1 + 2·x2 + x3 + x5 <= 100 u1 x2 + x3 + x4 + x5 <= 80 u2 x1 + x3 + x4 <= 50 u3 x1 , x2 , x3 , x4 , x5 >= 0 Z=(2·x1 + x2 + 3·x3 + x4 + 2·x5) » MAX
Átalakítás standard formára ha z -t minimalizálni kell: -z -t maximalizáljuk ha x ≥ a van a feltételek között: -x ≤ -a ha egyenlőség van a feltételek között: x = a → ( x ≤ a és x ≥ a ) → ( x ≤ a és -x ≤ -a )
Szimplex tábla termékek erőforrások x1 x2 x3 x4 x5 kapacitás u1 1 2 termékek erőforrások x1 x2 x3 x4 x5 kapacitás u1 1 2 100 0.01 u2 80 0.0125 u3 50 hozam 3 max pozitív Algoritmus: Induló szimplex tábla Generáló elem oszlopának kiválasztás (pozitív) belépő változó G. E. sorának kiválasztása (elem/kapacitás=max) távozó változó Elemcsere Vissza a 2. pontba
Első elemcsere x1 x2 x3 x4 u2 u1 1 -1 20 x5 80 0.0125 u3 50 0.02 2 -2 GE: új = 1 / régi GE sora: új = régi / GE GE oszlopa: új = - régi / GE A többi: új = régi – GEsor * GEoszlop / GE A sor- és az oszlopindex felcserélődik x1 x2 x3 x4 u2 u1 1 -1 20 x5 80 0.0125 u3 50 0.02 2 -2 -160 max pozitív
Második elemcsere x1 x2 u3 x4 u2 u1 1 -1 20 0.05 x5 30 -0.0333 x3 50 x1 x2 u3 x4 u2 u1 1 -1 20 0.05 x5 30 -0.0333 x3 50 0.02 -2 -210 max pozitív Ez egy olyan csúcspont a konvex poliéderen, ahol x3 = 50 x5 = 30 A többi x = 0, a haszon 50 * 3 + 30 * 2 = 210; NEM OPTIMÁLIS!
Harmadik elemcsere után u1 x2 u3 x4 u2 x1 1 -1 20 x5 2 50 x3 30 -2 -230 Az alsó sorban nincs pozitív : optimális megoldás x1 = 20 x2 = 0 x3 = 30 x4 = 0 x5 = 50 haszon = 230 = MAX!
A duál módszer ha a célfüggvényt minimalizálni kell és az együtthatói mind pozitívak: xi xi ui ui A b A b ≤ ≤ = min = max z -z a feladat duálisa -1 -5 -10 0 -5 -2 -1 zT itt a szimplex módszer nem jó ui xi - AT xi ≤ ui függőlegesen kell kiolvasni az eredmény -1-szeresét! = max -bT megoldás szimplex módszerrel - zmin