Gazdaságmatematika 2.
Gyakorlat – 9. hét
Lineáris programozási feladatok:
Általános feladat megoldása szimplex módszerrel
Készítette: dr. Nagy Noémi
1. Példa
(dr. Házy Attila: Példatár a második zárthelyi dolgozathoz, Lineáris programozás, 12. feladat)
A megoldás első lépéseként táblázatban
foglaljuk össze az adatokat: Így felírható a matematikai modell:
1. Példa
Így felírható a matematikai modell:
A következő lépésben a feltételek mindegyikében bevezetünk egy u vagy u* nemnegatív értéket, melyek a bázisban szerepelnek majd.
Ezt úgy tudjuk megtenni, hogy
a ≤ feltételnél a baloldalhoz u-t adunk, az = feltételnél a baloldalhoz u*-ot adunk, a ≥ feltételnél a baloldalhoz –v+u*-ot adunk.
A következő feladatunk az induló tábla felírása.
Az induló tábla bázisában az u vagy u* értékei szerepelnek.
Az összes többi változó – beleértve a v-ket is – a bázison kívül szerepel.
Kitöltjük a szimplex tábla sorait az együtthatókkal, majd elkészítjük a z (vagy -z) sorát:
tekintve, hogy ez egy minimumfeladat, a sor elején z szerepel, ennek sorában pedig a célfüggvény-együtthatók (-1)-szeresei. b oszlopába 0 írandó.
Végül – mivel u* is szerepel a felírásban, egy újabb sor (z*) kerül bevezetésre, mely az u* sorok összegeként áll elő.
1. Példa
Első lépésként a z* sor eltüntetése a feladatunk, ami abban az esetben történik meg, amikor a z* sor és b oszlop metszetében álló érték 0-ra nem csökken.
Ehhez először a z* sorában megkeressük a nemnegatív elemeket, hogy azok oszlopából válasszunk pivotelemet.
Mivel a második oszlop csak egyeseket tartalmaz, célszerű abból az oszlopból pivotelemet választani (a korábbi diasorban látottak szerint azt az elemet választjuk, ahol a hányados a legkisebb)
Ezt követően kiszámoljuk a következő szimplex táblát.
Mivel z* és b metszetében még nem 0 szerepel, továbbra is a z* sorából választjuk ki a pivotelemet adó oszlopot.
A pivotelem továbbra is a legkisebb hányadost adó érték.
Kiszámoljuk a következő szimplex táblát.
Azt látjuk, hogy z* és b metszetében már 0 szerepel, ami azt jelenti, hogy az I. fázis véget ért.
Mielőtt azonban a II. fázissal folytatnánk az algoritmust, elhagyjuk a z* sorát és az u* oszlopait a b oszlop mögé írjuk.
Megjegyezzük, hogy amennyiben csak a feladat megoldása érdekel minket, ezek az oszlopok el is hagyhatók, azonban érzékenységvizsgálatnál vagy a duális feladat megoldásához szükségesek.
1. Példa
Tehát a II. fázis kezdetekor elhagyjuk a z* sorát és az u* oszlopait a b oszlop mögé írjuk.
Innentől kezdve a pivotelem csak a b oszlop előtti oszlopok valamelyikében lehet, azaz
pivotelemet csak ezekből az oszlopokból választhatunk, függetlenül attól, hogy végén 32 van.
A kapott pivottábla az utolsó, mivel a jelölt területen, azaz z sorában a b előtti oszlopokban nem szerepel pozitív elem.
Leolvashatjuk a megoldást b oszlopából.
Megjegyezzük, hogy amennyiben korábban az 5-öt választottuk volna pivotelemként, eggyel kevesebb lépés elegendő lett volna, hogy eljussunk az optimális értékhez.
2. Példa
(dr. Házy Attila: Példatár a második zárthelyi dolgozathoz, Lineáris programozás, 13. feladat)
A megoldás első lépéséhez szedjük össze az adatokat:
az xi jelöli az i-edik növény termesztéséhez használt földterület méretét.
Továbbá a második mondatból tudjuk, hogy , hiszen
a teljes felhasznált terület, melynek legfeljebb felén termesztik a harmadik növényt.
Ez átrendezve:
A harmadik mondat alapján a következő egyenlőtlenség írható fel:
Ezt átrendezve:
Szedjük össze tehát az információinkat és írjuk fel a matematikai modellt.
2. Példa
A matematikai modell tehát:
2. Példa
A matematikai modell tehát:
Felhívjuk a figyelmet, hogy a harmadik feltétel semmiképpen nem lehet alakú, mivel a feltételek jobb oldalán negatív szám nem szerepelhet!
Alakítsuk át a feltételeket, hogy minden feltétel = legyen (+u, +u*, -v+u* bevezetésével), majd oldjuk meg a feladatot, azaz elsőként írjuk fel az induló táblát:
Amint látható, a bázisban u és u* szerepel, valamint a célfüggvény sora –z és az eredeti együtthatók, mivel most maximumfeladatot oldunk meg.
Továbbá z* sorunk is van, mely éppen az egyetlen u*sorral egyezik meg (hiszen az u* sorok összegeként áll elő), így az elsődleges feladat z* és b metszetében álló érték nullává tétele pivotálással.
Szimpatikusabb
2. Példa
A matematikai modell tehát:
Vége az I. fázisnak.
Elhagyjuk z* sorát és az u* oszlopot a
b oszlop mögé
helyezzük a következő lépésben.
Mivel még van pozitív érték, folytatjuk a módszert.
A lehetséges pivotelemek között 1 is szerepel, de az előző példában láttuk, hogy a v oszlopából nem feltétlenül érdemes pivotelemet választani, hiszen az előző feladatban emiatt eggyel több lépésben jutottunk el a megoldáshoz…
Mivel itt már nem szerepel pozitív érték, ismét eljutottunk az optimális táblához és leolvashatjuk az optimális megoldást: