Lineáris programozás Elemi példa Alapfogalmak Általános vizsg. Szimplex-módszer
Lineáris programozás (elemi példa /1.) 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.
Lineáris programozás (elemi példa /2.) A feltételek matematikai megfogalmazása: x1 x2 (d) (e) (c) (b) (a)
Lineáris programozás (elemi példa /3.) A feladat grafikus megközelítése: Zopt x1 x2 z x1 x2
Lineáris programozás (alapfogalmak/1.) 1.) Lineáris kombináció: Az a1, a2, ……., an vektorok, és a c1, c2, …., cn skalárok lineáris kombinációja az x=c1a1+c2a2+………+cnan vektor. 2.) A lineáris kombináció konvex, ha: a c1+ c2+ ….+cn = 1. Például: a3 a2 a1 3.) Nyílt, korlátos, konvex tartomány: ………….. 4.) Szimplex: Olyan korlátos konvex poliéder, amelynek egyel több csúcsa van mint ahány dimenziós. 5.) Alapfeladat: 6.) Megengedett megoldások halmaza:
Lineáris programozás (alapfogalmak/2.) 7.) Bázismegoldás: Tekintsünk egy (m,n)-es egyenletrendszert (n>m feltehető). Az ezt kielégítő x vektort nevezzük megoldásnak. Feltehető, hogy az A rangja „m”, tehát minden x megoldáshoz létezik az ai-k olyan részrendszere (altér) amelyektől a többi vektor lineárisan függ, tehát az A mátrix oszlopvektoraiból alkotott rendszer bázisát alkotják, vagyis: Ekkor nevezzük bázismegoldásnak.
Lineáris programozás (a feladat általános vizsgálata/1.) 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!
Lineáris programozás (a feladat általános vizsgálata/2.) 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:
Lineáris programozás (a feladat általános vizsgálata/3.) Kérdés, hogy a kibővített feladat megengedett bázismegoldásai hol helyezkednek el a konvex poliéderen? TÉTEL: Az egyenletrendszer bázismegoldásai a konvex poliéder csúcsain helyezkednek el, és megfordítva, a konvex poliéder minden csúcsa előállítható az lineáris egyenletrendszer megengedett bázismegoldásaiként. - A konvex poliéder definíciójából és a kibővített feladat bázismegoldásaira vonatkozó tételből következik, hogy véges sok csúcs van, tehát véges sok megoldás. Mindebből következik, hogy elegendő megvizsgálni a célfüggvény értékeit a csúcsokon, és ezek közül kiválasztani a maximumot. DEF.: Az konvex poliéder x1 és x2 csúcsai szomszédosak, ha tekintjük azokat a B1 és B2 bázisokat, amelyekre x1-et a B1, x2-t a B2 határozza meg, és ekkor a B1 és B2 csak egyetlen oszlopvektorban különbözik egymástól.
Lineáris programozás (a szimplex-módszer/1.) A szimplex algoritmus lényege: 1. Tekintsük az egyenletrendszer egy bázismegoldását, x0-t és B0-t, z0-t 2. Térjünk át elemi bázistranszformációval a B0-ról B1-re úgy, hogy x1 szomszédos csúcsa x0-nak, és z0 < z1 teljesül. 3. Az eljárást olyan k indexig ismételjük, amíg már nem lehet zk helyett „jobbat” találni, ekkor xk-t bizonyos feltételek esetén elfogadjuk. Tekintsük a kibővített feladatot, és feltesszük, hogy (ha vala-mely bi komponensre ez nem igaz, -1-gyel való szorzással elérhető). Az egyszerűség kedvéért jelölje még N:=n+m. Az algoritmus minden Bk bázisához egyértelműen hozzátartozik egy szimplex-tábla: A szimplex algoritmus:
Lineáris programozás (a szimplex-módszer/2.) A „k”-ik szimplex-tábla: c T >> 1 2 … …. m ….. N B x a d 11 12 1m 1N 21 22 2m 2N : j j1 j2 jm JN m1 m2 mm mN -z Bázisvektorok Bázisvektorokhoz tartozó célfüggvény- együtthatók. zp=d1pc1+ d2pc2+ d3pc3+………+ dmpcm (p=1,2,…….,N)
Lineáris programozás (a szimplex-módszer/2.) Az algoritmus lépései: 1.) Az induló szimplex-tábla kitöltése; 2.) max (cp-zp) kiválasztása. Ha a kiválasztott maximum nem pozitív, az algoritmus befejeződött az xB meg- oldás elfogadásával; 3.) Jelölje „k” a 2.)-ban talált maximum indexét, ekkor megvizsgáljuk a szimplex-tábla k-ik oszlopában a di,k előjeleit. Ha nincs közöttük pozitív, akkor az algoritmus azzal fejeződik be, hogy a feladatnak nincs véges megoldása a konvex poliéderen. Ellenkező esetben térjünk át új bázisra úgy, hogy képezzük a: számot, és az aj vektor elhagyja a bázist, és djk lesz a „pivot” elem. 4.) Az új szimplex-tábla meghatározása: a) A B1 bázisban aj szimbólum helyére ak-t, cj helyére ck-t írunk. Az új táblában az ak bázisvektor sorában lévő értékeket úgy kapjuk, hogy a régi tábla e sorában lévő elemeket rendre elosztjuk a pivot elemmel. b) Az új tábla további elemeit úgy kapjuk, hogy keressük meg a kérdéses új értékeknek megfelelő értékeket a régi táblában, majd vegyük a régi tábla azon két elemét, amelyek ezzel az elemmel és a pivot elemmel egy sorban illetve egy oszlopban vannak. Az új érték ennek megfelelően: új=régi-(u/pivot)*v , ahol: új u pivot régi v 5.) Az utolsó sor felújítása (cp-zp) értékekkel, ahol: zp=d1pc1+ d2pc2+ d3pc3+………+ dmpcm (p=1,2,…….,N)