• Nem Talált Eredményt

A disztribúciós módszer

In document LOGISZTIKAI TERVEZÉS (Pldal 45-50)

Jegyzetek, kérdések

3. A TERVEZÉS MÓDSZEREI ÉS MODELLJEI

4.3. A disztribúciós módszer

10 ,

10 ,

10 ,

10 ,

30 ,

50 21 22 31 33 34

13xxxxx

x A célfüggvény értéke:

z=1∙50+2∙30+1∙10+1∙10+1∙10+1∙10=150.

Az eredményeket összehasonlítva a Vogel-Korda-féle eljárással kapott eredményekkel meg-állapíthatjuk, hogy a korlátozás szétválasztás is optimumot adott. Természetesen az opti-mumban ennél az eljárásnál sem lehetünk biztosak.

4.2. példa: Oldjuk meg a következő szállítási feladatot a korlátozás és szétválasztás mód-szerével:

2 M 0 5 70

3 7 15 M 100

M 0 M 6 200

50 150 50 150

4.3. A disztribúciós módszer

A szállítási feladat egzakt megoldásai között kitüntetett szerepe van a lineáris programozás-ban általánosan alkalmazható szimplex-módszernek, amely a korábbi tanulmányokból isme-retes. A szimplex-táblába foglalt modellből ugyanis egyértelműen látható a feladat speciális struktúrája. Ez lehetővé teszi a szimplex algoritmusnál kisebb számítás és memóriaigényű eljárások alkalmazását, nevezetesen a magyar és a disztribúciós módszerét.

A (4.2), (4.3) feltételek és a (4.5) célfüggvény alapján az előző pontban megfogalmazott példát szimplex-táblába foglalhatjuk (4.1. táblázat).

A (4.2) és (4.3) feltételek egy m+n egyenletből álló egyenletrendszert határoznak meg, ahol az ismeretlenek száma m∙n. A táblából látható, hogy egy olyan lineáris programozási fel-adattal állunk szemben, ahol a feltételi egyenletek csak 0 és 1 együtthatójú xij tagokat tar-talmaznak, és az együtthatómátrix oszlopvektorai, az ei n elemű és az ej m elemű egységvek-torok.

A tábla alapján belátható az is, hogy a feladat duál párja, ha ui-vel és vj-vel jelöljük a duálváltozókat:

(4.7) ui vj cij (i1,..., ;n j1,..., )m (4.8) i fiuijrjvjzmax.

A feladat felépítése lehetővé teszi, hogy a szimplex-tábla helyett az ún. disztribúciós táb-lából induljunk ki, amely csak a szimplex-tábla peremadatait (C, f, r) tartalmazza. Később látni fogjuk, a disztribúciós táblán kijelölhető a primál feladat egy lehetséges bázismegol-dása, és elvégezhető a bázismegoldás javítása anélkül, hogy a szimplex-táblán belüli válto-zásokat nyilvántartanánk.

4.1. táblázat

A mintapélda szimplex-táblája x11 x

12 x

13 x

14 x

21 x

22 x

23 x

24 x

31 x

32 x

33 x

34

u1 1 1 1 1 0 0 0 0 0 0 0 0 50

u2 0 0 0 0 1 1 1 1 0 0 0 0 40

u3 0 0 0 0 0 0 0 0 1 1 1 1 30

v1 1 0 0 0 1 0 0 0 1 0 0 0 40

v2 0 1 0 0 0 1 0 0 0 1 0 0 10

v3 0 0 1 0 0 0 1 0 0 0 1 0 60

v4 0 0 0 1 0 0 0 1 0 0 0 1 10

6 4 1 5 2 1 3 8 1 2 1 1 0

A disztribúciós módszer alkalmazásának előfeltétele a (4.4) feltétel teljesülése, ami miatt a szimplex-tábla n+m egyenlete közül csak n+m1 független egymástól. Ebből viszont az következik, hogy a bázismegoldásnak n+m1 eleme van, mivel a kötött ismeretlenek száma megegyezik az együtthatómátrix rangjával. A (4.7) duál feltételek pedig a kötött helyeken egyenlőség formájában teljesülnek. Ezt a megállapításunkat az optimalitás vizsgálat során fel fogjuk használni.

4.3.1 Az indulóprogram előállítása

Az indulóprogram (az első bázismegoldás) előállítására az irodalomban több módszer isme-retes. Többek között a Vogel-Korda-féle eljárás is alkalmazható. Itt most a sor és oszlop minimum módszert ismertetjük. A módszer bemutatását összekötjük az alkalmazással, ezért írjuk fel ismét a mintapéldánk induló disztribúciós tábláját, amelyben nyomon követhetjük a megoldás lépéseit.

R1 R2 R3 R4 fi

