Eötvös Loránd Tudományegyetem Természettudományi Kar Optimalizálás a Microsoft Excel Solver b vítménye segítségével Szakdolgozat Tóth Ádám Matematika B.Sc., elemz szakirány Témavezet : Mádi-Nagy Gergely, egyetemi adjunktus Operációkutatás Tanszék Budapest 2011
Tartalomjegyzék 1. Bevezetés 3 2. A Microsoft Excel Solver használata 4 3. Lineáris programozás 10 3.1. Termelési feladat................................ 11 3.1.1. Modell felírása............................. 11 3.1.2. Megoldás Solver segítségével...................... 11 3.1.3. Megoldás elemzése........................... 12 3.2. Szállítási feladat................................. 16 3.2.1. Modell felírása............................. 17 3.2.2. Megoldás Solver segítségével...................... 18 3.2.3. Megoldás elemzése........................... 19 3.3. Hozzárendelési feladat............................. 21 3.3.1. Modell felírása............................. 21 3.3.2. Megoldás Solver segítségével...................... 23 3.3.3. Megoldás elemzése........................... 24 3.4. Minimális költség hálózati folyam problémák................ 25 3.4.1. Modell felírása............................. 25 3.4.2. Megoldás Solver segítségével...................... 28 3.4.3. Megoldás elemzése........................... 29 4. Nemlineáris programozás 32 4.1. Folytonos feladat................................ 32 4.1.1. Modell felírása............................. 33 4.1.2. Megoldás Solver segítségével...................... 34 1
4.1.3. Megoldás elemzése........................... 35 4.2. Nem folytonos feladat............................. 35 4.2.1. Modell felírása............................. 35 4.2.2. Megoldás Solver segítségével...................... 36 4.2.3. Megoldás elemzése........................... 37 2
1. fejezet Bevezetés Lehet ségeihez mérten az ember mindig törekedett a legjobb eredmény elérésére. Legyen az egy gyár autógyártásából származó bevétel, vagy a fogyasztó oldaláról nézve az autó ár-érték arányának minimalizálása. Nap mint nap optimalizációs problémákkal találjuk szembe magunkat, még ha nem is vesszük észre. Elég ha csak egy átlagos bevásárlásra gondolunk. Persze a megoldandó feladatok nagysága és súlya nem ugyanakkora. Világos, hogy a kisboltban vásárolható két tej között könnyebb választani, mintha egy lakást szeretnénk venni, vagy akár egy nagyvállalat vezetésével vagyunk megbízva és döntéseinken komoly bevételek múlnak. Itt jön a kérdés: hogyan is tudnánk deniálni ezt az egész folyamatot? Az optimalizálás a gazdasági er forrásokkal való ésszer gazdálkodás, a legjobb állapot illetve cselekvés kiválasztására alkalmas eljárás, valamely el re meghatározott feltételek alapján. A gyorsaság és pontosság mindig is nagy szerepet kapott az optimalizálásban. Számítógépünk segítségével hatékonyabban tudunk megoldani nagyméret problémákat, vagy akár olyanoknak is meg tudjuk adni eredményét, amelyeket szinte lehetetlen lenne papíron kiszámolni. Ezt a célt szolgálja a Microsoft Excel Solver b vítménye. Ennek a programnak az a m ködési elve, hogy a megszorítások gyelembevételével megvizsgálja a lehetséges megoldásokat, majd azok közül kiválasztja a számunkra legkedvez bbet. Egy feladatnak lehet egy, több vagy akár végtelen sok optimális megoldása, de el fordulhat az is, hogy egy sincs. A kés bbiekben minden problématípusnál ismertetni fogjuk a modell fontosabb tulajdonságait egy feladat segítségével, amelyet a Solverrel megoldunk, majd a kapott eredményeket, jelentéseket kielemezzük. A példafeladatokat Wayne L. Winston Operációkutatás - Módszerek és alkalmazások cím könyvéb l merítettem. 3
2. fejezet A Microsoft Excel Solver használata A Solver használatát egy feladat segítségével mutatjuk be a könnyebb megértés kedvéért. 2.1. Feladat. Giapetto fafaragó cége kétfajta fából készült játékot gyárt: katonákat és vonatokat. Egy katonát 27$-ért lehet eladni, és el állításához 10$ érték nyersanyag szükséges. Minden legyártott katona 14 dollárral növeli Giapetto bérben jelentkez változó költségét és az általásnos költséget. Egy vonat 21$-ért adható el, el állításához 9$ érték nyersanyag szükséges. Minden legyártott vonat 10 dollárral növeli a változó- és általános költségeket. A fakatonák és favonatok gyártása kétféle szakképzett munkát igényel: fafaragó és felületkezel munkát. Egy katona el állításához 2 óra felületkezel munka és 1 óra fafaragó munka szükséges. Egy vonathoz 1 óra felületkezel és 1 óra fafaragó munka kell. Giapettonak minden héten korlátlan mennyiség nyersanyag áll rendelkezésére, de csak 100 felületkezel munkaóra és 80 fafaragó munkaóra használható fel. A vonatok iránti kereslet korlátlan, katonákból azonban legfeljebb csak 40-et vesznek meg hetente. Maximalizáljuk Giapetto heti protját (bevétel - költségek)! 1 Els lépésként írjuk fel a feladatunk matematikai modelljét. Döntési változók: x 1 = ahány katonát gyárt egy héten x 2 = ahány vonatot gyárt egy héten Korlátozó feltételek: 2 x 1 + x 2 100 1 Wayne L. Winston: Operációkutatás, Aula, 2003, 51. oldal 4
x 1 + x 2 80 x 1 40 El jelkorlátozó feltételek: x 1 0 x 2 0 Célfüggvény: max z = (27 10 14) x 1 + (21 9 10) x 2 = 3 x 1 + 2 x 2 A matematikai modell felírása után nyissunk meg egy új Excel munkalapot. Az els sorban feltüntetjük a döntési változók jelöléseit. Ezt nem kötelez megtennünk, mivel a program nem fogja a táblázatnak ezt a részét használni, viszont nekünk hasznos lehet átláthatóság szempontjából. Az alatta lév sorban rögzítjük a kezd értékeket (pl. 0), a megoldás során ezek az értékek változnak meg. A modellünkb l kiszedjük az együtthatókat és rögzítjük a táblánkban. A relációkat csak az áttekinthet ség kedvéért tüntetjük fel. Kiszámoljuk a korlátozó feltételek baloldalának értékét az adott változóértékek mellett. 5
A célfüggvény értékét is a változók függvényében számoljuk ki. A feladatunkat rögzítettük a táblánkban, ezek után megoldást keresünk a Solver segítségével, amelyet az Adatok menü Solver parancsával futtathatunk. Az el ugró ablakban megadjuk a célcella valamint a módosuló cellák helyét, kiválasztjuk, hogy maximalizálni vagy minimalizálni szeretnénk a célfüggvényünket és rögzítjük a korátozó feltételeinket. 6
A feltételeket az alábbi párbeszédpanel segítségével vehetjük fel, amelyet a fenti ablakon lév Hozzáadás gomb segítségével hívhatunk el. A Beállítás gombra kattintva szintén egy párbeszédpanel ugrik el, amelynek segítségével kiválaszthajuk a számunkra legkedvez bb megoldó algoritmust. A Max. id nél megadjuk, hogy mennyi id után álljon le a megoldás keresésével a program. A Lépésszám mez nél beírjuk, hogy maximálisan hány közelítést szeretnénk végrehajtani. A Pontosság-nál minél kisebb számot tüntetünk fel, annál nagyobb lesz a pontosság. A kívánt t rést százalékban tudjuk megadni. A Konvergencia mez ben adjuk meg, hogy az utolsó öt iterációban mekkora relatív változást engedünk meg addig, amíg a Solver a megoldást megtalálva le nem áll. A jelöl négyzeteknél be tudunk állítani további tulajdonságokat: lineáris modell, nemnegatív feltételezése, nagyságrendek felismerése, kijelzés lépésenként, amelyek közül elnevezésükb l kifolyólag csak az utolsó kett szorul némi magyarázatra. A nagyságrend felismerésére akkor van szükségünk, ha bizonyos bemeneti értékek több nagyságrenddel különböznek, vagy pedig az input és az output tér el egymástól nagy mértékben. A lépések kijelzésével pedig minden lépés eredményét megvizsgálhatjuk. A Solver az általánosított redukált gradiens (GRG - Generalized Reduced Gradient) módszert használja nem lineáris problémák optimalizálása során, míg lineáris esetben a szimplex és a branch and bound (elágazás és korlátozás) módszereket alkalmazza. A rádiógombok segítségével tovább tudjuk alakítani megoldó algoritmusunkat. A Közelítés-nél az egydimenziós keresési eljárásokban az alapváltozók kezdeti értékének becslésére használt módszert határozhatjuk meg. Ha az érint t választjuk, akkor az értéket az érint lineáris függvényeként írjuk fel, ha a kvadratikusat, akkor négyzetes extrapolációt alkalmazunk. A Dierenciák beállítás segítségével meghatározhatjuk, hogy a cél- és a feltételfüggvények parciális deriváltjainak becslésére a haladó vagy centrális dierenciálás módszerét használja-e a program. El bbit alkalmazzuk, ha a korlátozó feltételek függvényértékei nem változnak túl gyorsan, utóbbit ha ennek ellentéte áll fenn. 7
A Keresés-nél a keresési irányt meghatározó módszert választjuk ki. A Newton módszer általában több memóriát, de kevesebb lépésszámot igényel, mint a konjugált gradiens módszer. Utóbbi nagyobb problémák esetén ajánlott, ahol számít a felhasznált memória. Az algoritmusunk beállítása után az OK gombra kattintva visszatérünk a paramétereket tartalmazó ablakhoz. Itt már nincs más teend nk, mint megnyomni a Megoldás gombot. Amennyiben jól állítottuk be eljárásunkat, a Solver közli velünk, hogy optimális megoldást talált, vagy az nem is létezik esetleg több is van bel le. Ha hibát vélünk felfedezni, mondjuk a program megállt, miel tt megoldást talált volna vagy nem az elvárt eredmény keletkezett, akkor érdemes visszatekinteni a beállításokhoz, és leellen rizni azokat. A jelentések közül kiválaszthatjuk, hogy melyeket szeretnénk megvizsgálni. Ezek részletes magyarázatára a példákon keresztül kerül sor. 8
Ezután az OK gomb megnyomásával a D16 cellában megjelenik Giapetto heti pro- tjának maximuma, az A2 és B2 mez kben pedig a katonák és vonatok gyártásának optimális száma. 9
3. fejezet Lineáris programozás Számos optimalizálási problémában segítségül szolgál a lineáris programozás. A gazdaság szinte minden területén alkalmazzák a legjobb eredmény elérésének érdekében, például pénzügyi, termelési, szállítási, munkaszervezési problémák esetén. 3.1. Deníció. A lineáris programozási feladat (LP) egy olyan optimalizálási feladat, amelyben a következ k történnek: 1. Maximalizáljuk (vagy minimalizáljuk) a döntési változók egy lineáris függvényét. A maximalizálandó vagy minimalizálandó függvényt célfüggvénynek nevezzük. 2. A döntési változók értékeinek ki kell elégíteniük a korlátozó feltételeket. Minden feltételnek vagy lineáris egyenletnek vagy lineáris egyenl tlenségnek kell lennie. 3. Minden változóhoz tartozik egy el jelkorlátozás (vagy annak hiánya). Bármely x i változóra az el jelkorlátozás vagy azt írja el, hogy x i csak nemnegatív lehet (x i 0), vagy azt írja el, hogy x i el jelkorlátozatlan. A megoldandó feladataink modelleinek el állításához a következ néhány alapfogalmat kell megismernünk: döntési változók, célfüggvény, korlátozó feltételek. A döntési változó azt a célt szolgálja, hogy le tudjuk írni a jöv ben meghozandó döntéseket. Például az évente el állított televíziók száma vagy a naponta betakarított búza mennyisége. A célfüggvényt a döntési változók súlyozásával állítjuk el, amelyet minimalizálni vagy maximalizálni szeretnénk. Például egy gyárnál a lehet legnagyobb prot elérése vagy a ráfordítások minimalizálása. A korlátozó feltételek megszabnak bizonyos határokat a feladatnak. Például a rendelkezésre álló nyersanyag mennyisége, a munkaid korlátozása. 10
3.1. Termelési feladat 3.1.1. Modell felírása 3.1. Feladat. Jones farmernek el kell döntenie, hogy ebben az évben hány hold kukoricát és hány hold búzát ültessen. Egy hold hozama 25 mázsa búza, és ez az egy hold heti 10 óra munkát igényel. Egy hold hozama 10 mázsa kukorica, és ez az egy hold heti 4 óra munkát igényel. A búza mázsánként 4$-ért adható el, és a kukorica eladási ára 3$ mázsánként. A farmernak hét hold földje van és heti 40 munkaóra áll rendelkezésére. Kormányzati el írás értelmében ebben az évben legalább 30 mázsa kukoricát kell termelni. Maximalizáljuk a búzából és kukoricából származó teljes jövedelmet! 1 Döntési változók: x 1 = ahány hold búzát ültet x 2 = ahány hold kukoricát ültet Korlátozó feltételek: x 1 + x 2 7 10 x 1 + 4 x 2 40 10 x 2 30 El jelkorlátozó feltételek: x 1 0 x 2 0 Célfüggvény: max z = 4 25 x 1 + 3 10 x 2 = 100 x 1 + 30 x 2 3.1.2. Megoldás Solver segítségével A matematikai modellünket már elkészítettünk, keressünk optimális megoldást a Solver segítségével! A feljebb leírtak fényében töltsünk fel egy táblát az együtthatókkal, adjuk meg a Solver paramétereket (célcella, módosuló cellák, korlátozó feltételek), majd a megoldó 1 Wayne L. Winston: Operációkutatás, Aula, 2003, 58. oldal 11
algoritmusunk beállítását is végezzük el. Esetünkben a jelöl négyzeteknél a lineáris modell és a nemnegatív feltételezéseket kell alkalmaznunk. El bbit használva megjegyzend, hogy a nemlineáris eszközök (közelítés, dierenciák, keresés) beállításai ekkor már nem mérvadóak. A Megoldás gombra kattintva elkészíthetjük a jelentéseket, valamint a megfelel cellákban megjelennek az optimális megoldáshoz tartozó értékek. 3.1.3. Megoldás elemzése A táblázatunkban mind a döntési változók, mind a célfüggvény optimális értéke megjelent. A megoldás szerint 2,8 hold búzát és 3 hold kukoricát kell Jones farmernek ültetni a teljes jövedelem maximalizálásához, amely 370$-t jelent. Az eredmény, érzékenység, határok jelentések három különböz munkalapra generálódtak. Az eredmény jelentés három kisebb táblázatból áll. A Célcella és a Módosuló cellák tartalmazzák a feladat megoldását, amelyet már az imént említettünk. A Korlátozó feltételek-nél a kritériumokra vonatkozó adatokat láthatjuk. A Status oszlopban két érték jelenhet meg. Az Éppen azt jelzi, hogy az adott feltétel határán vagyunk, tehát vagy estén teljesül az egyenl ség, egyéb esetben B ven jelenik meg. Az Eltérés 12
oszlopból kiolvashatjuk, hogy az optimális megoldáshoz tartozó baloldal és a jobboldal milyen mértékben tér el egymástól. Tehát ezek tükrében a következ ket állapíthatjuk meg: a farmer 7 hold földb l csak 5,8 holdat ültet be, amelyek különbségét az Eltérés-nél láthatjuk, számszerint 1,2. a rendelkezésre álló heti 40 munkaórának maximális a kihasználtsága. a kormányzati el írásnak megfelel en, Jones éppen eléri az elvárt, legalább 30 mázsányi kukorica termelést. Az érzékenység jelentésb l nyert adatok segítségével egy feladatot nem feltétlenül kell újra megoldanunk, ha egy paraméter megváltozik. Ez akkor lehet kifejezetten hasznos számunkra, amikor egy jóval nagyobb problémát kell optimalizálnunk. Az érzékenységvizsgálat elemzése lehet séget nyújt, hogy az eredeti megoldásból megállapítsuk, hogy a paraméterek változtatására miképp változik eredményünk. A Módosuló cellák táblázatban szerepl Redukált költség a szimplex tábla alsó sorának értékeire utal. A Megengedhet növekedés/csökkenés oszlopok a megfelel célfüggvény együttható változásainak azon határait adják meg, melyen belül a feladat optimális megoldása nem változik (természetesen a célfüggvény értéke igen), míg a másik táblázatban szerepl azonos elnevezés oszlopok a megfelel feltétel jobboldala változatásainak azon határait adják meg, melyen belül az optimális bázis nem változik. 13
3.2. Deníció. Ha az i-edik korlátozó feltétel jobb oldalának növelése nem módosítja az optimális bázist, akkor egy LP feladat i-edik korlátozó feltételéhez tartozó árnyékár az az érték, amennyivel az optimális z érték javul (maximumfeladat esetén a javulás növekedést, minimumfeladat esetén pedig csökkenést jelent), amikor az i-edik korlátozó feltétel jobb oldalát 1-gyel növeljük. Írjuk fel modellünket a következ alakban: Célfüggvény: max z = c 1 x 1 + c 2 x 2 Korlátozó feltételek: x 1 + x 2 k 1 10 x 1 + 4 x 2 k 2 10 x 2 k 3 Ekkor a lenti táblázatokból a következ ket sz rhetjük ki: A feladat optimális megoldása nem változik, ha (a felsoroltak közül egyszerre csak egy változtatható meg): 75 c 1 <. < c 2 40. Az optimális bázis nem változik, ha (a felsoroltak közül egyszerre csak egy változtatható meg): 5,8 k 1 <. 12 k 2 52. 0 k 3 50. Ha az optimális bázis nem változik, akkor: k 1 = 7 + 1 = 8 esetén max(z)= 370 + 0 = 370. k 2 = 40 + 1 = 41 esetén max(z)= 370 + 10 = 380. k 3 = 30 + 1 = 31 esetén max(z)= 370 1 = 369. 14
Csináljuk egy próba ellen rzést a Solverrel, hogy ténylegesen igazak-e a fenti állítások. Az együtthatókat tartalmazó táblánkban növeljük meg a rendelkezésre álló munkaórák számát 1-gyel. A többi paramatér változtatása nélkül a farmer így már heti 41 órát dolgozhat. 15
Az érzékenységjelentésb l kiolvasva a munkaóra feltétel árnyékára 10, tehát az alapfeladatra kapott maximális z értéknek ennyivel kellett n nie, amelyet az ellen rz táblánkban is láthatunk. A határok jelentésben az alsó, fels határ és a hozzájuk tartozó Cél eredmény oszlopok hordoznak számunkra érdekes információkat. Az alsó és fels határ elárulja, hogy az optimális megoldásból kiindulva a változóknak mekkora a legkisebb és legnagyobb felvehet értékük a korlátozó feltételek teljesülése mellett, a Cél eredmény pedig meghatározza, hogy az adott pontban milyen értéket vesz fel a célfüggvény. Például x 1 = 0 estén (természetesen a többi paraméter változtatása nélkül) z = 90. 3.2. Szállítási feladat A szállítási feladat megoldásához meg kell ismernünk néhány alapfogalmat. A kínálati pontok azon pontok halmaza, amelyekb l a szállítás történik, a keresleti pontok pedig azok, ahová a szállítás történik. A köztük zajló transzferálásnak költségét a változó költség írja le minden egyes kínálati-keresleti pontpárra külön-külön. Feladatunkban meghatározhatjuk, hogy a kínálati helyeinkr l hány egységet vagyunk képesek szállítani, felvev részr l pedig a szükséges mennyiséget tudjuk meghatározni. A szállítási feladatnak alapvet en három fajtája van. Az egyik amikor az összkínálat nagyobb az összkeresletnél, a másik amikor kisebb, a harmadik pedig ha megegyeznek. Utóbbi esetben kiegyensúlyozott szállítási feladatról beszélünk. Az els két esetben bevezethetünk egy ktív keresleti pontot, amelynek célja a fel nem használt készlet vagy a kielégítetlen kereslet jelzése. Utóbbi általában büntet költséget von maga után. 16
3.2.1. Modell felírása 3.2. Feladat. Egy vállalat három fogyasztónak szállít termékeket, mindegyiknek 30 egységet. A vállalatnak két raktára van. Az 1. raktárban 40 egység, a második raktárban pedig 30 egység áll rendelkezésre. Az alább látható táblázatban szerepelnek a raktárakból a fogyasztókhoz történ szállítások egységköltségei ($-ban). Minden egyes kielégítetlen fogyasztói keresletegységhez bírság tartozik: az 1. vev nél 90$ bírságköltség van, a 2. vev nél 80$, a 3. vev nél 110$. Minimalizáljuk a szállítási és hiányköltségek összegét. 2 Döntési változók: x ij = az i-edik raktárból a j-edik vev höz szállított egységek száma, ha i = 1, 2 és j = 1, 2, 3. x 3j = a j-edik vev kielégítetlen keresletegységének száma, ha j = 1, 2, 3. Korlátozó feltételek: Kínálati feltételek: x 11 + x 12 + x 13 40 x 21 + x 22 + x 23 30 Keresleti feltételek: x 11 + x 21 + x 31 30 x 12 + x 22 + x 32 30 x 13 + x 23 + x 33 30 El jelkorlátozó feltételek: x ij 0 ha, i = 1, 2, 3 és j = 1, 2, 3 2 Wayne L. Winston: Operációkutatás, Aula, 2003, 294. oldal 17
Célfüggvény: min z = szállítási költségek { }} { 35 x 11 + 25 x 12 + 15 x 13 + 50 x 21 + 40 x 22 + 10 x 23 + +90 x 31 + 80 x 32 + 110 x 33 } {{ } hiányköltségek 3.2.2. Megoldás Solver segítségével Ahogy azt eddig is tettük, töltsünk fel egy excel táblát az együtthatókkal. Kiszámoljuk a korlátozó feltételek baloldalának és a célfüggvény értékét az adott változóértékek mellett. A K18 mez re kattintva ezt a képletet fogjuk látni a szerkeszt lécben: Adjuk meg a Solver paramétereket. A célcella a K18 (ezt szeretnénk minimalizálni), a módosuló cellák pedig az A2, B2,..., I2 lesznek. Felvesszük a korlátozó feltételeinket, majd beállítjuk a lineáris modell és a nemnegatív feltételezéseket. A Megoldás gombra kattintva táblázatunkban megjelenik feladatunk optimális eredménye: 18
3.2.3. Megoldás elemzése Megoldásunk szerint a költségünk akkor lesz minimális, számszerint 3200$, ha az els raktárból 10 egységet az 1-es, 30-at a 2-es vev nek, a második raktárból a teljes készletet a 3-as vev nek szállítjuk. Így 20 kiegyenlítetlen keresletegysége lesz az els vev nek, amely után járó büntetés a teljes költségünk 56,25%-át teszi ki. A továbbiakban eredmény jelentésb l csak a korlátozó feltételek táblázatot fogom taglalni, mivel a másik kett a kapott eredmény vizsgálata után már nem információérték. A Status oszlop minden sorában az éppen értéket láthatjuk, ez elárulja, hogy mindegyik feltételnek a határán vagyunk. Írjuk fel modellünket a következ alakban: Célfüggvény: min z = c 11 x 11 + c 12 x 12 + c 13 x 13 + c 21 x 21 + c 22 x 22 + c 23 x 23 + Korlátozó feltételek: +c 31 x 31 + c 32 x 32 + c 33 x 33 x 11 + x 12 + x 13 k 1 x 21 + x 22 + x 23 k 2 x 11 + x 21 + x 31 k 3 x 12 + x 22 + x 32 k 4 x 13 + x 23 + x 33 k 5 Ekkor az érzékenységvizsgálat segítségével a következ ket állapíthajuk meg: A feladat optimális megoldása nem változik, ha (a felsoroltak közül egyszerre csak egy változtatható meg): 19
35 c 11 55. 55 c 12 25. 5 c 13 55. 30 c 21 <. 20 c 21 <. < c 23 30. 35 c 31 90. 80 c 32 <. 70 c 32 <. Az optimális bázis nem változik, ha (a felsoroltak közül egyszerre csak egy változtatható meg): 30 k 1 60. 20 k 2 30. 10 k 3 <. 10 k 4 40. 30 k 5 40. Ha az optimális bázis nem változik, akkor: k 1 = 40 + 1 = 41 esetén min(z)= 3200 55 = 3145. k 3 = 30 + 1 = 31 esetén min(z)= 3200 + 90 = 3290. k 4 = 30 + 1 = 31 esetén min(z)= 3200 + 80 = 3280. k 5 = 30 + 1 = 31 esetén min(z)= 3200 + 70 = 3270. A k 2 nem véletlenül lett kihagyva a felsorolásból. A táblázatban látható, hogy a hozzá tartozó Megengedhet növekedés 0, így nem tudjuk növelni a jobb oldal értékét 1-gyel, mert az optimális bázis változik. Tehát ez esetben az árnyékár nem értelmezhet. 20
A határok jelentésb l kiolvashatjuk, hogy az x 11, x 12, x 13, x 21, x 22 és x 23 közül egyiknek sem tudnánk értékét úgy növelni vagy csökkenteni az optimális megoldásból kiindulva, hogy ne sérüljenek a korlátozó feltételek. Az x 31, x 32 és x 33 Fels határára és Cél eredményére azért kaptunk #HIÁNYZIK-ot, mert ezeket a változókat akárhogy növeljük, a feltételek mindig teljesülni fognak. 3.3. Hozzárendelési feladat A hozzárendelési feladat általában egy speciális esete egy kiegyensúlyozott szállítási feladatnak, amelyben minden kínálat és kereslet 1. 3.3.1. Modell felírása 3.3. Feladat. Doc Councillman a 4 100 méteres vegyes váltóra válogatja össze úszócsapatát. Minden úszónak 100 métert kell úsznia vagy mellen, vagy háton, vagy pillangón, 21
vagy gyorson. Doc úgy gondolja, hogy mindegyik úszó tudja hozni az alábbi táblázatban leírt id ket (másodpercben). Ha a csapat összidejének minimalizálása a cél, akkor melyik úszó melyik úszásnemben induljon? 3 Legyen Gary Hall az egyes, Mark Spitz a kettes, Jim Montgomery a hármas és Chet Jastremski a négyes számú úszó. A gyors, mell, pillangó, hát pedig rendre az els, második, harmadik és negyedik versenyszám. Döntési változók: x ij = 1, ha az i-edik úszót indítjuk a j-edik versenyszámban x ij = 0, ha az i-edik úszót nem indítjuk a j-edik versenyszámban Korlátozó feltételek: Minden úszó csak egy versenyszámban indulhat: x 11 + x 12 + x 13 + x 14 = 1 x 21 + x 22 + x 23 + x 24 = 1 x 31 + x 32 + x 33 + x 34 = 1 x 41 + x 42 + x 43 + x 44 = 1 Minden úszásnemben csak egy versenyz indulhat: x 11 + x 21 + x 31 + x 41 = 1 x 12 + x 22 + x 32 + x 42 = 1 x 13 + x 23 + x 33 + x 43 = 1 x 14 + x 24 + x 34 + x 44 = 1 El jelkorlátozó feltételek: x ij 0 ha, i = 1, 2, 3, 4 és j = 1, 2, 3, 4 3 Wayne L. Winston: Operációkutatás, Aula, 2003, 323. oldal 22
Célfüggvény: min z = 54 x 11 + 54 x 12 + 51 x 13 + 53 x 14 + +51 x 21 + 57 x 22 + 52 x 23 + 52 x 24 + +50 x 31 + 53 x 32 + 54 x 33 + 56 x 34 + +56 x 41 + 54 x 42 + 55 x 43 + 53 x 44 3.3.2. Megoldás Solver segítségével Meglév paramétereinket rögzítsük egy excel táblázatban és használjuk az eddig alkalmazott Solver beállításokat! Az egyedüli különbség az el z feladatokhoz képest az az, hogy most a döntési változóink csak 0 vagy 1 értéket vehetnek fel. A korlátozó feltételeknél lév Hozzáadás gomb segítségével állítsuk be a megfelel cellákra a bin (bináris) feltételt. Esetünkben az összes második sorban szerepl mez re. Táblázatunkban az összetartozó sorokat azonos színnel jelöltem. 23
3.3.3. Megoldás elemzése Az optimális megoldás megjelent a táblázatunkban, amely szerint a csapat összideje a lehet legjobb esetben 207 másodperc. Ehhez az kell, hogy Gary Hall induljon pillangón, Mark Spitz háton, Jim Montgomery gyorson, Chet Jastremski pedig mellen. A Solver azon túl, hogy közölte velünk, optimális megoldást talált, a következ t is üzente, amikor a jelentéseket akartam elkészíteni: Az Érzékenység jelentés és a Határok jelentés nem bír jelentéssel egész érték korlátozó feltételek esetén. Ezt az okozta, hogy a módosuló cellákra bináris feltételt szabtunk. Létezik olyan algoritmus, amely nagyon hatékonyan megoldja a hozzárendelési feladatot. Ezt az algoritmust magyar módszernek hívjuk, három lépésb l áll: 1. lépés Keressük meg az m m-es költségmátrix minden sorában a legkisebb elemet. Képezzünk egy új mátrixot úgy, hogy a sor minden költségeleméb l kivonjuk a legkisebb költségelemet. Ebben az új mátrixban keressük meg minden oszlopban a legkisebb költségelemet. Képezzünk egy új mátrixot (ezt redukált költségmátrixnak nevezzük) úgy, hogy az oszlop minden költségeleméb l kivonjuk a legkisebb költségelemet. 2. lépés Rajzoljuk be a lehet legkevesebb olyan vonalat (vízszintesen és/vagy függ legesen), amelyek segítségével a redukált költségmátrixban található összes nulla lefedhet. Ha ehhez m fed vonal szükséges, akkor a mátrixban lév lefedett nullák között rendelkezésünkre áll az optimális megoldás. Ha m-nél kevesebb vonallal fedtük le az összes nullát, akkor a 3. lépés következik. 3. lépés Keressük meg a redukált költségmátrixban azt a legkisebb nemnulla elemet (nevezzük k-nak), amelyiket a 2. lépésben nem fedtünk le. Most vonjuk ki k-t a redukált költségmátrix minden nem lefedett eleméb l, valamint adjunk hozzá k-t a kétszer lefedett elemekhez. Térjünk vissza a 2. lépéshez. Ha a hozzárendelési feladat során maximalizálni szeretnénk, akkor a protmátrix minden elemét szorozzuk meg -1-gyel és ezután oldjuk meg minimum feladatként. Ha a sorok és oszlopok száma nem egyezik, akkor vezessünk be ktív pontokat, mert a magyar módszer kiegyensúlyozatlan feladatra nem feltétlenül ad helyes megoldást. A leírt algoritmus segítségével ellen rizzük le, hogy feladatunkra valóban optimális megoldást kaptunk-e a Solver által. Esetünkben a költségmátrix elemeit az egyes úszók úszásnemekben elért id eredményeik adják. Mátrixunk a következ képpen alakul: 24
A magyar módszer szerint a lefedett nullák között rendelkezésünkre áll az optimális megoldás (zölddel jelölve). Viszont vannak olyan sorok és oszlopok, amelyekben több nulla is szerepel. Keressünk olyanokat, amelyekben csak egyetlen nulla található. Esetünkben az els és harmadik sorban, valamint a második oszlopban egyetlen nulla van, így ezeken a helyeken szerepl költségelemek biztosan részei lesznek az optimális megoldásnak. Mivel minden sorból és oszlopból egy elemet választhatunk ki, így a már meglév három meghatározza a negyediket. Az algoritmusra hagyatkozva Gary Hallnak pillangón, Mark Spitznek háton, Jim Montgomerynek gyorson, Chet Jastremskinek pedig mellen kell indulnia ahhoz, hogy a csapat összideje a legkisebb legyen. Ez a megoldás megegyezik a Solver által kiszámolttal. 3.4. Minimális költség hálózati folyam problémák Egyes optimalizációs feladatoknál sokat használhat, ha grakusan tudjuk szemléltetni. A soron következ példánál egy hálózat segítségével fogunk modellezni. 3.4.1. Modell felírása Az eddig ismertetett feladatok mind speciális esetei a minimális költség hálózati folyam problémának (MKHFP). A modell felírása során a következ ket fogjuk használni: x ij = az i csúcsból a j csúcsba az (i, j) élen keresztül haladó folyam mennyisége 25
b i = az i csúcs nettó kibocsátása (kiáramlás-beáramlás) c ij = az i csúcsból a j csúcsba az (i, j) élen keresztül küldött egységnyi folyam szállítási költsége L ij = az (i, j) élen átmen folyam alsó korlátja (ha nincs alsó korlát, legyen L ij = 0) U ij = az (i, j) élen átmen folyam fels korlátja (ha nincs fels korlát, legyen U ij = ) Ezeket használva az MKHFP felírása: min x ij j k minden élre x ki = b i L ij x ij U ij c ij x ij ( i csúcsra) ( (i, j) élre) 3.4. Feladat. Az Oilco olajkútjai San Diego, illetve Los Angeles közelében vannak. A San Diego melletti mez b l napi legfeljebb 500 000 hordó, a Los Angeles melletti mez b l napi legfeljebb 400 000 hordó olaj termelhet ki. A nyersolajat a dallasi vagy a houstoni nomítóba küldik, amelyek közül egyik sem képes napi 500 000 hordónál több olajat feldolgozni. Dallasban 100 000 hordó nomítása 700$-ba, Houstonban 900$-ba kerül. A nomított olajat Chicagoba, illetve New Yorkba szállítják: Chicagoba 400 000 hordónyit, New Yorkba 300 000 hordónyit naponta. Az alábbi táblázat mutatja, hogy mennyi 100 000 hordó (nyers vagy nomított) olaj szállítási költsége ($-ban) az egyes helyszínek között. Adjunk meg egy MKHFP-t, amellyel minimalizálható az igények kielégítésének összes költsége! 4 4 Wayne L. Winston: Operációkutatás, Aula, 2003, 381. oldal 26
A megoldás során egy egység alatt 100 000 hordó olajat értünk. Egy irányított gráf segítségével szemléltetem a feladatot. A csúcsok számai mögött a városok kezd bet jét tüntettem fel zárójelben az átláthatóság kedvéért. Döntési változók: x ij = az i-edik városból a j-edikbe szállított olaj mennyisége Nettó kibocsátás: b 1 + b 2 = 7 b 3 = 0 b 5 + b 6 = 7 b 4 = 0 Az egyes pontpárokra vetített költségek (szállítási + nomítási): c 13 = 300 + 700 = 1000 c 35 = 450 c 14 = 110 + 900 = 1010 c 36 = 550 c 23 = 420 + 700 = 1120 c 45 = 470 c 24 = 100 + 900 = 1000 c 46 = 530 A városok közötti szállítások alsó korlátja: L ij = 0 ( (i, j) élre) A városok közötti szállítások fels korlátja: U i3 = 500000 U i4 = 500000 minden más esetben: U ij = 27
Korlátozó feltételek: Kínálati feltételek: x 13 + x 14 4 x 23 + x 24 5 A nomítók kapacitására vonatkozó feltételek: x 13 + x 23 5 x 14 + x 24 5 Keresleti feltételek: x 35 + x 45 = 3 x 36 + x 46 = 4 A nettó kibocsátásra vonatkozó feltételek: x 35 + x 36 x 13 x 23 = 0 x 45 + x 46 x 14 x 24 = 0 El jelkorlátozó feltételek: Célfüggvény: x ij 0 ( ij-re) min z = 1000 x 13 + 1010 x 14 + 1120 x 23 + 1000 x 24 + +450 x 35 + 550 x 36 + 470 x 45 + 530 x 46 3.4.2. Megoldás Solver segítségével Az együtthatókkal feltöltött táblázat 4-5. sorában a kínálatra, 6-7-ben a kapacitásra, 8-9-ben a keresletre, 10-11-ben pedig a nettó kibocsátásra vonatkozó feltételeket láthatjuk. A hozzájuk tartozó befüggvényezett mez ket velük azonos színnel jelöltem. Az eddig használt beállításainkon nem kell változtatni. 28