Operációkutatás 1 NYME KTK, gazdálkodás szak, levelező alapképzés 2002/2003. tanév, II. évf. 2.félév Előadó: Dr. Takách Géza NyME FMK Információ Technológia Tanszék 9400 Sopron, Bajcsy Zs. u. 9. GT fszt. 3. (99) 518 640 (30) 5600 785 takach@inf.nyme.hu http://titanic.nyme.hu/ takach 4. konzultáció: Szállítási feladat Mintafeladat. Két raktárban (feladóhelyek) rendre 20 illetve 25 raklap áru van, ezeket kell elszállítani három üzletbe (rendeltetési helyek), amelyek rendre 10, 20 illetve 15 raklap áruratartanak igényt. A szállítási költségek táblázata: F 1 2 3 5 20 Hogyan szervezzük a szállítást, hogy minimális legyen a szállítási összköltség? Visszavezetés a hozzárendelési feladatra. Ez egy 45 45-ös hozzárendelési feladat, F 1 -nek 25 sor felel meg, R 1 -nek 10 oszlop, stb. A feladat LP modellje A költségek és kapacitások: F 1 2 3 5 20 Az LP model: A szállított mennyiségek: F 1 x 11 x 12 x 13 20 F 2 x 21 x 22 x 23 25 x 11 + x 12 + x 13 = 20 x 21 + x 22 + x 23 = 25 x 11 + x 21 = 10 x 12 + x 22 = 20 x 13 + x 23 = 15 2x 11 + 3x 12 + 5x 13 + 4x 21 + x 22 + 2x 23 min
LP modell általánosan 2 Adott m feladóhely: F 1,..., F m, és n rendeltetési hely: R 1,..., R n. Az i-edik feladóhelyen f i mennyiségű homogén áru áll rendelkezésre, ezeket kell elszállítani a rendeltetési helyekre. A j-edik rendeltetési hely r j árumennyiséget igényel. Feltételezzük, hogy a készletek és az igények összhangban vannak, azaz m f i = i=1 r j. Jelölje c ij az egységnyi áru szállítási költségét az i-edik feladóhelyről a j-edik rendeltetési helyre történő szállításkor: R 1 R 2... R n F 1 c 11 c 12... c 1n F 2 c 21 c 22... c 2n.... F m c m1 c m2... c mn Jelölje x ij az i-edik feladóhelyről a j-edik rendeltetési helyre szállítandó árumennyiséget: R 1 R 2... R n F 1 x 11 x 12... x 1n f 1 F 2 x 21 x 22... x 2n f 2..... F m x m1 x m2... x mn f m r 1 r 2... r n A következő feltételek azt fejezik ki, hogy a feladóhelyekről minden árut el kell szállítani, és a rendeltetési helyek igényét ki kell elégíteni: m x ij = R j (j = 1,..., n) i=1 x ij = F i (i = 1,..., m) x ij 0 (i = 1,..., m; j = 1,..., n) A célfüggvény, aminek a minimumát keressük, K = i=m c ij x ij min. Ez egy lineáris programozási feladat: mn változó, m + n feltétel. A mátrixos alak feleslegesen sok nullát tartalmaz, hiszen egy egyenlőtlenségben m vagy n 1-es szerepel, a többi elem nulla. Ezért célszerűbb a bázistáblánál tömörebb írásmód használata: disztribúciós táblázat. Ez nem jelent mást, mint hogy a költségmátrixban bekeretezzük azon viszonylatoknak megfelelő elemeket, ahol szállítunk és azt is melléírjuk, hogy abban a viszonylatban mennyit szállítunk. Tétel. Ha feladóhelyek száma m arendeltetési helyek száma n, akkor az (m+n) (mn)-es együtthatómátrix rangja m+n 1. Bizonyítás. Könyvben (2.1. Tétel). Tétel. A szállítási feladatnak mindig van lehetséges megoldása. Bizonyítás. A bizonyításban módszert is adunk egy lehetséges megoldás megkeresésére. (Disztribúciós módszer)
Disztribúciós módszer 3 A mintafeladaton: F 1 2 10 3 5 20 10 0 F 1 2 10 3 5 10 20 10 0 F 2 4 1 20 2 25 5 0 0 5 F 1 2 10 3 5 10 20 10 0 0 5 F 1 2 10 3 5 10 20 10 0 F 2 4 1 20 2 5 25 5 0 0 0 5 0 Disztribúciós módszer Válasszuk ki a C költségmátrix egy c ij elemét, s legyen A c ij elemet bekeretezzük, fölé írva x ij értékét. x ij = min(f i, r j ). Ha f i < r j, azaz x ij = f i, akkor az F i készlete kiürült, míg R j igénye x ij -vel csökkent. Ennek megfelelően az i-edik sort töröljük, r j -t pedig r j f i -re változtatjuk. Ha r j < f i, azaz x ij = r j, akkor az R j igényeit kielégítettük, míg F i készlete x ij -vel csökkent. Ennek megfelelően az j-edik oszlopot töröljük, f i -t pedig f i r j -re változtatjuk. Ha f i = r j : degeneráció, ld. később. Ezt ismételgetve m + n 2 lépés után egyetlen sor és oszlop marad, amit már egyszerre törölhetünk. Tehát mindig m + n 1 viszonylatban fogunk szállítani. Azon c ij ket, ahol szállítunk, kötött elemeknek, a többit szabad elemeknek nevezzük. Megjegyzés. Belátható (kell is, ld. 2.2. Tétel a könyvben), hogy az így kapott megoldás bázismegoldása a szállítási feladathoz tartozó LP feladatnak. Optimum létezése Tétel. A szállítási feladat célfüggvénye korlátos a lehetséges megoldások halmazán. Bizonyítás. Mivel n x ij = f i (i = 1,..., n), ezért K = c ij x ij i=m c ij x ij i=m max c ij x ij = max c ij j j és ez már konstans. = i=m i=m max c ij f i, j i=m x ij = Megjegyzés. A könyvbeli bizonyításban durvább becslés szerepel.
Optimális-e az aktuális program? 4 A mintafeladat LP modellje: Duálisának feltételrendszere: x 11 + x 12 + x 13 = 20 x 21 + x 22 + x 23 = 25 x 11 + x 21 = 10 x 12 + x 22 = 20 x 13 + x 23 = 15 2x 11 + 3x 12 + 5x 13 + 4x 21 + x 22 + 2x 23 min u i + v j c ij (i = 1,..., m; j = 1,..., n), ahol az u i -k a sorokhoz, v j -k az oszlopokhoz tartozó változók. Ismert, hogy ezek előjelkötetlen változók, mert egyenleteknek felelnek meg. A feltételrendszer eltérésvektorokkal: u i + v j + δ ij = c ij (i = 1,..., m; j = 1,..., n), ahol δ ij 0. A duál feladat eltérésvektorának azon komponensei nullák lesznek, amelyeknek megfelelő primál változók a programban vannak, azaz ha x ij kötött elem, akkor δ ij = 0, azaz u i + v j = c ij. Módszer. 1. Adjunk meg olyan u i és v j elemeket, hogy a költségmátrix kötött c ij elemeire u i + v j = c ij teljesüljön. Ebben az egyenletrendszerben van egy szabad változó, így egy ismeretlen értéke szabadon választható. Szokásosan: u 1 = 0. 2. Képezzük azt a mátrixot, amelynek elemei Nyilvánvalóan δ ij = 0 a kötött elemeknél. δ ij = c ij u i v j. 3. Ha minden δ ij 0, akkor a duál feladat egy lehetséges megoldásáról van szó, ami azt jelenti, hogy a primál feladat aktuális megoldása, tehát az aktuális szállítási program optimális. Ha nem JAVÍTÁS. Mintafeladat. u i -k és v j -k meghatározása: meghatározása: v 1 = 2 v 2 = 4 v 3 = 5 u 1 = 0 2 10 3 5 10 u 2 = 3 4 1 20 2 5 δ 11 = c 11 u 1 v 1 = 2 0 2 = 0 δ 12 = c 12 u 1 v 2 = 3 0 4 = 1. A 1 elem mutatja, hogy az aktuális megoldás nem optimális. = [ 0 1 0 5 0 0 ],
Hurkok 5 Definíció. Huroknak nevezzük a költségmátrix elemeinek olyan sorozatát, ahol a szomszédos elemek felváltva vannak egy sorban ill. egy oszlopban (az utolsó elem szomszédosnak számít az elsővel), továbbá egyik sorban és oszlopban sincs kettőnél több kiválasztott elem. Tétel. Bármely hurok elemeihez tartozó a ij vektorok lineárisan függő rendszert alkotnak. Ha egy vektort elghagyunk közülük, akkor lineárisan független rendszert kapunk. Bizonyítás. Nem kell. Tétel. Ha egy m n-es disztribúció táblázatban m + n 1 kötött elem van, akkor minden szabad elemet pontosan egy olyan hurok tartalmaz, melynek összes többi eleme kötött Bizonyítás. Nem kell. A program javítása A javítás menete: 1. Válasszunk egy negatív δ ij -t. A költségmátrix ennek megfelelő szabad eleméből kötött elem lesz. 2. Keressük meg a megfelelő hurkot. 3. A hurok mentén felváltva növeljük ill. csökkentsük szállítandó mennyiséget (az új kötött elemen növeljük!). A növelés/csökkentés mértékét a legkisebb csökkentendő mennyiség adja (negatívba nem mehet át!); ez az átalakítás után szabad elem lesz A mintapéldán: = [ 0 1 0 5 0 0 ] 2 10 3 5 10 4 1 20 2 5 A 3 és a 2 költségen szállított mennyiség nő, az 1 és az 5 költségen szállított csökken. A szűk keresztmetszetet az jelenti, hogy az 5 költségű viszonylatban 10-nél többel nem lehet csökkenteni. Ez az elem tehát kikerül a programból: OPTIMUM!!! 2 3 4 0 2 10 3 1 0 5 = 2 4 1 10 2 15 Disztribúciós módszer (összefoglalás) [ 0 0 1 4 0 0 ] 1. Indulóprogram meghatározása 2. u i -k és v j -k meghatározása a kötött elemek segítségével. 3. A mátrix meghatározása az u i -k és v j -k segítségével. 4. Ha -nak nincs negatív eleme, akkor a jelenlegi program optimális. STOP 5. Ha -nak van negatív eleme, akkor a. Keresünk egy hurkot a költségmátrix megfelelő elemén át. b. A hurok mentén javítjuk a programot, majd GOTO 2.
Redukálás 6 Tétel. Ha a költségmátrix egy sorának vagy oszlopának minden eleméhez ugyanazt a számot adjuk, vagy abból ugyanazt a számot kivonjuk, ekvivalens feladatot kapunk. Ugyanott lesz az optimum, csak értéke lesz más. Bizonyítás. Ha az i-edik sorból kivonunk c-t, akkor a célfüggvény értéke minden programban cf i -vel csökken, ami független a programtól. Módszer az indulóprogram meghatározására A fenti módszerben tetszőleges volt a költségmátrix elemeinek kiválsztása azokból a sorokból és oszlopokból, amiket még nem húztunk ki. Szeretnénk úgy választani, hogy már az indulóprogram is minél közelebb legyen az optimumhoz. Mohó módszer: mindig a legkisebb költségen szállítunk. Ez nem vált be! Vogel-Korda-módszer: mindig arra az elemre programozunk, amelyre ha nem programoznánk, rossz költségalakulást jelentene. Minden sorra és oszlopra meghatározzuk a legkisebb és a második legkisebb elem különbségét (0 is lehet!), és ahol ez a legnagyobb, arra a minimális elemre programozunk. Rendkívüli esetek. Degeneráció az indulóprogramban. Előfordulhat, hogy az indulóprogram meghatározásakor egy elem sorának és oszlopának aktuális kapacitása megegyezik. Ilyenkor csak a sorát vagy az oszlopát húzzuk ki, a másik kapacitása nulla lesz. Ilyenkor biztosan szükség lesz egy olyan viszonylat kiválasztására, amelyben nulla mennyiségű árut szállítunk. Degeneráció menet közben. Előfordulhat, hogy egy javításkor egy hurokban több helyen is megjelenik a szűk keresztmetszet. Fontos viszont, hogy ilyenkor csak az egyiket vegyük ki a programból, a másikat hagyjuk benne nulla szállított áruval. Mindkét előző esetben előfordulhat, hogy az optimális megoldás már nem lesz degenerált, de az is lehet, hogy az marad. Alternatív optimum. Ha a mátrixban nincs negatív elem, de szabad elemnek megfelelő helyen is van benne nulla, akkor a duál feladat degenerált, azaz a primál szállítási feladatnak altaernatív optimuma van. Ezt úgy lehet megtalálni, ha a "javítást" ennél a szabad elemnél végezzük el. Eltérő kereslet és kínálat. Ha pl. nagyobb a kereslet, mint a kínálat, akkor egy névleges feladóhelyet iktatunk be, akkora kapacitással, minta amekkora a túlkereslet. Azokat az igényeket, amiket innen kellene kielégíteni az optimális megoldásban, nem elégítjük ki. Tiltott viszonylatok. Ha egy feladóhely és egy rendeltetési hely között tilos a szállítás, akkor oda végtelen költséget kell írni. Ilyenkor szokás szerint c =. Korlátozott útvonal. Előfordulhat, hogy egy viszonylatban szállíthatunk ugyan, de csak korlátozott mennyiségben. ld. 2.9. Példa illetve 2.7. Tétel.