F1 6 4 150 5 50

F2 220 110 3 810 40 F3 120 2 110 1 30

rj 40 10 60 10

a) Az fi és rj elemek között megkeressük a legnagyobbat. A példában r3=60.

b) A kiválasztott feladó sorában, vagy megrendelő oszlopában megkeressük a legkisebb költségű viszonylatot (c13=1), és erre a helyre akkora mennyiséget programozunk, amennyit az fi és rj korlátok megengednek. A példában f1< r3, így x13=50.

c) A programozást a következő legkisebb költségű helyen folytatjuk, miközben betart-juk a következő szabályokat:

Mindig maradunk egy sorban vagy oszlopban, amíg az illető sort vagy oszlopot teljesen ki nem merítettük. A le nem kötött fi és rj értékek közül mindig a kisebbet programoz-zuk.

Ha egyszerre csökken 0-ra a feladó készlete és a megrendelő igénye, akkor a feladatot degeneráltnak nevezzük. Ilyenkor a következő legkisebb költségű helyre xij=0 mennyi-séget programozunk.

d) A programozást addig folytatjuk, amíg az összes készletet, illetve igényt szét nem osztottuk.

A továbbiakban azokat a helyeket, ahová programoztunk, kötött helynek, a többit szabad-helynek fogjuk nevezni. Az indulóprogramot a bázis javítása előtt célszerű ellenőrizni. Ha betartottuk a szabályokat, akkor a kötött helyek száma n+m–1, és teljesülnek a (4.2), (4.3) feltételek.

A példánk indulóprogramja az elosztás sorrendjében:

x13=50, x33=10, x31=20, x21 = 20, x22= 10, x24=10, a célfüggvény pedig z=210.

4.3.2 Optimalitás vizsgálat

Az indulóprogram kielégíti a (4.1)-(4.4) feltételeket. A kérdés ezek után már csak az, mi-ként dönthetjük el, hogy a bázismegoldás optimális-e, vagy pedig javítható.

Az optimalitás feltételeit, mint tudjuk a szimplex-módszernél a dualitási tétel határozza meg. Ha a primál megoldás mellett ismernénk a duálváltozók (ui, vj) értékeit, akkor egysze-rűen dönthetnénk. A disztribúciós táblából a duálváltozók sajnos nem olvashatók ki, de ki-számíthatók, mivel a primálbázisba vont vektorokhoz tartozó duálfeltételek mindig egyenlő-ség formájában teljesülnek, azaz

ui+vj =cij.

A továbbiakban az ui és vj duálváltozókat a disztribúciós módszernél használatos terminoló-giának megfelelően potenciáloknak nevezzük.

Visszatérve az előzőekhez a potenciálok száma n+m, a primálbázisba vont vektorokhoz tartozó duálfeltételek száma n+m–1, így egy potenciál értéke szabadon választható, a többi pedig a

(4.9) cij(ui+vj)=0

egyenletekből számítható. Az így meghatározott potenciálokat felhasználva megvizsgáljuk, hogy a szabadhelyekre teljesül-e a (4.7) feltétel, azaz a

(4.10) dij=cij(ui+vj)0.

Ha található olyan szabadhely, ahol dij<0, akkor a program javítható. A gyakorlatban a po-tenciálok a következő tábla alapján számíthatók:

v1 v2 v3 v4

u1 1

u2 2 1 8

u3 1 1

Legyen u1=0, akkor

v3=c13u1=1 u3=c33v3=0

v1=c31u3=1 u2=c21v1=1 v2=c22u2=0 v4=c24u2=7 A kapott értékeket a (4.10)-be helyettesítve:

d11=5, d12=4, d14=2, d23=1, d32=2, d34=6.

Az indulóprogram tehát javítható.

4.3.3 A bázismegoldás javítása

A bázismegoldást úgy javíthatjuk, hogy azt a helyet, amelyhez a legnagyobb abszolút értékű negatív dij tartozik, bevonjuk a bázisba. A szállítási feladat speciális felépítése egy viszony-lag egyszerű, mechanikusan alkalmazható vektorcserére ad lehetőséget. Ennek tárgyalása előtt bevezetjük a hurok fogalmát.

Ha a C költségmátrix bármelyik elemétől kiindulva bástyamozgással haladunk úgy, hogy ugyanazon sorban és oszlopban csak két elemet érintünk, akkor hurkot kapunk. Bizonyítha-tó,* ha ismert egy bázismegoldás, akkor bármely szabadhelyhez egyértelműen hozzárendel-hető egy olyan hurok, amelynek egyik csúcspontja a szóban forgó szabadhely, a többi csú-csa pedig az adott bázismegoldás egy-egy eleme.

