Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBéla Kerekes Megváltozta több, mint 7 éve
1
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék ET Erőforrás tervezés Resource Planning 2016/17 2. félév 6. Előadás (9.hét) Dr. Kulcsár Gyula egyetemi docens
2
Egyutas többoperációs ütemezési feladatok Többutas többoperációs ütemezési feladatok
3
Egyutas többoperációs ütemezési feladatok: F|perm| 𝐶 𝑚𝑎𝑥
F2|perm| 𝐶 𝑚𝑎𝑥 Johnson-algoritmus két gépre F3|perm| 𝐶 𝑚𝑎𝑥 Johnson-algoritmus kiterjesztése három gépre Heurisztikus algoritmusok háromnál több gépre Palmer-módszer Dannenbring-módszer CDS heurisztika Most az egyutas, többoperációs ütemezési feladatok megoldásával foglalkozunk. A nagyszámú lehetséges célfüggvény közül az utolsóként elkészülő munka befejezési időpontjának minimalizálását vizsgáljuk. A feladat bonyolultsága miatt főként a gyakorlatban használható heurisztikus megoldási módszerekre koncentrálunk.
4
Az egyutas többoperációs F|| 𝐶 𝑚𝑎𝑥 feladatok jellemezői
Feltételezzük, hogy az erőforrások az ütemezési időszakban folyamatosan rendelkezésre állnak, az erőforrások egyszerre csak egy munkán dolgozhatnak, a munkák legkorábbi indítási időpontja nulla: ri = 0 (i=1, 2, …, n), minden egyes munkához adott számú m operáció tartozik, melyeknek pontosan ismert a végrehajtási ideje: pi,j (i=1, 2, …, n; j=1, 2, …, m;), az operációk végrehajtásának sorrendje kötött és minden munka esetében azonos, az operációk végrehajtása nem szakítható meg, a gépek között a munkák várakozhatnak, a műveletközi tárolók mérete nem korlátos, az ütemezés célja az utolsóként elkészülő munka befejezési időpontjának minimalizálása.
5
Az egyutas többoperációs feladatok jellemezői
Az F modelleknek két jellemző változatát szokás megkülönböztetni a munkák végrehajtási sorrendjére vonatkozó korlátozástól függően: Előzéses változat: F|| 𝐶 𝑚𝑎𝑥 A munkák végrehajtási sorrendje gépenként eltérő lehet (az egymás után elhelyezett gépek között a munkák megelőzhetik egymást). Előzés nélküli változat: F|perm| 𝐶 𝑚𝑎𝑥 A munkák végrehajtási sorrendje minden gépen azonos, nem előzhetik meg egymást. Megjegyzés: Az előzés nélküli változat az előzéses változat speciális esete.
6
Ütemtervek reprezentálása F|| 𝐶 𝑚𝑎𝑥 esetben
Az általános F|| 𝐶 𝑚𝑎𝑥 esetben egy ütemterv reprezentálására a gépek számának megfelelő darabszámú vektort kell alkalmazni. Minden gépnek van egy saját ütemezési vektora, amelyik tartalmazza az adott gépen a munkák indítási sorrendjét. A lehetséges megoldások száma: (n!)m.
7
Ütemtervek reprezentálása F|| 𝐶 𝑚𝑎𝑥 esetben
Példa: Munkák száma: n = 5 Munkák halmaza: 𝐽 1 , 𝐽 2 , 𝐽 3 , 𝐽 4 , 𝐽 5 Gépek száma: m = 3 Gépek halmaza: 𝑀 1 , 𝑀 2 , 𝑀 3 A lehetséges megoldások száma: (5!)3 =
8
Ütemtervek reprezentálása F|| 𝐶 𝑚𝑎𝑥 esetben
Egy lehetséges ütemterv reprezentálása: Ebben az illusztratív példában az 𝑀 1 és 𝑀 2 gép között a 𝐽 3 munka megelőzi a 𝐽 5 munkát és az 𝑀 2 és 𝑀 3 gép között a 𝐽 4 munka megelőzi a 𝐽 2 munkát. Megjegyzés: Minden gépnek saját ütemezési vektora van. A vektorok hossza megegyezik minden gépen a munkák számával. 𝑀 1 𝐽 5 𝐽 3 𝐽 1 𝐽 2 𝐽 4 𝑀 2 𝑀 3
9
Az F|perm| 𝐶 𝑚𝑎𝑥 feladat megoldásainak reprezentálása
Az általános F|| 𝐶 𝑚𝑎𝑥 feladatnak egy speciális esete az F|perm| 𝐶 𝑚𝑎𝑥 feladat, melyben szigorú előírás, hogy a munkák a gépeken azonos sorrendben haladnak át. Az egyégpes esettel megegyező módon a lehetséges ütemtervek száma itt is: n! Egy lehetséges megoldás (permutáció) egy n elemű vektorral reprezentálható. A vektor elemeinek sorszáma mutatja a munka végrehajtási sorban elfoglalt helyét.
10
Az F|perm| 𝐶 𝑚𝑎𝑥 feladat megoldásainak reprezentálása
Példa: A munkák száma n = 5 A gépek száma: m = 3 A lehetséges ütemtervek száma: n! = 5! = 120 Egy lehetséges ütemterv reprezentálása: Végrehajtási sorrend minden gépen J1 → J3 → J4 → J2 → 𝐽 5 : Megjegyzés: Minden gépnek egy közös ütemezési vektora van. MEMOOC-BAN JAVÍTANDÓ A „Végrehajtási sorrend minden gépen J1 → J3 → J4 → J2:” csak 4 munka szerepel benne 𝐽 5 J3 J1 J2 J4
11
Ütemterv végrehajtásának szimulációja F|perm| 𝐶 𝑚𝑎𝑥 esetben
Feladat: Adott az F|perm| 𝐶 𝑚𝑎𝑥 feladat az alábbi időadatokkal: A munkák száma n = 5 A gépek száma: m = 4 Adott a következő ütemterv: S = {J1, J2, J3, J4, J5} Ábrázolja az ütemterv végrehajtásának időbeli lefutását Gantt-diagrammal. Határozza meg az utolsó munka befejezési időpontját ( 𝐶 𝑚𝑎𝑥 )! pi,j M1 M2 M3 M4 J1 3 4 6 7 J2 5 J3 8 2 J4 1 J5
12
Ütemterv végrehajtásának szimulációja F|perm| 𝐶 𝑚𝑎𝑥 esetben
Megoldás: Induljunk az első gép első munkájától. Ábrázoljuk a munka végrehajtását időarányos szimbólummal (vonal vagy téglalap). Amikor az első munkát befejezte az első gép azonnal indul a második gépen az első munka valamint az első gépen a második munka. Az első gép folyamatosan dolgozik, nem várakozik. Az első munka sem várakozik a gépek előtt. Egy közbenső gépen egy közbenső munka akkor indítható, ha a munka végrehajtása befejeződött az előző gépen és az aktuális gép befejezte az előző munkát. Ha a munka a korábbi gépen korábban készül el mint ahogy az aktuális gép felszabadul, akkor a munka várakozik. Ha az aktuális gép szabadul fel korábban mint ahogy a munka megérkezik, akkor a gép várakozik.
13
Ütemterv végrehajtásának szimulációja F|perm| 𝐶 𝑚𝑎𝑥 esetben
A befejezési időpontot az utolsó gép utolsó munkájának időpontja adja meg: 𝐶 𝑚𝑎𝑥 = 𝐶 5 =45 Figyeljük meg, hogy az utolsó gépen a műveleti idők összege és a gép várakozásainak összege adja a befejezési időpontot. Mivel a műveleti idők összege független az ütemtervtől, a befejezési időpont minimalizálása egyben az utolsó gép várakozási idejének a minimalizálását jelenti.
14
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
A feladat az F | perm| 𝐶 𝑚𝑎𝑥 feladat speciális esete, amelyben csak két gép szerepel. Johnson-algoritmus: 1. lépés: Készítsünk egy üres ütemtervet. 2. lépés: Válasszuk ki azt az operációt az ütemezetlen munkák operációi közül, amelyhez a legkisebb műveleti idő tartozik. 3. lépés: Ha a kiválasztott operációt az első gépen kell elvégezni, akkor tegyük a munkát az ütemterv elejére a már korábban beütemezettek mögé. Ha a kiválasztott operációt a második gépen kell elvégezni akkor tegyük a munkák az ütemterv végére a már korábban beütemezettek elé. 4.lépés: Ha nincs több ütemezetlen munka akkor készen vagyunk, egyébként folytassuk a 2. lépéstől. A Johnson-algoritmus az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat optimális megoldását adja. Az állítás bizonyítása megtalálható a következő publikációban: Johnson, S., M., 1954, Optimal Two- and Three-Stage Production Schedules with Setup Times Included, Research Logistics Quarterly, Vol. 1, pp
15
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
Feladat: Oldjuk meg az alábbi F2 | perm | 𝐶 𝑚𝑎𝑥 ütemezési feladatot a Johnson- algoritmus alkalmazásával! Megoldás:Jelölje U az ütemezetlen munkák halmazát, S az ütemtervet. 𝑝 𝑖 ∗ , 𝑗 ∗ jelöli a legkisebb műveleti időt, 𝑖 ∗ a hozzá tartozó munkát és 𝑗 ∗ a hozzá tartozó gépet jelöli. Kiindulás: U = { 1, 2, 3, 4 } S = { ?, ?, ? , ? } i pi,1 pi,2 1 5 2 3 4 8
16
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
1. iteráció: Mivel 𝑝 𝑖 ∗ , 𝑗 ∗ = 𝑚𝑖𝑛 𝑖∈𝑈 { 𝑝 𝑖,𝑗 } = 𝑝 3,2 = 1 így 𝑖 ∗ = 3 és 𝑗 ∗ = 2. A kiválasztott operációt a második gépen kell elvégezni, így az ütemterv végére kerül a munka. U = { 1, 2, 4 } S = { ?, ?, ? , 3 } 2. iteráció: Mivel 𝑝 𝑖 ∗ , 𝑗 ∗ = 𝑚𝑖𝑛 𝑖∈𝑈 { 𝑝 𝑖,𝑗 } = 𝑝 4,1 = 𝑝 1,2 = 2. Két lehetséges minimum időérték van. Tetszőlegesen választhatunk a kettő közül! Legyen 𝑖 ∗ = 4 és 𝑗 ∗ = 1. A kiválasztott operációt a első gépen kell elvégezni, így az ütemterv elejére kerül a munka. U = { 1, 2 } S = { 4, ?, ? , 3 }
17
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
3. iteráció: Mivel 𝑝 𝑖 ∗ , 𝑗 ∗ = 𝑚𝑖𝑛 𝑖∈𝑈 { 𝑝 𝑖,𝑗 } = 𝑝 1,2 = 2 így 𝑖 ∗ = 1 és 𝑗 ∗ = 2. A kiválasztott operációt a második gépen kell elvégezni, így az ütemterv végére kerül a munka a már beütemezettek elé. U = { 2 } S = { 4, ?, 1 , 3 } 4. iteráció: Egyetlen munka marad! Ennek beillesztése egyértelmű. U = { } S = { 4, 2, 1 , 3 } Készen vagyunk!
18
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
Ábrázolja az előző leckében elkészített ütemterv Gantt- diagramját! Határozza meg a célfüggvény értékét! Számítsa ki a második gép várakozási (veszteség) idejét!
19
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása (Johnson-algoritmus)
Megoldás: Célfüggvény értéke: 𝐶 𝑚𝑎𝑥 = 𝐶 3 = =19 A 2. gép várakozási ideje: 𝑇 𝑤 =2+1+6=9
20
Az F2 | perm | 𝐶 𝑚𝑎𝑥 feladat megoldása
Megjegyzés: Érdemes összehasonlítani a kapott eredményeket az Ad-hoc (azonosítók szerinti) sorrendhez tartozó eredményekkel. Ad-hoc sorrendhez tartozó Gantt-diagram: A Johnson-sorrenddel az átfutási időben elért megtakarítás: 𝐶 𝑚𝑎𝑥 𝐴𝑑−ℎ𝑜𝑐 − 𝐶 𝑚𝑎𝑥 𝐽𝑜ℎ𝑛𝑠𝑜𝑛 = 21−19 = 2
21
A Johnson-algoritmus kiterjesztése három gépre
Az F3 | perm | 𝐶 𝑚𝑎𝑥 feladatban három gép szerepel. A Johnson-algoritmus kiterjeszthető ennek a feladatnak a megoldására. A kiterjesztés lényege a következő: 1. fázis: Alakítsunk ki virtuális kétgépes feladatot úgy, hogy a munkák első és második gépre vonatkozó időadatait rendre összeadjuk. Ezek az értékek alkotják a virtuális kétgépes rendszerben az első virtuális erőforrásra vonatkozó műveleti időket. Hasonló módon a második és a harmadik gépre vonatkozó időadatokat is adjuk össze rendre minden egyes munka esetében. Ezek az értékek alkotják a virtuális második gép műveleti időadatait. 2. fázis: Oldjuk meg a virtuális kétgépes feladatot a Johnson-algoritmussal.
22
A Johnson-algoritmus kiterjesztése három gépre
3. fázis: A virtuális kétgépes feladat megoldása során kapott ütemtervet alkalmazzuk az eredeti háromgépes feladatra. A Johnson-algoritmus fenti kiterjesztése három gépes esetre nem garantálja teljes általánosságban az optimális megoldás elérését, de jó közelítő megoldást ad. Abban az esetben optimális a megoldás, ha az alábbi feltétel teljesül: 𝑚𝑖𝑛 𝑝 𝑖 ,1 ≥ 𝑚𝑎𝑥 𝑝 𝑖 ,2 vagy 𝑚𝑖𝑛 𝑝 𝑖 ,3 ≥ 𝑚𝑎𝑥 𝑝 𝑖 ,2 Ez azt jelenti, hogy a módszer csak akkor garantálja az optimális megoldás előállítását, ha a középső gépre vonatkozó legnagyobb műveleti időtől nagyobb vagy azzal egyenlő az első vagy harmadik gépre vonatkozó legkisebb műveleti idő.
23
A Johnson-algoritmus kiterjesztése három gépre
Feladat: Oldjuk meg az alábbi F3 | perm | 𝐶 𝑚𝑎𝑥 ütemezési feladatot a Johnson-algoritmus alkalmazásával! Adottak az alábbi adatok: Megoldás: Kiindulási állapot: Jelölje U az ütemezetlen munkák halmazát, S az ütemtervet. U = { 1, 2, 3, 4, 5 } S = { ?, ?, ?, ?, ? } i pi,1 pi,2 pi,3 1 8 6 7 2 12 3 10 9 5 4 15 18 11
24
A Johnson-algoritmus kiterjesztése három gépre
Hozzunk létre egy virtuális kétgépes feladatot! A létrehozott két virtuális gép időadatai: A virtuális kétgépes feladatra alkalmazzuk a már ismert Johnson-algoritmust. A Johnson-algoritmus eredménye: S = { 4, 5, 1, 2, 3 } Készen vagyunk! i vpi,1 (pi,1+pi,2) vpi,2 (pi,2+pi,3) 1 14 13 2 15 3 9 4 19 22 5 16
25
A Johnson-algoritmus kiterjesztése három gépre
Feladat: Ábrázolja az előző leckében elkészített ütemterv Gantt-diagramját! Határozza meg a célfüggvény ( 𝐶 𝑚𝑎𝑥 ) értékét! Számítsa ki a második és a harmadik gép várakozási idejét! Optimálisnak tekinthető-e a megoldás? Megoldás:
26
A Johnson-algoritmus kiterjesztése három gépre
A második gép várakozási ideje a Gantt-diagram alapján számítható: = 37 időegység. A harmadik gép várakozási ideje a Gantt-diagram alapján: 15+4=19 időegység. Az átfutási idő értéke szintén a Gantt-diagrammból leolvasható: 𝐶 𝑚𝑎𝑥 = 68 időegység Az optimalitás feltétele: 𝑚𝑖𝑛 𝑝 𝑖,1 ≥ 𝑚𝑎𝑥 𝑝 𝑖,2 vagy 𝑚𝑖𝑛 𝑝 𝑖,3 ≥ 𝑚𝑎𝑥 𝑝 𝑖,2 𝑚𝑖𝑛 𝑝 𝑖,1 = 𝑝 1,1 = 8 𝑚𝑎𝑥 𝑝 𝑖,2 = 𝑝 1,2 = 6 Mivel 8≥6, így megállíthatjuk, hogy a megoldás optimális.
27
A Johnson-algoritmus kiterjesztése három gépre
Feladat: Hasonlítsa össze a kapott eredményeket az Ad-hoc sorrend szerinti végrehajtás eredményeivel! Megoldás: Az Ad-hoc sorrendhez tartozó Gantt-diagram: A harmadik gép várakozási ideje a Gantt-diagram alapján: 𝑇 𝑤 = = 27 időegység. Az átfutási idő értéke: 𝐶 𝑚𝑎𝑥 = 76 időegység. Az átfutási időben (és egyben a harmadik gép várakozási idejében) a Johnson-algoritmussal elért megtakarítás: 76−68 = 8 időegység.
28
Fm | perm | 𝐶 𝑚𝑎𝑥 ahol m > 3
Most az Fm | perm | 𝐶 𝑚𝑎𝑥 feladatosztálynak azokat a problémáit vizsgáljuk, ahol a gépek száma nagyobb mint három (m > 3). Ezeknek a feladatoknak az optimális megoldása nem állítható elő polinomiális futási idejű algoritmussal, ezért a gyakorlatban heurisztikus algoritmusokat és keresési technikákat alkalmaznak optimum-közeli megoldások gyors előállítására. Nézzünk erre néhány egyszerű heurisztikus megoldási módszert !
29
Palmer-módszer Olyan heurisztikus módszer az egyutas, előzés nélküli feladat megoldására m>2 esetén, mely a munkákhoz prioritási indexet rendel, és a prioritási indexek értéke alapján végzi az ütemezést. 1. lépés: Rendeljünk minden egyes munkához prioritási indexet. A prioritási index kiszámítására szolgáló formula azt az elvet fejezi ki, hogy ez a módszer azokat a munkákat veszi előre, amelyeknek a megmunkálási idői az első gépeken rövidebbek a többihez képest. A prioritási index kiszámításának módja: 𝐼 𝑖 =− 𝑗=1 𝑚 ( 𝑚−(2𝑗−1) 2 𝑝 𝑖,𝑗 ) 2. lépés: Rendezzük a munkákat a prioritási indexek szerint nem növekvő sorrendbe! Ez a sorrend adja a feladat megoldását (ütemtervét).
30
Palmer-módszer A prioritási index kiszámításának módja:
𝐼 𝑖 =− 𝑗=1 𝑚 ( 𝑚−(2𝑗−1) 2 𝑝 𝑖,𝑗 ) ahol: 𝐼 𝑖 - az i munka prioritási indexe; j - a végrehajtandó művelet sorszáma; m - a sorba kapcsolódó műveletek (gépek) száma; 𝑝 𝑖,𝑗 - az i munka j műveletének ideje (az ugyancsak j sorszámú gépen).
31
Palmer-módszer Feladat: Adott az Fm | perm | 𝐶 𝑚𝑎𝑥 feladat az alábbi időadatokkal: A munkák száma n = 5 A gépek száma: m = 4 Oldja meg a feladatot a Palmer-módszer alkalmazásával! Ábrázolja az ütemterv végrehajtásának időbeli lefutását Gantt-diagrammal. Határozza meg az utolsó munka befejezési időpontját ( 𝐶 𝑚𝑎𝑥 )! pi,j M1 M2 M3 M4 J1 3 4 6 7 J2 5 J3 8 2 J4 1 J5
32
Palmer-módszer Oldja meg a feladatot a Palmer-módszer alkalmazásával!
Ábrázolja az ütemterv végrehajtásának időbeli lefutását Gantt-diagrammal. Határozza meg az utolsó munka befejezési időpontját ( 𝐶 𝑚𝑎𝑥 )! Megoldás: lépés: Számítsuk ki a munkák Palmer-indexét! Az i=1 munka esetében: 𝐼 1 =− 𝑗=1 𝑚 ( 𝑚−(2𝑗−1) 2 𝑝 𝑖,𝑗 ) = 𝐼 1 =−( 4−(2∗1−1) − 2∗2− −(2∗3−1) −(2∗4−1) 2 7 = 7 Minden 𝐽 𝑖 (i=1,2,...,n) munka esetében számoljuk ki az indexet! A számítások eredményei: 𝐼 2 =2,5 𝐼 3 =−11,5 𝐼 4 =−1 𝐼 5 =−3,5
33
Palmer-módszer 2. lépés: Rendezzük a munkákat a prioritási indexek szerint nem növekvő sorrendbe! Mivel 7>2,5>−1>−3,5>−11,5, így a végeredmény: S={1,2,4,5,3} sorrend. Az ütemterv Gantt-diagramja: A célfüggvény értéke 𝐶 𝑚𝑎𝑥 =39
34
Dannenbring-módszer Olyan heurisztikus módszer az egyutas, előzés nélküli feladat megoldására m>2 esetén, amely egy súlyozási séma használatával az m gépes feladat megoldását egy virtuális kétgépes problémára vezeti vissza. lépés: Készítsünk két fiktív gépet, és állítsuk elő ezeken a fiktív gépeken az i munka végrehajtási időit a következő képletek alapján: 𝑝 𝑖,1 𝑣 = 𝑗=1 𝑚 (𝑚−𝑗+1) 𝑝 𝑖,𝑗 𝑝 𝑖,2 𝑣 = 𝑗=1 𝑚 𝑗∗ 𝑝 𝑖,𝑗 2. lépés: Alkalmazzuk a Johnson-algoritmust a fent definiált két fiktív gépre.
35
Dannenbring-módszer A fiktív gépek műveleti időinek számítása:
𝑝 𝑖,1 𝑣 = 𝑗=1 𝑚 (𝑚−𝑗+1) 𝑝 𝑖,𝑗 𝑝 𝑖,2 𝑣 = 𝑗=1 𝑚 𝑗∗ 𝑝 𝑖,𝑗 ahol: 𝑝 𝑖,1 𝑣 és 𝑝 𝑖,2 𝑣 az i munka végrehajtási idői az első és második fiktív gépen (idő dimenziójú mennyiségek); m az i munka összes műveleteinek száma és egyúttal a rendelkezésre álló gépek száma is; j az i munkához tartozó műveletek és egyúttal a gépek futó indexe (sorszáma); 𝑝 𝑖,𝑗 az i munka végrehajtási ideje a j gépen (az eredeti m gépes feladatban).
36
Dannenbring-módszer Feladat: Adott az F | perm | 𝐶 𝑚𝑎𝑥 feladat az alábbi időadatokkal: A munkák száma: n = 5 A gépek száma: m = 4 Oldja meg a feladatot a Dannenbring-módszer alkalmazásával! Ábrázolja az ütemterv végrehajtásának időbeli lefutását Gantt-diagrammal. Határozza meg az utolsó munka befejezési időpontját ( 𝐶 𝑚𝑎𝑥 )! pi,j M1 M2 M3 M4 J1 3 4 6 7 J2 5 J3 8 2 J4 1 J5
37
Dannenbring-módszer Megoldás: 1. lépés: A 4 gépes feladatot virtuális kétgépes feladattá alakítjuk. Számítsuk ki a virtuális gépek időadatait! Az i=1 munka esetében: 𝑝 𝑖,1 𝑣 = 𝑗=1 𝑚 (𝑚−𝑗+1) 𝑝 𝑖,𝑗 = 4 𝑝 1,1 +3 𝑝 1,2 +2 𝑝 1,3 +1 𝑝 1,4 = = 4⋅3+3⋅4+2⋅6+1⋅7 = 43 𝑝 𝑖,2 𝑣 = 𝑗=1 𝑚 𝑗∗ 𝑝 𝑖,𝑗 = 1 𝑝 1,1 +2 𝑝 1,2 +3 𝑝 1,3 +4 𝑝 1,4 = = 1⋅3+2⋅4+3⋅6+4⋅7 = 57
38
Dannenbring-módszer Minden 𝐽 𝑖 (i=1,2,...,n) munka esetében számoljuk ki a virtuális rendszerre vonatkozó időket! Az alábbi táblázat mutatja a számítás eredményét: 2. lépés: Alkalmazzuk a Johnson-algoritmust a virtuális kétgépes rendszerre. A végeredmény: S={1,2,5,3,4} sorrend. 𝐽 𝑖 𝑝 𝑖,1 𝑣 𝑝 𝑖,2 𝑣 J1 43 57 J2 45 50 J3 59 36 J4 34 J5 66
39
Dannenbring-módszer Az ütemterv Gantt-diagramja: A célfüggvény értéke 𝐶 𝑚𝑎𝑥 =39 1,2,3,4,5 (az ad-hoc sorrend gantt-ja kell hozzá)
40
Campbell-Dudek-Smith (CDS) algoritmus:
A CDS módszer a többgépes feladatot kétgépes problémákra vezeti vissza. Az algoritmus az eredeti m gépes feladatból m−1 darab mesterséges kétgépes problémát generál úgy, hogy a technológiai útvonal szerint szomszédos (egymást követő gépek) lesznek a kétgépes feladat kiválasztott gépei. A kétgépes feladatok egyenként megoldhatók a Johnson-algoritmussal. Kiválasztva közülük a teljes feladatra vonatkozó átfutási idő szempontjából a legjobbat, az lesz az eredeti m gépes probléma megoldása. A módszer nem garantálja az optimális megoldás megtalálását, de jó közelítő ütemtervet eredményez.
41
Campbell-Dudek-Smith (CDS) algoritmus:
Feladat: Adott az F | perm | 𝐶 𝑚𝑎𝑥 feladat az alábbi időadatokkal: A munkák száma: n = 5 A gépek száma: m = 4 Oldja meg a feladatot a CDS algoritmus alkalmazásával! Ábrázolja az ütemterv végrehajtásának időbeli lefutását Gantt-diagrammal. Határozza meg az utolsó munka befejezési időpontját ( 𝐶 𝑚𝑎𝑥 )! pi,j M1 M2 M3 M4 J1 3 4 6 7 J2 5 J3 8 2 J4 1 J5
42
Campbell-Dudek-Smith (CDS) algoritmus:
Megoldás: A 4 gépes feladatot 3 iterációban oldjuk meg. Vesszük sorban a szomszédos gépeket és azokat kétgépes problémának tekintve alkalmazzuk a Johnson-algoritmust. A kapott ütemtervek közül kiválasztjuk a legjobbat. Az egyes iterációk részleteit az alábbi táblázat foglalja össze: A CDS algoritmus eredménye az 𝑆 3,4 = { 4, 2, 1, 5, 3} sorrend. A célfüggvény értéke 𝐶 𝑚𝑎𝑥 =39 Iteráció Kiválasztott gépek Ütemterv (munkák sorrendje) Cmax 1 1, 2 𝑆 1,2 = { 1, 2, 3, 5, 4} 45 2 2, 3 𝑆 2,3 = { 1, 5, 2, 3, 4} 41 3 3, 4 𝑆 3,4 = { 4, 2, 1, 5, 3} 39
43
Campbell-Dudek-Smith (CDS) algoritmus:
Az ütemterv Gantt-diagramja az alábbi ábrán látható:
44
Többutas többoperációs ütemezési feladatok
Job Shop ( J | | Cmax ) Jackson-módszer Diszjunktív gráf modell Open Shop ( O | | Cmax) General Shop
45
Job Shop ( J | | Cmax ) Olyan többutas, többoperációs ütemezési feladatok megoldásával foglalkozunk, amelyekben minden egyes munka esetében kötött ugyan az operációk végrehajtási sorrendje, de munkánként eltérőek lehetnek. A nagyszámú lehetséges célfüggvény közül az utolsóként elkészülő munka befejezési időpontjának minimalizálását vizsgáljuk. A feladat bonyolultsága miatt főként a gyakorlatban használható heurisztikus megoldási módszerekre koncentrálunk. Ebben az alfejezetben az olyan többutas, többoperációs ütemezési feladatok megoldásával foglalkozunk, amelyekben minden egyes munka esetében kötött ugyan az operációk végrehajtási sorrendje, de munkánként eltérőek lehetnek. A nagyszámú lehetséges célfüggvény közül az utolsóként elkészülő munka befejezési időpontjának minimalizálását vizsgáljuk. A feladat bonyolultsága miatt főként a gyakorlatban használható heurisztikus megoldási módszerekre koncentrálunk.
46
Job Shop ( J | | Cmax ) Feltételezzük, hogy
az erőforrások az ütemezési időszakban folyamatosan rendelkezésre állnak, az erőforrások egyszerre csak egy munkán dolgozhatnak, a munkák legkorábbi indítási időpontja nulla: ri = 0 (i=1, 2, …, n), minden egyes munkához adott számú ni operáció tartozik, melyeknek pontosan ismert a végrehajtási ideje: pi,j (i=1, 2, …, n; j=1, 2, …, ni), minden egyes munka esetében kötött a hozzá tartozó operációk végrehajtási sorrendje, az operációk végrehajtása nem szakítható meg, a gépek között a munkák várakozhatnak, a műveletközi tárolók mérete nem korlátos, az ütemezés célja az utolsóként elkészülő munka befejezési időpontjának minimalizálása.
47
Job Shop ( J | | Cmax ) Az egyutas esettel ellentétben a többutas ütemezési feladat megoldása nem írható le egy egyszerű vektorral. Példa: Munkák száma: n = 5 Munkák halmaza: 𝐽 1 , 𝐽 2 , 𝐽 3 , 𝐽 4 , 𝐽 5 Gépek száma: m = 3 Gépek halmaza: 𝑀 1 , 𝑀 2 , 𝑀 3 A munkák operációinak előírt sorrendje, a kijelölt gépekkel és definiált műveleti időkkel: 𝐽 1 𝑀 1 (2) 𝑀 3 (3) 𝐽 2 𝑀 2 (1) 𝐽 3 𝑀 2 (4) 𝐽 4 𝑀 3 (2) 𝑀 1 (3) 𝐽 5 𝑀 2 (2)
48
Job Shop ( J | | Cmax ) Egy lehetséges ütemterv reprezentációja: Minden gépnek saját ütemezési vektora van. A vektorok hossza megegyezik a gépekhez rendelt operációk számával. 𝑀 1 𝐽 1 𝐽 4 𝑀 2 𝐽 3 𝐽 5 𝐽 2 𝑀 3
49
Job Shop ( J | | Cmax ) Gantt-diagram gép-orientált nézet:
50
Job Shop ( J | | Cmax ) Gantt-diagram munka-orientált nézet:
Megjegyzés: Figyeljük meg, hogy a befejezési időpont szempontjából a vizsgált ütemterv nem optimális. A diagram jól mutatja, hogy ha a J2 munkát az M2 gépen a legelső pozícióba kerülne, akkor a J4 munka is előrébb mozdulhatna, ezáltal a befejezési időpont csökkenhetne.
51
J2 | ni ≤ 2 | Cmax Jackson-módszer
Ebben a speciális Job Shop feladatban csupán két gép szerepel (m = 2) és minden munkának legfeljebb két operációja lehet. Jackson-módszer: A módszer lényege, hogy a munkákat az előírt útvonalak alapján csoportosítjuk, majd ütemezzük a halmazokat külön-külön és végül összeállítjuk a teljes megoldást. lépés: Munkák szétválogatása. lépés: Ütemezés. lépés: Összeépítés. Szakirodalmi hivatkozás: Jackson, J. R., An extension of Johnson’s result on job lot scheduling, Naval Research Logistics Quarterely ,
52
J2 | ni ≤ 2 | Cmax Jackson-módszer
1. lépés: Munkák szétválogatása. 𝐻 1 azoknak a munkáknak a halmaza, amelyeknek csak egyetlen operációja van és azt az 𝑀 1 gépen kell elvégezni. 𝐻 2 azoknak a munkáknak a halmaza, amelyeknek csak egyetlen operációja van és azt az 𝑀 2 gépen kell elvégezni. 𝐻 1,2 azoknak a munkáknak a halmaza, amelyeknek két operációja van és az elsőt az 𝑀 1 gépen és a másodikat az 𝑀 2 gépen kell elvégezni. 𝐻 2,1 azoknak a munkáknak a halmaza, amelyeknek két operációja van és az elsőt az 𝑀 2 gépen és a másodikat az 𝑀 1 gépen kell elvégezni.
53
J2 | ni ≤ 2 | Cmax Jackson-módszer
2. lépés: Ütemezés. A 𝐻 1,2 halmaz munkáit önálló F2 | perm | Cmax feladatnak tekintve ütemezzük azokat a Johnson-algoritmus alkalmazásával. A kapott sorrend legyen 𝑆 1,2 . A 𝐻 2,1 halmaz elemeit szintén ütemezzük a Johnson-algoritmussal, így megkapjuk a 𝑆 2,1 sorrendet. 3. lépés: Összeépítés. Az 𝑀 1 gép ütemtervét úgy állítjuk elő, hogy először az 𝑆 1,2 majd az 𝑆 1 és végül az 𝑆 2,1 sorrendet alkalmazzuk ( 𝑆 𝑀1 = 𝑆 1,2 + 𝑆 1 + 𝑆 2,1 ). Az 𝑀 2 gép ütemtervét úgy állítjuk elő, hogy először az 𝑆 2,1 majd az 𝑆 2 és végül az 𝑆 1,2 sorrendet alkalmazzuk ( 𝑆 𝑀2 = 𝑆 2,1 + 𝑆 2 + 𝑆 1,2 ). A bemutatott algoritmus a feladat optimális megoldását adja. Megjegyzés: Az S1 és az S2 tetszőleges sorrendje lehet az egyoperációs feladatoknak.
54
J2 | ni ≤ 2 | Cmax Jackson-módszer
Feladat: Oldjuk meg a J2 | ni ≤ 2 | Cmax ütemezési feladatot! Adottak az alábbi adatok: Gépek száma: m = 2 Munkák száma: n = 10 Az operációk és műveleti idők táblázata: Munka Gép (műveleti idő) J1 2(2) J2 1(5) J3 2(4) 1(6) J4 J5 1(2) J6 1(4) 2(3) J7 1(3) J8 J9 J10
55
J2 | ni ≤ 2 | Cmax Jackson-módszer
Megoldás Jackson-módszerrel: 1. lépés: Munkák szétválogatása útvonalak szerint. 𝐻 1 = { 𝐽 4 , 𝐽 7 } 𝐻 2 = { 𝐽 1 , 𝐽 8 } 𝐻 1,2 = { 𝐽 3 , 𝐽 5 , 𝐽 10 } 𝐻 2,1 = { 𝐽 2 , 𝐽 6 , 𝐽 9 } 2. lépés: Ütemezés. A 𝐻 1,2 halmaz munkáit önálló F2 | perm | Cmax feladatnak tekintve ütemezzük azokat a Johnson-algoritmus alkalmazásával. A 𝐻 2,1 halmaz elemeit szintén ütemezzük a Johnson-algoritmussal. A 𝐻 1 elemeit tetszőleges sorrendbe állíthatjuk, Hasonlóan a 𝐻 2 elemeit is
56
J2 | ni ≤ 2 | Cmax Jackson-módszer
2. lépés: Ütemezés: A H1,2 halmaz munkáit önálló F2 | perm | Cmax feladatnak tekintve ütemezzük azokat a Johnson-algoritmus alkalmazásával. Ütemterv: S1,2 = { 𝐽 9 , 𝐽 6 , 𝐽 2 }. A H2,1 halmaz elemeit szintén ütemezzük a Johnson-algoritmussal: Ütemterv: S2,1 = { 𝐽 3 , 𝐽 10 , 𝐽 5 }. A H1 elemeit tetszőleges sorrendbe állíthatjuk: S1 = { 𝐽 4 , 𝐽 7 }. Hasonlóan a H2 elemeit is tetszőleges sorrendbe állíthatjuk: S2 = { 𝐽 1 , 𝐽 8 }. H1,2 Oi,1 Oi,2 𝐽 2 5 2 𝐽 6 4 3 𝐽 9 6 H2,1 Oi,2 Oi,1 𝐽 3 4 6 𝐽 5 2 𝐽 10 5
57
J2 | ni ≤ 2 | Cmax Jackson-módszer
3. lépés: Összeépítés. Az 𝑀 1 gép ütemterve: 𝑆 𝑀 1 = 𝑆 1,2 + 𝑆 1 + 𝑆 2,1 . Az 𝑀 2 gép ütemterve: 𝑆 𝑀 2 = 𝑆 2,1 + 𝑆 2 + 𝑆 1,2 . Végeredmény: 𝑆 𝑀 1 = 𝐽 9 𝐽 6 𝐽 2 𝐽 4 𝐽 7 𝐽 3 𝐽 10 𝐽 5 𝑆 𝑀 2 = 𝐽 1 𝐽 8
58
J2 | ni ≤ 2 | Cmax Jackson-módszer
Feladat: Ábrázoljuk a megoldott példa ütemtervét Gantt-diagrammal! Határozza meg a célfüggvény értékét! Megoldás: A célfüggvény értéke: Cmax = 36
59
Egy többgépes eset: Diszjunktív gráf modell
Példa: A gépek halmaza: M = { 𝑀 1 , 𝑀 2 , 𝑀 3 , 𝑀 4 } A munkák halmaza: J = { 𝐽 1 , 𝐽 2 , 𝐽 3 } A munkák operációi, azok végrehajtási sorrendje valamint a dedikált gépek adottak: J1 : 𝑂 1,1 ( 𝑀 1 ) → 𝑂 1,2 ( 𝑀 2 ) → 𝑂 1,3 ( 𝑀 3 ) J2 : 𝑂 2,1 ( 𝑀 1 ) → 𝑂 2,2 ( 𝑀 2 ) → 𝑂 2,3 ( 𝑀 4 ) J3 : 𝑂 3,1 ( 𝑀 2 ) → 𝑂 3,2 ( 𝑀 1 ) → 𝑂 3,3 ( 𝑀 4 ) → 𝑂 3,4 ( 𝑀 3 )
60
Egy többgépes eset: Diszjunktív gráf modell
A diszjunktív gráf egy olyan gráf, amelynek csúcspontjai az operációkat jelentik, valamint a gráfban kétféle éltípus különböztethető meg. Az operációk közötti kötelező sorrendet a konjunktív él mutatja. Ez egy irányított él és kötelezően betartandó korlátozást jelent. A gráf kiegészíthető két fiktív nulla műveleti idejű operációval. A forrásból (x) kiindulva konjunktív élet húzunk minden olyan operációjához amelybe nem vezet él. Azokat az operációkat, amelyikből nem indul ki él, konjunktív éllel összekötjük a nyelővel (y).
61
Egy többgépes eset: Diszjunktív gráf modell
Az ábrán a csúcsokra írt (k, i) páros első tagja a gép sorszámát a második tagja a munka sorszámát jelenti.
62
Egy többgépes eset: Diszjunktív gráf modell
Az azonos gépen végrehajtandó operációk között diszjunktív élpárokat (vagy kétirányú élt) ábrázolhatunk. Egy élpár két operáció lehetséges végrehajtási sorrendjét reprezentálja az adott gépen. Az ábrán a folyamatos vonallal rajzolt élek a konjunktív élek, a szaggatott vonallal rajzolt élek a diszjunktív éleket jelölik.
63
Egy többgépes eset: Diszjunktív gráf modell
Az ütemezési feladat megoldása azt jelenti, hogy minden egyes diszjunktív élpár közül csak az egyik irányú élt hagyjuk meg a párját kivesszük a gráfból (irányítást adunk a kétirányú élnek).
64
Egy többgépes eset: Diszjunktív gráf modell
A megoldás nem tartalmazhat irányított körutat, mert akkor az ütemterv nem valósítható meg. Az alábbi ábra egy nem megengedett ütemezést ábrázol.
65
Egy többgépes eset: Diszjunktív gráf modell
Az utolsóként elkészülő munka befejezési időpontját (Cmax) a modellben a leghosszabb útvonal hossza adja meg. Amennyiben más célfüggvényt szeretnénk optimalizálni (pl. késést), akkor értelemszerűen kiszámítjuk a vizsgált ütemteret reprezentáló gráf segítségével az operációk aktuális indítási és befejezési időpontjait, majd a munkák befejezési időpontjait és végül az időadatok felhasználásával a célfüggvény értékét. A gráf modell segítségével pontosan megérthetők azok az összefüggések, amelyek a megoldás értékelését végző szimulációs algoritmus kidolgozásához nélkülözhetetlenek. A diszjunktív gráf modellben a döntési változókat a diszjunktív élpárok reprezentálják. A döntési változók értékének beállítására a gyakorlatban heurisztikus módszereket és kereső algoritmusok használnak.
66
O | | Cmax Open Shop Feltételezzük, hogy
az erőforrások az ütemezési időszakban folyamatosan rendelkezésre állnak, az erőforrások egyszerre csak egy munkán dolgozhatnak, a munkák legkorábbi indítási időpontja nulla: ri = 0 (i=1, 2, …, n), minden egyes munkához adott számú ni operáció tartozik, melyeknek pontosan ismert a végrehajtási ideje: pi,j (i=1, 2, …, n; j=1, 2, …, ni), minden egyes munka esetében tetszőleges lehet a hozzá tartozó operációk végrehajtási sorrendje, az operációk végrehajtása nem szakítható meg, a gépek között a munkák várakozhatnak, a műveletközi tárolók mérete nem korlátos, az ütemezés célja az utolsóként elkészülő munka befejezési időpontjának minimalizálása. Ebben az alfejezetben az olyan többutas, többoperációs ütemezési feladatok megoldásával foglalkozunk, amelyekben nincs kötelezően előírva a munkák operációinak végrehajtási sorrendje. A korábbi fejezetekben tárgyal feladatokhoz képest itt az ütemezési feladat megoldása során a döntési változók halmaza jelentősen kibővül. Az adott gépeken végrehajtandó operációk sorrendjének kialakításán túl meg kell határozni a munkák operációnak végrehajtási sorrendjét is, vagyis azt, hogy a munka milyen sorrendben keresse fel a gépeket. A Job Shop típusú feladatokhoz hasonlóan példaként itt is az utolsóként elkészülő munka befejezési időpontjának minimalizálását vizsgáljuk.
67
O | | Cmax Open Shop Az Open Shop ütemezési feladat megoldásának reprezentálása érdekében a korábbi Job Shop feladat reprezentációját ki kell egészíteni az operációk végrehajtási sorrendjét leíró adatszerkezettel. Minden munkához hozzárendelünk egy vektort, amely tárolja a megoldás során kialakított operáció-sorrendet. Erre azért van szükség mert a feladatban szereplő munkák operációit tetszőleges sorrendben végrehajthatunk, így itt azok nem korlátozások hanem döntési változók.
68
O | | Cmax Open Shop Példa: Adottak az alábbi adatok: Munkák száma: n = 5 Munkák halmaza: 𝐽 1 , 𝐽 2 , 𝐽 3 , 𝐽 4 , 𝐽 5 Gépek száma: m = 3 Gépek halmaza: 𝑀 1 , 𝑀 2 , 𝑀 3 Az operációk végrehajtására kijelölt gépek és a definiált műveleti idők (technológiai terv): A munkákhoz tartozó (a táblázat adott sorában szereplő) operációk között nincs megelőzési reláció! 𝐽 1 𝑀 1 (2) 𝑀 3 (3) 𝐽 2 𝑀 2 (1) 𝐽 3 𝑀 2 (4) 𝐽 4 𝑀 3 (2) 𝑀 1 (3) 𝐽 5 𝑀 2 (2)
69
O | | Cmax Open Shop Megoldás:
Egy lehetséges ütemterv reprezentációja két részből áll: A választott operáció-sorrendek munkánkénti bontásban. 2. A gépeken meghatározott végrehajtási sorrendek.
70
O | | Cmax Open Shop A választott operáció-sorrendek munkánkénti bontásban: A fenti táblázat a munkák számának megfelelő számú vektort (sort) tartalmaz, melyekben a sorrendet a pozíció adja meg balról jobbra növekvő formában. Megjegyzés: A Job Shop feladatokban ez a rész induló alapadatként előírt korlátozás, itt viszont döntés eredménye. 𝐽 1 𝑀 3 (3) 𝑀 1 (2) 𝐽 2 𝑀 2 (1) 𝐽 3 𝑀 2 (4) 𝐽 4 𝑀 1 (3) 𝑀 3 (2) 𝐽 5 𝑀 2 (2)
71
O | | Cmax Open Shop 2. A gépeken meghatározott végrehajtási sorrendek: A fenti táblázat a gépek számának megfelelő számú vektort (sort) tartalmaz, melyekben a sorrendet a pozíció adja meg balról jobbra növekvő formában. Megjegyzés: Ez a rész megegyezik a Job Shop feladatnál tanultakkal. 𝑀 1 𝐽 4 𝐽 1 𝑀 2 𝐽 3 𝐽 5 𝐽 2 𝑀 3
72
O | | Cmax Open Shop A vázolt példa Gantt-diagramja látható az alábbi ábrákon. Gép-orientált nézet: Megjegyzés: Az ábrán látható operációk jelölésében (pl. O4,3 ) az első index a munka sorszámát a második a munkához tartozó operáció sorszámát jelöli. Ez utóbbi index nem a végrehajtási sorrend szerinti sorszámot jelenti, hanem a definíció szerinti sorszámot (azonosítót). Például az O4,3 operáció a J4 munka harmadik definiált operációját jelenti. A végrehajtási sorban ez most a J4 munka elsőként indított operációja. MEMOOC-ban JAVÍTANDÓ: „Például az O4,3 operáció a J4 munka negyedik definiált operációját jelenti” HELYETTE: harmadik
73
O | | Cmax Open Shop Munka-orientált nézet: Megjegyzés:
Az ábrán látható operációk jelölésében (pl. O4,3 ) az első index a munka sorszámát a második a munkához tartozó operáció sorszámát jelöli. Ez utóbbi index nem a végrehajtási sorrend szerinti sorszámot jelenti, hanem a definíció szerinti sorszámot (azonosítót). Például az O4,3 operáció a J4 munka harmadik definiált operációját jelenti. A végrehajtási sorban ez most a J4 munka elsőként indított operációja. MEMOOC-ban JAVÍTANDÓ: „Például az O4,3 operáció a J4 munka negyedik definiált operációját jelenti” HELYETTE: harmadik
74
O2 | | Cmax Open Shop kétgépes feladat
Ebben a speciális Open Shop feladatban csupán két gép szerepel (m = 2) és minden munkának legfeljebb két operációja lehet. Használjuk a következő jelöléseket: Munkák: Ji (i = 1, …, n). Gépek: Mj (j = 1, …, m). Operációk: Oi,j (i = 1, …, n) és (j = 1, …, m). a Ji munka adott operációját az Mj gépen kell végrehajtani pi,j idő alatt. Ha a munkát az adott gépen nem kell végrehajtani akkor az arra a gépre vonatkozó műveleti ideje nulla.
75
O | | Cmax Open Shop Megoldási módszer:
Előkészítés: Munkák szétválogatása Kiválasztás: Válasszuk ki a következő feltételnek megfelelő munkát: Ütemezés: 1. Eset: A kiválasztott munka az I halmazba tartozik. 2. Eset: A kiválasztott munka a J halmazba tartozik.
76
O | | Cmax Open Shop Előkészítés: Munkák szétválogatása: A munkákat osszuk két halmazba: I = { i | 𝑝 𝑖,1 ≤ 𝑝 𝑖,2 } J = { i | 𝑝 𝑖,1 > 𝑝 𝑖,2 }. A I halmazba azok a munkák kerüljenek amelyek esetében a második géphez tartozó műveleti idő nem kisebb az első géphez tartozó műveleti időnél. A többi munka a J halmazba kerül. Kiválasztás: Válasszuk ki a következő feltételnek megfelelő munkát: max{ max{ 𝑝 𝑖,1 | i ∈ I }, max{ 𝑝 𝑖,2 | i ∈ J } }.
77
O | | Cmax Open Shop Ütemezés: 1. Eset: A kiválasztott munka az I halmazba tartozik. 𝑝 𝑟,1 = max{ max{ 𝑝 𝑖,1 | i ∈ I }, max{ 𝑝 𝑖,2 | i ∈ J } }. • Az 𝑀 1 gépen ütemezzük: Először az I \ {r} halmaz, utána a J halmaz munkáinak operációit növekvő index szerint, majd az r munka operációját. • Az 𝑀 2 gépen ütemezzük: az r munka operációját, majd az I \ {r} halmaz, utána a J halmaz munkáinak operációit ugyanabban a sorrendben, mint az 𝑀 1 gépen. • A munkák operációinak sorrendje: a kiválasztott munka először az 𝑀 2 gépet a keresi fel, majd az 𝑀 1 gépet. A többi munka esetében éppen fordított a sorrend. 𝑂 𝑟,2 → 𝑂 𝑟,1 a többi munkára: 𝑂 𝑖,1 → 𝑂 𝑖,2 .
78
O | | Cmax Open Shop 2. Eset: A kiválasztott munka a J halmazba tartozik. 𝑝 𝑟,2 = max{ max{ 𝑝 𝑖,1 | i ∈ I }, max{ 𝑝 𝑖,2 | i ∈ J } }. • Az első esethez viszonyítva felcseréljük a két gép szerepét, továbbá a az I és J halmazok szerepét. A bemutatott algoritmus a feladat optimális megoldását adja. Szakirodalmi hivatkozás: Peter Brucker: Schedulling algorithms, Springer, 2007.
79
O | | Cmax Open Shop Feladat: Oldjuk meg az O2 | | Cmax ütemezési feladatot! Adottak az alábbi adatok. Gépek száma: m = 2 Munkák száma: n = 6 A műveleti idők táblázata: Ji Oi,1 Oi,2 J1 6 7 J2 4 3 J3 1 J4 2 J5 5 J6
80
O | | Cmax Open Shop Megoldás: Előkészítés: Munkák szétválogatása az időadatok szerint. I = { i | 𝑝 𝑖,1 ≤ 𝑝 𝑖,2 } = { J1, J4, J5, J6 } J = { i | 𝑝 𝑖,1 > 𝑝 𝑖,2 } = { J2, J3 } Kiválasztás: max{ max{ 𝑝 𝑖,1 | i ∈ I }, max{ 𝑝 𝑖,2 | i ∈ J } } = max { 𝑝 1,1 , 𝑝 2,2 } = max { 6, 3 } = 6 ebből következik, hogy a kiválasztott munka: r = J1. Ütemezés: Az 𝑀 1 gép ütemterve: 𝑆 𝑀1 = I\{r} + J + {r} = { J4, J5, J6 } + { J2 + J3 } + J1 Az 𝑀 2 gép ütemterve: 𝑆 𝑀2 = {r} + I\{r} + J = J1 + { J4, J5, J6 } + { J2 + J3 }
81
O | | Cmax Open Shop Gépenkénti munkasorrend: A kiválasztott munka operációinak sorrendje ( 𝑀 2 → 𝑀 1 ): 𝑂 1,2 → 𝑂 1,1 a többi munka esetében az operációk sorrendje ( 𝑀 1 → 𝑀 2 ): 𝑂 2,1 → 𝑂 2,2 𝑂 3,1 → 𝑂 3,2 𝑂 4,1 → 𝑂 4,2 𝑂 5,1 → 𝑂 5,2 𝑂 6,1 → 𝑂 6,2 SM1 J4(2) J5(2) J6(1) J2(4) J3(3) J1(6) SM2 J1(7) J4(4) J5(5) J6(3) J2(3) J3(1)
82
O | | Cmax Open Shop Feladat: Ábrázoljuk az előző leckében megoldott példa ütemtervét Gantt- diagrammal! Határozza meg a célfüggvény értékét! Megoldás: A célfüggvény értéke: Cmax = 23
83
O | | Cmax Open Shop Az Open Shop feladatok a Job Shop feladatokhoz hasonlóan diszkjunktív gráffal modellezhetők. Alapvető eltérés, hogy az Open Shop feladatokban nincs kötelezően előírt sorrend a munkák operációi között. Így oda nem kell konjunktív élet rajzolni, hanem diszjunktív élpárok reprezentálják a kibővített döntési változókat. A többgépes, többoperációs Open Shop feladatok megoldására a gyakorlatban heurisztikus módszereket és kereső algoritmusokat alkalmaznak. A diszjunktív gráf modell segíthet a szimulációs algoritmusok kidolgozásában.
84
General Shop modell A General Shop a Job Shop és az Open Shop általánosításával közelíthető meg a legegyszerűbben. A feladat jellemzői: Az általános műhelyszintű ütemezési feladatban feltételezzük, hogy adott n számú munka: 𝐽 𝑖 (i=1, 2, …, n), adott m számú erőforrás (gép): 𝑀 𝑘 (k=1, 2, …, m), az erőforrások az ütemezési időszakban folyamatosan rendelkezésre állnak, egy erőforrás egyszerre csak egy munkán dolgozhat, a munkák legkorábbi indítási időpontja nulla: 𝑟 𝑖 = 0 (i=1, 2, …, n), minden egyes munkához adott számú ni operáció tartozik, melyeknek pontosan ismert a végrehajtási ideje: 𝑝 𝑖,𝑗 (i=1, 2, …, n; j=1, 2, …, 𝑛 𝑖 ),
85
General Shop modell minden egyes operáció egy adott gépen végezhető el. Dedikált gép: μ 𝑖,𝑗 ∈ { 𝑀 1 , ... , 𝑀 𝑚 } az azonos munkához tartozó operációk között lehetnek precedencia relációk (végrehajtási sorrendre vonatkozó korlátozások). egy munkán egyszerre csak egy erőforrás dolgozhat, az operációk végrehajtása nem szakítható meg, a gépek között a munkák várakozhatnak, a műveletközi tárolók mérete nem korlátos. a cél az, hogy egy megvalósítható ütemtervet készítsünk, amely a kijelölt célfüggvény vagy célfüggvények szempontjából optimális.
86
General Shop modell Az általános műhelyszintű ütemezési feladatok bonyolultsága miatt a gyakorlatban heurisztikus módszereket és keresési algoritmusokat használunk a feladatok hatékony megoldására. Az elméleti optimum megtalálása helyett a gyakorlatban bevethető optimum közeli megoldások elfogadható időn belüli előállítására törekszünk.
87
General Shop modell A diszjunktív gráf alkalmas az általánosított műhelyszintű ütemezési feladatok modellezésére. A korábbi leckékben foglalkoztunk a diszjunktív gráf felépítésével és alkalmazásával a Job Shop és Open Shop feladatok vizsgálata kapcsán. Most foglaljuk össze a diszjunktív gráf jellemzőit a General Shop feladatok modellezése érdekében. Diszjunktív gráf G = ( V, C, D ) V a csúcsok halmaza. Minden operációt egy csúcs reprezentál. Továbbá van két speciális csúcs: egy forrás x ∈ V és egy nyelő y ∈ V. Minden csúcshoz egy számértéket (költséget vagy súlyt) rendelünk hozzá. A forrás és a nyelő csúcshoz 0 értéket rendelünk. Az operációkat reprezentáló csúcsok értéke az adott operáció végrehajtási idejét jelenti.
88
General Shop modell Diszjunktív gráf G = ( V, C, D)
C a konjunktív élek halmaza. Ezek irányított élek, amelyek az operációk közötti precedencia relációkat fejezik ki. Továbbá vezet egy konjunktív él a forrásból minden olyan csúcsba, amelyet nem előz meg egyetlen csúcs sem a precedencia gráfban, és vezet egy konjunktív él minden olyan operációból a nyelőbe, amelyet nem követ egyetlen csúcs sem a precedencia gráfban. D a diszjunktív élek halmaza. Ezek irányítatlan élek (ábrázolhatók kétirányú élként is). Diszjunktív élek vannak azon konjunktív éllel össze nem kötött operációk között, amelyek ugyanahhoz a munkához tartoznak, és azon konjunktív éllel össze nem kötött operációpárok között, amelyeket azonos gépen kell végrehajtani.
89
General Shop modell Figyeljük meg, hogy a korábbi speciális esetekhez képes az általánosított modellben a konjunktív és diszjunktív élek szerepe nem változott meg, csupán az operációk közötti elhelyezkedésük változatosabb lehet. Egy ütemterv (megoldás) azt jelenti, hogy a diszjunktív gráfban minden diszjunktív éllel összekötött csúcs közé egy egyértelmű irányított élet teszünk: G(S) = ( V, C ∪ S ) Az ütemterv (megoldás) akkor tekinthető megvalósíthatónak ha nem tartalmaz irányított körutat. Az ütemezési feladat döntési változója a diszjunktív élek irányítása. A célfüggvények értéke a korábban tanultak szerint számítható.
90
General Shop modell A két gépet tartalmazó feladat után most vizsgáljunk meg egy többgépes esetet. Példa: A gépek halmaza: M = { 𝑀 1 , 𝑀 2 , 𝑀 3 , 𝑀 4 } A munkák halmaza: J = { 𝐽 1 , 𝐽 2 , 𝐽 3 } A munkák operációi, azok végrehajtási sorrendjére vonatkozó korlátozások valamint a dedikált gépek adottak: 𝐽 1 : 𝑂 1,1 ( 𝑀 1 ) ; 𝑂 1,2 ( 𝑀 2 ) → 𝑂 1,3 ( 𝑀 3 ) 𝐽 2 : 𝑂 2,1 ( 𝑀 1 ) → 𝑂 2,2 ( 𝑀 2 ) → 𝑂 2,3 ( 𝑀 4 ) 𝐽 3 : 𝑂 3,1 ( 𝑀 2 ) → 𝑂 3,2 𝑀 1 ) → 𝑂 3,3 ( 𝑀 4 ) : 𝑂 3,4 ( 𝑀 3 )
91
General Shop modell A feladat reprezentációja az alábbi ábrán látható:
92
General Shop modell Egy lehetséges megoldást ábrázol az alábbi ábra:
93
General Shop modell Egy nem megengedett körutat tartalmazó kiválasztás látható az alábbi ábrán:
94
Köszönöm a figyelmet!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.