140 likes | 384 Views
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
E N D
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.
x2 (e) x1 (a) (c) (b) (d) Lineáris programozás (elemi példa /2.) A feltételek matematikai megfogalmazása:
Zopt z x2 x2 x1 x1 Lineáris programozás (elemi példa /3.) A feladat grafikus megközelítése:
a3 2.) A lineáris kombináció konvex, ha: a c1+ c2+ ….+cn = 1. Például: a1 a2 5.) Alapfeladat: 6.) Megengedett megoldások halmaza: 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. 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.
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 (alapfogalmak/2.) 7.) Bázismegoldás: Tekintsünk egy (m,n)-es egyenletrendszert (n>m feltehető).
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. Def.: Az x0 megoldás optimális, ha a célfüggvény ezen a helyen veszi fel a maximumát! Mátrix-alakban: Lineáris programozás (a feladat általános vizsgálata/1.)
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:
- 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. 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. 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 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?
A szimplex algoritmus: 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: 1. Tekintsük az egyenletrendszer egy bázismegoldását, x0-t és B0-t, z0-t Lineáris programozás (a szimplex-módszer/1.) A szimplex algoritmus lényege: 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.
T c >> c c … …. c … ….. c 1 2 m N c B x a a … …. a … ….. a B B 1 2 m N c a x d d … ….. d … …. d 1 1 1 11 12 1m 1N c a x d d … ….. d … …. d 2 2 2 21 22 2m 2N : : : : : … ….. : … ….. : c a x d d … ….. d … ….. d j j j j1 j2 jm JN : : : : : … ….. : … …. : c a x d d … …. d … …. d m m m m1 m2 mm mN -z c -z c -z … …. c -z … ….. c -z 1 1 1 1 m m N N Bázisvektorok zp=d1pc1+ d2pc2+ d3pc3+………+ dmpcm (p=1,2,…….,N) Bázisvektorokhoz tartozó célfüggvény- együtthatók. Lineáris programozás (a szimplex-módszer/2.) A „k”-ik szimplex-tábla:
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 v régi u pivot 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; 5.) Az utolsó sor felújítása (cp-zp) értékekkel, ahol: zp=d1pc1+ d2pc2+ d3pc3+………+ dmpcm (p=1,2,…….,N)