Az elmondottak egyszerű eljárást adnak a vektorcserére. Megrajzoljuk a bevonandó sza-badhelyhez tartozó hurkot. A hurokban a szasza-badhelyhez tartozó elemet, majd ezt követően minden másodikat pozitívnak, a többit negatívnak tekintjük. A negatív csúcsokon lévő xij mennyiségek közül a legkisebbet a negatív csúcsokon álló mennyiségekből levonjuk, a po-zitív csúcsokon állókhoz pedig hozzáadjuk. Végül a negatív csúcsok közül azt, amelynél az xij mennyiség 0-ra csökkent, elhagyjuk a hurokból, de mindig csak egy csúcsot. Degenerá-ció esetén ugyanis több helyen is 0-ra csökkenhet az xij. A megmaradó hurok csúcspontjai, és az előző bázismegoldás hurkon kívüli elemei alkotják az új bázist.

A hurok megszerkesztéséhez a következő egyszerű eljárás alkalmazható [16]. A bázisba bevonandó helyet tekintsük kötött helynek, majd

a) fedjük le azokat a sorokat, amelyekben egy fedetlen kötött hely van, b) fedjük le azokat az oszlopokat, amelyekben egy fedetlen kötött hely van.

Az a) és b) lépéseket addig ismételjük, amíg újabb sorokat és oszlopokat lehet lefedni. Az eljárás végén a fedetlen kötött helyek és a bevonandó szabadhely alkotják a hurkot.

A leírt eljárást alkalmazzuk a példán. A dij értékek alapján a 3-4 szabadhelyet kell bevonni a bázisba. A disztribúciós táblán megszerkesztjük a hurkot, amelynek csúcspontjai: 3-4, 3-1, 2-1, 2-4.

R1 R2 R3 R4 fi

F1 6 4 150 5 50

F2 2+20 110 3 8−10 40 F3 1−20 2 110 1+* 30

rj 40 10 60 10

* A bázismegoldások feszítőfák, amelyekhez egy élet (nem kötött csúcsot) hozzáadva hurkot kapunk.

A negatív csúcsok között x24 a legkisebb, ezt levonjuk a negatív csúcson állókból, és hozzá-adjuk a pozitív csúcson állókhoz.

x34=0+10=10, x31=2010=10, x21=20+10=30, x24=1010=0.

Az x24-et elhagyjuk, így az új bázismegoldás:

R1 R2 R3 R4 fi

F1 6 4 150 5 50

F2 230 110 3 8 40 F3 110 2 110 110 30

rj 40 10 60 10

x13=50, x21=30, x22=10, x31=10, x33=10, x34=10

Az optimalitás vizsgálat elvégzése után már valamennyi szabadhelyen a dij értéke pozitív, vagyis a kapott bázismegoldás optimális. A célfüggvény értéke z=150.

A megoldás részletes ismertetése után foglaljuk össze a disztribúciós módszer algoritmusát:

a) A feladatot a (4.4) feltételnek megfelelő alakra hozzuk fiktív megrendelő vagy fel-adó beállításával.

b) Felírjuk a feladat induló tábláját:

C f

r

c) Az előzőekben leírt módon indulóprogramot készítünk, vagyis keresünk egy bázis-megoldást.

d) A kötött helyekre felírható ui+vj=cij egyenletrendszer segítségével kiszámítjuk a po-tenciálokat.

e) A szabadhelyekre írható dij=cij(ui+vj)0 feltételek alapján megvizsgáljuk a bázis-megoldás optimalitását. Ha a feltétel valamennyi ij párra teljesül, akkor a bázis-megoldás op-timális.

f) A szabadhelyek közül azt, ahol a dij negatív és a legnagyobb abszolút értékű, bevon-juk a bázisba. A vektorcserét az ismertetett módon végezzük el. A vektorcsere után visszatérünk a d ponthoz.

4.3 példa: Négy raktár öt fogyasztót lát el. Az egységnyi termék raktározási költsége az egyes raktárakban rendre 30, 40, 30, 50 Ft. A raktárak kapacitása: [3000, 2000, 4000, 3500]

egység. A fogyasztók igényei: [2000, 800, 1200, 1000, 1800] egység. A fajlagos szállítási költség az egyes viszonylatokban Ft/egység mértékegységben:

F1 F2 F3 F4 F5

R1 0 20 10 20 30

R2 30 0 20 10 10

R3 10 20 0 0 20

R4 30 20 10 20 0

Határozzuk meg az optimális szállítási programot, továbbá kérdés, hogy megszüntethető-e valamelyik raktár anélkül, hogy a szállítási és raktározási költség növekedne? Alkalmazzuk

a disztribúciós módszert.

In document LOGISZTIKAI TERVEZÉS (Pldal 45-50)