Alkalmazott optimalizálás és játékelmélet Lineáris programozás Gyakorlófeladatok Rétvári Gábor retvari@tmit.bme.hu
Feladatok Szöveges feladatok. Egy acélgyárban négyfajta zártszelvényt gyártanak: kis, közepes, nagy és extra nagy méretűt. A gyárban háromfajta gép áll rendelkezésre, A, B, és C. Az alábbi táblázat azt adja meg, hogy az egyes gépek a különböző típusú zártszelvényekből óránként hány méternyit képesek előállítani Gép Zártszelvény A B C Kis 6 8 Közepes 4 7 Nagy 6 Extra nagy A gépek hetente órát működhetnek, és az egyes gépek működtetése óránként,, illetve 8 egységnyi pénzbe kerül. A terv szerint az egyes A, B, C és D típusú zártszelvényekből hetente, 8, 6, illetőleg 6 méternyit kell legyártani. a) Fogalmazza meg a fenti gépütemezési problémát lineáris program formájában! b) Keressen kezdeti bázist! c) A primál vagy a duál szimplex algoritmussal oldaná-e meg a feladatot? (Nem kell megoldani!) Lineáris programok grafikus megoldása. Tekintsük az alábbi lineáris programot (Figyelem: az változókra nincs előjelmegkötés!): a) Oldja meg a lineáris programot grafikusan! max x + x s.t. x + x 4 x x x x b) Oldja meg a lineáris programot (szintén grafikusan), ha a célfüggvényt a max x +x szerint megváltoztatjuk! c) Létezik és egyedi-e a megoldás, ha a célfüggvény max x x? Indokolja válaszát grafikusan!. Tekintsük az alábbi lineáris programot: min x + x s.t. x + x 4 x x x x
a) Ábrázolja a megengedett tartományt grafikusan! b) Adja meg a megengedett tartomány extrém pontjait! c) Adja meg a lineáris program optimális célfüggvényértékét és egy optimális megoldását! d) Egyedi a megoldás? Indokolja válaszát! e) Hogyan változik az optimális célfüggyvényérték és a hozzá tartozó megoldás, ha a célfüggvényt minx +x kifejezésre változtatjuk? Válaszát indokolja a grafikonon is! A szimplex algoritmus használata 4. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x + 8x x + 8x 4 s.t. x + x + x + x 4 7 x x x x 4 x x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. d) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x 4 célfüggvény-együtthatóját -ra csökkentjük, x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját 9-re növeljük, ez utóbbi módosítás után x célfüggvény-együtthatóját 9-re növeljük?. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x x + x s.t. x + x + x x + x x 6 x + x 9 x, x, x a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. d) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját -re növeljük, x célfüggvény-együtthatóját 4-re csökkentjük, x célfüggvény-együtthatóját -re növeljük?
6. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: min x x + x x 4 s.t. x + x + 4x x 4 6 x x + x x 4 x + x + x 4 4 x, x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. 7. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x + x x + x 4 s.t. x 4x x + x 4 8 x + x + x x 4 x x 4x + x 4 4 x, x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvényértéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. 8. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: min x x s.t. x x x + x 6 x + x 8 4x x 6 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvényértéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. 9. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével. Ügyeljen az egyenlőség és egyenlőtlenség alakú feltételekre. max x + 4x + x + x 4 s.t. x + x x + x 4 x + x + x + x 4 = 8 x + x + x 4 x, x, x, x 4 a) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. b) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. Ha létezik korlátos optimális megoldás, egyedi az optimum? Ha nem egyedi, adjon altervatív optimális megoldásokat.
c) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját -re növeljük, x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját 7-re növeljük? A dualitás. Tekintsük a 4. feladatban adott lineáris programot: max x + 8x x + 8x 4 s.t. x + x + x + x 4 7 x x x x 4 x x, x, x 4 a) Írja fel a lineáris program duálisát és hozza standard alakra! A feladat megoldásához használja az alábbi táblázatot: Maximalizálási probléma Minimalizálási probléma Feltétel Változó = tetszőleges tetszőleges = b) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. c) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Egyedi az optimum? Ha nem, adjon altervatív optimális megoldásokat. d) Vesse össze a kapott optimális megoldást a 4. feladatban kapott megoldással! Mit tudunk a primál és a duál optimális megoldásainak kapcsolatáról?. Tekintsük a 6. feladatban adott lineáris programot: min x x + x x 4 s.t. x + x + 4x x 4 6 x x + x x 4 x + x + x 4 4 x, x, x, x 4 a) Írja fel a lineáris program duálisát és hozza standard alakra! A feladat megoldásához használja az alábbi táblázatot: Maximalizálási probléma Minimalizálási probléma Feltétel Változó = tetszőleges tetszőleges = b) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. 4 Változó Feltétel Változó Feltétel
c) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Egyedi az optimum? Ha nem, adjon altervatív optimális megoldásokat. d) Vesse össze a kapott optimális megoldást a 6. feladatban kapott megoldással! Mit tudunk a primál és a duál optimális megoldásainak kapcsolatáról? Szöveges feladatok megoldása a szimplex algoritmussal. Egy papírgyárban lecserélik a munkagépeket. Kétfajta kartonvágó gépet szerezhetnek be: az A típusú gép dobozt tud kivágni egy perc alatt, egy személy kell a működtetéséhez és ezer egységnyi pénzbe kerül, a B típusú gép ezzel szemben dobozt tud készíteni, de a felügyeletéhez két ember kell és ezer egységnyi pénzbe kerül. A termelési terv percenként legalább doboz legyártása legfeljebb munkás alkalmazása mellett. Hány A és B típusú gépet kell beszereznie a papírgyárnak a termelési terv végrehajtásához úgy, hogy a gépek beszerzési költségeit minimalizáljuk? a) Fogalmazza meg a fenti beszerzési problémát lineáris program formájában! b) Keressen kezdeti bázist! c) Oldja meg a lineáris programot a primál vagy a duál szimplex algoritmussal! d) Egész értékű eredményt kapott? Ha igen, garantált az egész értékű megoldás?. Egy szerszámgépgyárban háromfajta gépet gyártanak: az A, B és C típusú gépeket. A legyártott gépeket a termelési periódus végéig raktárban tárolják. Az egyes gépek legyártásához szükséges munkaidőt, a gépenként termelt profitot, illetve a géptípusonként szükséges raktárhely nagyságát az alábbi táblázat foglalja össze. Gép Géptípus A B C Szükséges munkaidő [egység/gép] Raktározási igény [m /gép] Profit [egység/gép] Az C típusú gép elkészítéséhez egy speciális alkatrészre van szükség, amelyből a termelési periódus alatt csak darab áll rendelkezésre. A termelési periódusban egységnyi munkaidő fordítható a gépek legyártására, a teljes raktárméret m. Hány darabot kell legyártani az egyes A, B illetve C típusú gépből a profit maximalizálása érdekében? a) Fogalmazza meg a fenti termelésoptimalizálási problémát lineáris program formájában! b) Keressen kezdeti bázist! c) Oldja meg a lineáris programot a primál vagy a duál szimplex algoritmussal! d) Egész értékű eredményt kapott? Ha igen, garantált az egész értékű megoldás?
Megoldások Szöveges feladatok. Egy acélgyárban négyfajta zártszelvényt gyártanak: kis, közepes, nagy és extra nagy méretűt. A gyárban háromfajta gép áll rendelkezésre, A, B, és C. Az alábbi táblázat azt adja meg, hogy az egyes gépek a különböző típusú zártszelvényekből óránként hány méternyit képesek előállítani Gép Zártszelvény A B C Kis 6 8 Közepes 4 7 Nagy 6 Extra nagy A gépek hetente órát működhetnek, és az egyes gépek működtetése óránként,, illetve 8 egységnyi pénzbe kerül. A terv szerint az egyes A, B, C és D típusú zártszelvényekből hetente, 8, 6, illetőleg 6 méternyit kell legyártani. a) Fogalmazza meg a fenti gépütemezési problémát lineáris program formájában! b) Keressen kezdeti bázist! c) A primál vagy a duál szimplex algoritmussal oldaná-e meg a feladatot? (Nem kell megoldani!) Megoldás: a) Jelölje x ij azt, hogy hány órát fordítunk az i. gépen (i {,,}) a j. típusú zártszelvény (j {,,, 4}) gyártására. Ekkor a lineáris program: min x +x +x +x 4 +x +x +x +x 4 +8x +8x +8x +8x 4 s.t. x +x +x +x 4 x +x +x +x 4 +x +x +x +x 4 x +6x +8x = x +4x +7x = 8 x +x +6x = 6 x 4 +x 4 +x 4 = 6 x, x, x, x 4, x, x, x, x 4, x, x, x, x 4 b) A negyedik, ötödik, hatodik és hetedik feltételt akár formába is írhatnánk, nem változna a célfüggvény értéke, hiszen a cél a költségek minimalizálása. Ezen feltételek invertálásával és maximalizálási alakra áttérve: 6
max x x x x 4 x x x x 4 8x 8x 8x 8x 4 s.t. x +x +x +x 4 x +x +x +x 4 +x +x +x +x 4 x 6x 8x x 4x 7x 8 x x 6x 6 x 4 x 4 x 4 6 x, x, x, x 4, x, x, x, x 4, x, x, x, x 4 Kanonikus alakú problémát kaptunk, amelyet slack-változókkal standard alakra kell hozni. A célfüggvény együtthatói mind negatívak, tehát a bevezetendő slack-változók duál megengedett kezdeti bázist alkotnak. c) A fentiek miatt a megoldáshoz érdemes a duál szimplex algoritmust használni. Lineáris programok grafikus megoldása. Tekintsük az alábbi lineáris programot (Figyelem: az változókra nincs előjelmegkötés!): a) Oldja meg a lineáris programot grafikusan! max x + x s.t. x + x 4 x x x x b) Oldja meg a lineáris programot (szintén grafikusan), ha a célfüggvényt a max x +x szerint megváltoztatjuk! c) Létezik és egyedi-e a megoldás, ha a célfüggvény max x x? Indokolja válaszát grafikusan! Megoldás: A megengedett tartomány grafikusan: x x x x +x 4 x x x a) A célfüggvény normálvektora az [ ] vektor, ebből adódik az x = [ x x ] = [ ] egyedi extrém pont megoldás. [ ] b) Ekkor a célfüggvény normálvektora a szerint módosul, így az optimális megoldás nemkorlátos. Például a = + λ[ [ ] [ ] ] x,λ sugár mentén haladva a célfüggvény értéke x λ szerint növekedik. c) Alternatív optimális megoldások a [ x x ] = [ ] +λ 7 [ ],λ [,] halmazban.
. Tekintsük az alábbi lineáris programot: min x + x s.t. x + x 4 x x x a) Ábrázolja a megengedett tartományt grafikusan! b) Adja meg a megengedett tartomány extrém pontjait! c) Adja meg a lineáris program optimális célfüggvényértékét és egy optimális megoldását! d) Egyedi a megoldás? Indokolja válaszát! e) Hogyan változik az optimális célfüggyvényérték és a hozzá tartozó megoldás, ha a célfüggvényt minx +x kifejezésre változtatjuk? Válaszát indokolja a grafikonon is! Megoldás: a) A megengedett tartomány grafikusan: x x x x x x +x 4 x x b) Az extrém pontok a grafikus ábrázolásból könnyen kaphatók: [ ] [ ] [ ] [ ] x =, x =, x. =, x 4 = c) A megengedett tartomány korlátos, így garantált, hogy az optimális megoldás előáll annak valamely extrém pontján. Konkrétan ott, ahol a c T x e szorzat minimális az összes x e extrém ponton: c T x = [ ][ ] =, c T x = [ ][ ] = 6,. ] c T x = [ ][ Ebből az optimális megoldás, ami az x 4 = =, c T x 4 = [ ][ ] = [ ] extrém ponton áll elő. d) A megoldás [ ] egyedi, ugyanis a célfüggvény x + x = kontúrja csak egy pontban, az x 4 = extrém pontban érinti a megengedett tartományt. e) A célfüggvény c T = [ ] -ről c T = [ ] -re változtatása esetén c T x e szorzatok: c T x = [ ][ ] =, c T x = [ ][ ] =.,. ] c T x = [ ][ =, c T x 4 = [ ][ ] = 8
[ ] Ebből az optimális megoldás, ami az x = extrém ponton áll elő. A grafikonon a megváltoztatott [ ] célfüggvény szerinti optimalizálás megfelel a megengedett tartomány poliédere és a normálvektorú hipersík érintőpontja meghatározásának. x x x x x +x 4 x minx +x x A szimplex algoritmus használata 4. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x + 8x x + 8x 4 s.t. x + x + x + x 4 7 x x x x 4 x x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. d) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x 4 célfüggvény-együtthatóját -ra csökkentjük, x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját 9-re növeljük, ez utóbbi módosítás után x célfüggvény-együtthatóját 9-re növeljük? Megoldás: Az x és x 6 slack-változók bevezetése és a második feltétel invertálása után a slackváltozók triviális kezdeti egységbázist alkotnak. A megoldáshoz ezért a primál szimplex algoritmust használjuk. A kezdeti szimplex tábla: z x x x x 4 x x 6 RHS z 8 8 x 7 x 6 Az x belép a bázisba, az x 6 kilép. 9
Az x 4 belép a bázisba, az x kilép. z x x x x 4 x x 6 RHS z 9 4 4 8 x x 6 Optimális szimplex tábla. A megoldás x = tehát létezik, korlátos, továbbá egyedi is. z x x x x 4 x x 6 RHS z 8 8 6 x x 4 x x x = x 4, a célfüggvény értéke 6. A megoldás A d) pont megoldásához érzékenységvizsgálatot kell végezni az optimális szimplex táblán a célfüggvény megváltoztatása mellett. x 4 célfüggvény-együtthatója -ra csökken: az optimális szimplex táblában x 4 bázisváltozó, így az érzékenységvizsgálat elvégzéséhez úgy kell módosítanunk a szimplex táblát, hogy x 4 sorának c 4 c 4 = 8 = -szörösét hozzá kell adni a nulladik sorhoz és az x 4 -hez tartozó elemet nullázni kell. A kapott tábla nem primál optimális: z x x x x 4 x x 6 RHS z 8 6 x x 4 x 4 kilép a bázisból, x belép, a kapott tábla optimális: z x x x x 4 x x 6 RHS z 9 4 8 x x 6 Az érzékenységvizsgálat eredménye: x célfüggvény-együtthatójának -re csökkentése esetén x az optimális megoldás x = x x =, (korlátos és egyedi), a célfüggvény értéke 8. x 4 x célfüggvény-együtthatója -re csökken: mivel az optimális szimplex táblában x nembázisváltozó, így célfüggvény-együtthatójának csökkentésére redukált költsége nő (z = z (c c ) = ( ) = 7 ), ilyenkor a tábla garantáltan optimális marad. A megoldás tehát nem változik.
x célfüggvény-együtthatója 9-re nő: ebben az esetben x nembázisváltozó redukált költsége csökken: z = z (c c ) = (9 ) =. Mivel z negatívvá változott, a tábla immár nem optimális, így a primál szimplex algoritmus segítségével ismét optimalizálnunk kell azt. A megváltoztatott szimplex tábla: z x x x x 4 x x 6 RHS z 8 8 6 x x 4 x belép a bázisba, x 4 kilép, a pivot után kapott tábla optimális: z x x x x 4 x x 6 RHS z 4 9 8 x x Az érzékenységvizsgálat eredménye: x célfüggvény-együtthatójának 9-re növekedése esetén x az optimális megoldás x = x x =, (korlátos és egyedi), a célfüggvény értéke 8. x 4 Ez utóbbi módosítás után x célfüggvény-együtthatója 9-re nő: x a kapott optimális táblában nembázisváltozó, költsége a változtatás után csökken: z = z (c c ) = (9 8) = 9 >, tehát a tábla optimális marad.. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x x + x s.t. x + x + x x + x x 6 x + x 9 x, x, x a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. d) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját -re növeljük, x célfüggvény-együtthatóját 4-re csökkentjük, x célfüggvény-együtthatóját -re növeljük? Megoldás: Használjuk a primál szimplexet a slack-változók által alkotott kezdeti egységbázisra. A optimális szimplex tábla: z x x x x 4 x x 6 RHS z x 6 x x 6 6
Ebből az optimális megoldás: [ x x x x 4 x x 6 ] T = [ 6 6 ] T, az eredeti változók terében [ x x x ] T = [ 6 6 ] T, a célfüggvény értéke. Az x nembázisváltozóhoz a nulladik sorban z = áll, és a bázis nemdegenerált, vagyis a fenti optimális megoldás nem egyedi. Például alternatív optimumok az alábbi halmaz elemei: x 6 x x x 4 = 6 λ x x 6, λ 8 Az eredeti változók terében: x 6 x = +λ x 6, λ 8 A d) pont megoldásához érzékenységvizsgálatot kell végezni az optimális szimplex táblán a célfüggvény megváltoztatása mellett. x célfüggvény-együtthatója -re csökken: az optimális szimplex táblában x bázisváltozó, így az érzékenységvizsgálat elvégzéséhez úgy kell módosítanunk a szimplex táblát, hogy x sorának c c = = -szörösét hozzá kell adni a nulladik sorhoz és az x -hez tartozó elemet nullázni kell. A kapott tábla nem optimális: x belép a bázisba, x kilép. z x x x x 4 x x 6 RHS z x 6 x x 6 6 z x x x x 4 x x 6 RHS z x x 8 x 6 9 A kapott tábla optimális. Az érzékenységvizsgálat eredménye: x célfüggvény-együtthatójának x -re csökkentése esetén az optimális megoldás x = x =, (korlátos és egyedi), a x célfüggvény értéke változatlanul. Figyeljük meg, hogy ugyanez a λ = 8 választás mellett.
x célfüggvény-együtthatója -re nő: ebben az esetben x sorának c c = = -szeresét kell hozzáadni a nulladik sorhoz. z x x x x 4 x x 6 RHS 4 z 8 x 6 x x 6 6 A kapott tábla optimális, a megoldás nem változik, az optimális célfüggvényérték azonban igen, x értékének kétszeresére növekedése 8-re növeli az optimumot. A megoldás most már egyedi, ellentétben az eredeti feladat megoldásával. x célfüggvény-együtthatója 4-re csökken: mivel nembázisváltozó célfüggvény-együtthatójának csökkentése sosem módosítja az optimális megoldást, így a tábla marad optimális. x célfüggvény-együtthatója -re nő: a nulladik sorban x redukált költsége negatívvá változik, hiszen z = z (c c ) = ( ( )) = <, így a megoldás a továbbiakban nem optimális. A módosított tábla: z x x x x 4 x x 6 RHS z x 6 x x 6 6 Az optimális tábla: z x x x x 4 x x 6 RHS z 7 x x x 6 4 6 4 Az érzékenységvizsgálat eredménye: x célfüggvény-együtthatójának -re csökkentése esetén x az optimális megoldás x = x = x 6 4, (korlátos és egyedi), a célfüggvény értéke. 6. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: min x x + x x 4 s.t. x + x + 4x x 4 6 x x + x x 4 x + x + x 4 4 x, x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvény értéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat.
Megoldás: A célfüggvényt invertálva maximalizálási problémára konvertáljuk, majd a második sort invertálva a slack-változók oszlopaiból primál megengedett egységbázist kapunk. A primál szimplexet használva az optimális szimplex tábla: z x x x x 4 x x 6 x 7 RHS z x 4 9 76 4 8 x x 4 4 Az eredményeket invertálni kell, hiszen az eredeti probléma minimalizálási feladat volt. Így a minimalizálási probléma az optimumát az [ ] T [ x x x x 4 = 8 4 ] T pontban veszi fel, és itt a célfüggvény értéke 76. Az optimum egyedi. 7. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: max x + x x + x 4 s.t. x 4x x + x 4 8 x + x + x x 4 x x 4x + x 4 4 x, x, x, x 4 a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvényértéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. Megoldás: Az optimális megoldás nemkorlátos. A kezdeti szimplex tábla: z x x x x 4 x x 6 x 7 RHS z x 4 8 x 6 x 7 4 4 Az x változó belép, x 7 kilép (kiléphetne x is). z x x x x 4 x x 6 x 7 RHS z x 7 x 6 6 4 6 x 4 4 Degenerált pivot után: z x x x x 4 x x 6 x 7 RHS z 7 7 7 7 7 x 7 7 7 7 6 x 6 7 7 6 7 7 6 x 7 7 4 4 7 7 4
A primál szimplex utolsó táblája: z x x x x 4 x x 6 x 7 RHS z 84 x x x 8 4 7 6 7 6 7 6 6 7 6 6 7 6 97 Ebből látható, hogy x 4 tetszőlegesen növelhető. A nemkorlátosságot okozó sugár tehát a slackváltozókkal kibővített, illetve az eredeti változók terében: x x x x 4 x x 6 x 7 97 Ekkor a célfüggvény értéke a 7 8 6 = +λ,λ +λ84 x x x x 4 =,λ szerint alakul. 97 6 +λ 8. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével: min x x s.t. x x x + x 6 x + x 8 4x x 6 8,λ a) Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. b) Ha létezik, adjon egy optimális megoldást és a hozzá tartozó célfüggvényértéket. c) Egyedi az optimum? Ha igen, indokolja, miért. Ha nem, adjon alternatív optimális megoldásokat. Megoldás: Vegyük észre, hogy a változókon nincs előjelmegkötés. Az x = y y,y,y és az x = y y 4,y,y 4 helyettesítések után, kanonikus formájú maximalizálási alakba írva: max y + y + y y 4 s.t. y + y + y y 4 y + y y + y 4 6 y y + y y 4 8 4y 4y y + y 4 6 y, y, y, y 4 Slack-változókkal standard alakra áttérve és a primál szimplex algoritmust felhasználva az optimális szimplex tábla:
z y y y y 4 y y 6 y 7 y 8 RHS z 9 y y 4 9 4 y 7 9 4 y 8 9 8 9 9 9 7 9 4 9 8 Az eredeti minimalizálási probléma optimuma 9, amelyet az x = y y =, x = y y 4 = pontban vesz fel. Vegyük észre, hogy az optimális szimplex tábla y nembázisváltozóhoz tartozó oszlopában (az első oszlop) y együtthatóval szerepel. Tehát y növelésére y ugyanennyivel csökken, vagyis az x = y y értéke változatlan marad. Ugyanez igaz y és y 4 változókra is. A helyettesített lineáris programnak tehát végtelen sok megoldása van, de ezekhez az eredeti lineáris programban ugyanazok az [ x x ] T pontok tartoznak. 9. Oldja meg az alábbi lineáris programot a szimplex algoritmus segítségével. Ügyeljen az egyenlőség és egyenlőtlenség alakú feltételekre. max x + 4x + x + x 4 s.t. x + x x + x 4 x + x + x + x 4 = 8 x + x + x 4 x, x, x, x 4 a) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. b) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Létezik korlátos optimális megoldás? Ha nem, mutasson egy sugárt, amely mentén nemkorlátosság igazolható. Ha létezik korlátos optimális megoldás, egyedi az optimum? Ha nem egyedi, adjon altervatív optimális megoldásokat. c) Változik-e az optimális megoldás és célfüggvényérték, és ha igen, hogyan, abban az esetben, ha rendre x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját -re növeljük, x célfüggvény-együtthatóját -re csökkentjük, x célfüggvény-együtthatóját 7-re növeljük? Megoldás: a) Slack-változókkal standard alakra áttérve: max x + 4x + x + x 4 s.t. x + x x + x 4 x = x + x + x + x 4 = 8 x + x + x 4 + x 6 = x, x, x, x 4, x, x 6 Nincs triviális kezdeti egységbázis, egyedül a harmadik feltétel slack-változóját biztos, hogy érdemes a bázisba választani. A maradék két bázisváltozót a x 7 és x 8 mesterséges változók bevezetésével biztosítjuk. max x + 4x + x + x 4 s.t. x + x x + x 4 x + x 7 = x + x + x + x 4 + x 8 = 8 x + x + x 4 + x 6 = x, x, x, x 4, x, x 6, x 7, x 8 6
Az első fázisban tehát a primál szimplex algoritmust használjuk az x 6, x 7 és x 8 változók oszlopai által alkotott kezdeti egységbázisra. Cél az x 7 és x 8 mesterséges változók eltüntetése. min x 7 + x 8 s.t. x + x x + x 4 x + x 7 = x + x + x + x 4 + x 8 = 8 x + x + x 4 + x 6 = x, x, x, x 4, x, x 6, x 7, x 8 Maximalizálásra áttérve (ne felejtsünk a végén -gyel szorozni). Az első fázis táblája a B = {x 7,x 8,x 6 } változók által meghatározott egységbázisban: z x x x x 4 x x 6 x 7 x 8 RHS z x 7 x 8 8 x 6 Még nem szimplex tábla, ahhoz a nulladik sorban a bekeretezett értékeket ki kell nullázni. A kapott tábla: z x x x x 4 x x 6 x 7 x 8 RHS z 9 x 7 x 8 8 x 6 b) Futtassuk a primál szimplex algoritmust a kapott táblán. x belép a bázisba, x 7 kilép, stb. Az első fázis optimális táblája: z x x x x 4 x x 6 x 7 x 8 RHS z x x x 6 4 A célfüggvény értéke, így az eredeti feladatnak létezik megengedett megoldása. A mesterséges változók kiléptek a bázisból, így x, x és x 6 oszlopa bázisként használható a második fázisban, az x 7 és x 8 oszlopa elhagyható. Beírva az eredeti célfüggvényt (ne felejtsük az együtthatókat invertálni): z x x x x 4 x x 6 RHS z 4 x 9 x x 6 9 7
A bekeretezett együtthatókat nullázva szimplex táblát kapunk: x 4 belép a bázisba, x kilép. z x x x x 4 x x 6 RHS z 4 x 9 x x 6 z x x x x 4 x x 6 RHS z 6 4 x x 4 x 6 A kapott tábla optimális. A célfüggvény optimuma 4, a megoldás egyedi mert a nembázisváltozókhoz tartozó értékek a nulladik sorban mind szigorúan pozitívak. c) Érzékenységvizsgálatot kell végezni az optimális szimplex táblán a célfüggvény megváltoztatása mellett. x célfüggvény-együtthatója-re csökken: mivel nembázisváltozó célfüggvény-együtthatójának csökkentése nem módosítja az optimális megoldást, így a tábla marad optimális. x célfüggvény-együtthatója -re nő: a nulladik sorban x redukált költsége negatívvá változik, hiszen z = z (c c ) = 6 ( ) = <, így a megoldás a továbbiakban nem optimális. A módosított tábla: z x x x x 4 x x 6 RHS z 4 x x 4 x 6 x belép a bázisba, x 4 kilép, a kapott szimplex tábla optimális: z x x x x 4 x x 6 RHS z 9 x 9 x x 6 Vagyis x értékének növelésére x felváltja x 4 -et a bázisban, tehát az optimális megoldás x x x x 4 = 9. Ezzel egy időben a célfüggvény értéke 9-re nő. x célfüggvény-együtthatója -re csökken: az optimális szimplex táblában x bázisváltozó, így az érzékenységvizsgálat elvégzéséhez úgy kell módosítanunk a szimplex táblát, hogy x 8
sorának c c = = -szeresét hozzá kell adni a nulladik sorhoz és az x -hez tartozó elemet nullázni kell. z x x x x 4 x x 6 RHS z 4 8 x x 4 x 6 A tábla marad optimális, így az optimális megoldás nem változik, de a célfüggvényérték 8-ra csökken. x célfüggvény-együtthatója 7-re nő: most x sorának c c = 7 = 4-szeresét kell hozzáadni a nulladik sorhoz. z x x x x 4 x x 6 RHS z 46 x x 4 x 6 x belép a bázisba, x 4 kilép. A végső optimális szimplex tábla: z x x x x 4 x x 6 RHS z 4 6 x 8 x x 6 x 8 Az optimális megoldás x x =. Ezzel egy időben a célfüggvény értéke 6-ra nő. x 4 A dualitás. Tekintsük a 4. feladatban adott lineáris programot: max x + 8x x + 8x 4 s.t. x + x + x + x 4 7 x x x x 4 x x, x, x 4 a) Írja fel a lineáris program duálisát és hozza standard alakra! A feladat megoldásához használja az alábbi táblázatot: Maximalizálási probléma Minimalizálási probléma Feltétel Változó = tetszőleges tetszőleges = 9 Változó Feltétel
b) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. c) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Egyedi az optimum? Ha nem, adjon altervatív optimális megoldásokat. d) Vesse össze a kapott optimális megoldást a 4. feladatban kapott megoldással! Mit tudunk a primál és a duál optimális megoldásainak kapcsolatáról? Megoldás: a) Bevezetve a w és w duális változókat rendre az első és a második sorhoz, a kapott duális: min 7w w s.t. w w w w 8 w w w w 8 w w A standard alak megadásához az alábbi módosításokat kell elvégeznünk: át kell térnünk maximalizálási alakra a célfüggvény invertálásával (a kapott megoldást majd szorozni kell -gyel), w jelenleg nempozitív, így a w = w helyettesítéssel nemnegatív változóra kell konvertálni (az együtthatóinak előjele közben szintén változik), végül slack-változókat kell bevezetni az összes sorhoz. A kapott standard alak: max 7w w s.t. w + w w = w + w w 4 = 8 w + w w = w + w w 6 = 8 w, w, w w 4 w w 6 b) A kapott standard alakban a slack-változók kezdeti duál-megengedett (primál-optimális) bázist alkotnak, így használhatnánk a duál szimplex módszert. Ehelyett most, gyakorlásképpen, vezessünk be mesterséges változókat. Első lépésként a RHS együtthatóit kell pozitívvá tenni, ehhez invertáljuk a. feltételt. max 7w w s.t. w + w w = w + w w 4 = 8 w w + w = w + w w 6 = 8 w, w, w w 4 w w 6 w slack-változó oszlopa alkothatja a bázis egyik oszlopát, a maradékot w 7, w 8 és w 9 mesterséges változók bevezetésével kaphatjuk meg. A célfüggvényt módosítjuk a mesterséges változók eliminálása céljából: minw 7 +w 8 +w 9 = max w 7 w 8 w 9. (A végén ne felejtsük invertálni a kapott célföggvényértéket!) max s.t. w + w w + w 7 = w + w w 4 + w 8 = 8 w w + w = w + w w 6 + w 9 = 8 w, w, w, w 4, w, w 6, w 7, w 8, w 9 A kezdeti bázis tehát a w, w 7, w 8 és w 9 változók oszlopaiból alkotott egységmátrix.
c) A feladatot táblázatba írva (ne felejtsük a nulladik sort invertálni): z w w w w 4 w w 6 w 7 w 8 w 9 RHS z w 7 w 8 8 w w 9 8 A kapott alak még nem szimplex tábla, mert a nulladik sor bekeretezett elemei nemzérók. Vonjuk ki a w 7, w 8 és w 9 sorát a nulladik sorból: z w w w w 4 w w 6 w 7 w 8 w 9 RHS z 6 4 9 w 7 w 8 8 w w 9 8 w belép a bázisba, w 7 kilép. z w w w w 4 w w 6 w 7 w 8 w 9 RHS z w w 8 w w 9 7 w belép a bázisba, w 9 kilép. w belép a bázisba, w 8 kilép. z w w w w 4 w w 6 w 7 w 8 w 9 RHS z 4 6 w w 8 w w z w w w w 4 w w 6 w 7 w 8 w 9 RHS z w w w w 8 6 7 8 6 49 7
Optimális táblát kaptunk, vége az első fázisnak. A célfüggvény értéke, így az eredeti feladatnak létezik megengedett megoldása. A mesterséges változók kiléptek a bázisból, így w 7, w 8 és w 9 oszlopa elhagyható. A duális feladat célfüggvényét a táblába írva (ne felejtsük el invertálni az együtthatókat): z w w w w 4 w w 6 RHS z 7 w w w w Még nem szimplex tábla, ahhoz ki kell nulláznunk a bekeretezett elemeket a nulladik sorban: w 4 belép a bázisba, w kilép. z w w w w 4 w w 6 RHS z w w w w 88 8 6 49 7 8 6 49 7 z w w w w 4 w w 6 RHS z 6 w 4 8 w 8 w w Optimális szimplex táblát kaptunk, vége a második fázisnak. Az optimális célfüggvényérték 6, [ az eredeti ] [ minimalizálási ] duál probléma célfüggvényértéke tehát 6. Az optimális megoldás w w = =, egyedi. 8 w d) A dualitás erős tétele miatt a primál optimális célfüggvényértéke (6) megegyezik a duál optimális célfüggvényértékével (6). A komplementaritás tulajdonságának felhasználásával további összefüggések figyelhetők meg: például tudjuk, hogy ha egy duál változó optimális értéke pozitív, akkor a hozzá tartozó sor a primálban éles: w > x x x x 4 = Hasonlóan, ha egy feltétel a primálban nem éles, a hozzá tartozó duál változó optimális értéke nulla: x +x +x +x 4 <7 w = Továbbá: primál változó pozitív optimális értéke esetén a hozzá tartozó duál feltétel éles, és nem éles duál feltétel esetén a hozzá tartozó optimális probálmegoldás nulla: x 4 > w w = w +w =8 w w = w +w > x =
. Tekintsük a 6. feladatban adott lineáris programot: min x x + x x 4 s.t. x + x + 4x x 4 6 x x + x x 4 x + x + x 4 4 x, x, x, x 4 a) Írja fel a lineáris program duálisát és hozza standard alakra! A feladat megoldásához használja az alábbi táblázatot: Maximalizálási probléma Minimalizálási probléma Feltétel Változó = tetszőleges tetszőleges = b) Keressen kezdeti bázist! Ha szükséges, vezessen be mesterséges változókat. c) Oldja meg a kapott lineáris programot a megfelelő szimplex algoritmus segítségével! Egyedi az optimum? Ha nem, adjon altervatív optimális megoldásokat. d) Vesse össze a kapott optimális megoldást a 6. feladatban kapott megoldással! Mit tudunk a primál és a duál optimális megoldásainak kapcsolatáról? Megoldás: a) Invertálva az első és a harmadik sort (hogy ne kapjunk nempozitív duál változókat) és bevezetve a w, w és w duális változókat rendre az első, második és harmadik sorhoz, a kapott duális: max 6w w 4w s.t. w w w w w 4w + w w w w w w, w, w A standard alak megadásához slack-változókat kell bevezetni az összes sorhoz. max 6w w 4w s.t. w w w + w 4 = w w + w = 4w + w w + w 6 = w w w + w 7 = w, w, w, w 4, w 4, w 6, w 7 b) A kapott standard alakban a slack-változók kezdeti duál-megengedett (primál-optimális) egységbázist alkotnak, így használhatjuk a duál szimplex módszert. z w w w w 4 w w 6 w 7 RHS z 6 4 w 4 w w 6 4 w 7 Változó Feltétel
w 7 kilép a bázisból, w belép. z w w w w 4 w w 6 w 7 RHS z 8 4 w 4 w w 6 8 w w kilép a bázisból, w belép. z w w w w 4 w w 6 w 7 RHS z 4 8 4 76 w 4 4 w w 6 9 w A kapott tábla optimális. Az optimális célfüggvényérték 76, az optimális duálváltozók értékei: w w = w = w, egyedi. c) A dualitás erős tétele miatt a primál optimális célfüggvényértéke megegyezik a duál optimális célfüggvényértékével. A komplementaritás tulajdonságának felhasználásával további összefüggések figyelhetők meg: például tudjuk, hogy ha egy duál változó optimális értéke pozitív, akkor a hozzá tartozó sor a primálban éles, és ha egy feltétel a primálban nem éles, a hozzá tartozó duál változó optimális értéke nulla: w > x x +x x 4 = x +x +4x x 4 < 6 w = Továbbá: primál változó pozitív optimális értéke esetén a hozzá tartozó duál feltétel éles, és nem éles duál feltétel esetén a hozzá tartozó optimális probálmegoldás nulla: x 4 > w w w = w w w < x = Szöveges feladatok megoldása a szimplex algoritmussal. Egy papírgyárban lecserélik a munkagépeket. Kétfajta kartonvágó gépet szerezhetnek be: az A típusú gép dobozt tud kivágni egy perc alatt, egy személy kell a működtetéséhez és ezer egységnyi pénzbe kerül, a B típusú gép ezzel szemben dobozt tud készíteni, de a felügyeletéhez két ember kell és ezer egységnyi pénzbe kerül. A termelési terv percenként legalább doboz legyártása legfeljebb munkás alkalmazása mellett. Hány A és B típusú gépet kell beszereznie a papírgyárnak a termelési terv végrehajtásához úgy, hogy a gépek beszerzési költségeit minimalizáljuk? a) Fogalmazza meg a fenti beszerzési problémát lineáris program formájában! 4
b) Keressen kezdeti bázist! c) Oldja meg a lineáris programot a primál vagy a duál szimplex algoritmussal! d) Egész értékű eredményt kapott? Ha igen, garantált az egész értékű megoldás? Megoldás: a) Jelölje az A típusú gépből beszerzendő mennyiséget x A, és a B típusúból beszerzendő mennyiséget x B. A munkaerőkorlát: x A +x B A termelési tervben szereplő dobozos cél az alábbi feltételt adja: A beszerzési költség: x A +x B x A +x B Természetesen a változók nemnegatívak. Ebből a lineáris program: min x A + x B s.t. x A + x B x A + x B x A, x B b) Slack-váltoizókkal standard alakra hozva, a második feltétel invertálásával és maximalizálási alakra áttérve: max x A x B s.t. x A + x B + s = x A x B + s = x A, x B, s, s A slack-változók duál megengedett kezdeti egységbázist alkotnak. c) Értelemszerűen a duál szimplex algoritmust fogjuk használni. A kezdeti szimplex tábla: z x A x B s s RHS z s s A duál szimplex algoritmus további iterációi: Végül az optimális tábla: z x A x B s s RHS z 4 8 s 4 x B z x A x B s s RHS z 4 x A 4 x B 4 A gyárnak 4-4 gépet kell beszereznie 4 ezer egységnyi pénzért, és összesen 4 + 4 = munkást kell alkalmaznia.
d) Az eredmény egész értékű, ez azonban nem garantált. Ahhoz a változókon egészértékűségi megkötést kéne alkalmazni.. Egy szerszámgépgyárban háromfajta gépet gyártanak: az A, B és C típusú gépeket. A legyártott gépeket a termelési periódus végéig raktárban tárolják. Az egyes gépek legyártásához szükséges munkaidőt, a gépenként termelt profitot, illetve a géptípusonként szükséges raktárhely nagyságát az alábbi táblázat foglalja össze. Gép Géptípus A B C Szükséges munkaidő [egység/gép] Raktározási igény [m /gép] Profit [egység/gép] Az C típusú gép elkészítéséhez egy speciális alkatrészre van szükség, amelyből a termelési periódus alatt csak darab áll rendelkezésre. A termelési periódusban egységnyi munkaidő fordítható a gépek legyártására, a teljes raktárméret m. Hány darabot kell legyártani az egyes A, B illetve C típusú gépből a profit maximalizálása érdekében? a) Fogalmazza meg a fenti termelésoptimalizálási problémát lineáris program formájában! b) Keressen kezdeti bázist! c) Oldja meg a lineáris programot a primál vagy a duál szimplex algoritmussal! d) Egész értékű eredményt kapott? Ha igen, garantált az egész értékű megoldás? Megoldás: a) Jelölje az A típusú gépből beszerzendő mennyiséget x A, a B típusúból beszerzendő mennyiséget x B, és a C típusúból beszerzendő mennyiséget x C. A munkaidőkorlát: x A +x B +x C A raktározási korlát: x A +x B +x C A C típusú gépből csak darabot tudunk legyártani, mert a speciális alkatrészből csak ennyi áll rendelkezésre. x C A termelődő profit: x A +x B +x C Természetesen a változók nemnegatívak. Ebből a lineáris program: max x A + x B + x C s.t. x A + x B + x C x A + x B + x C x C x A, x B, x C b) Azs, s, s slack-változókkal standard alakra hozva a slack-változók primál megengedett kezdeti egységbázist alkotnak. 6
c) Értelemszerűen a primál szimplex algoritmust fogjuk használni. A kezdeti szimplex tábla: A primál szimplex algoritmus további iterációi: z x A x B x C s s s RHS z s s s z x A x B x C s s s RHS z 8 x A 6 s 6 s Végül az optimális tábla: z x A x B x C s s s RHS 4 z x A 4 x C 4 s A gyárnak 4-4 darabot kell gyártania az A és C típusú gépekből és B típusú gépet nem kell gyártani. A keletkezett profit egység. d) Az eredmény egész értékű, ez azonban nem garantált. Ahhoz a változókon egészértékűségi megkötést kéne alkalmazni. 7