IGYR-7 p. 1/4 Integrált gyártórendszerek Gyártásütemezés: az ütemezések analízise Gantt-chart módszerrel, az optimalizálási feladat kitűzése és változatai, megoldás a kritikus út módszerrel, dinamikus programozás Hangos Katalin Villamosmérnöki és Információs Rendszerek Tanszék e-mail: hangos.katalin@virt.uni-pannon.hu
A gyártásütemezés feladatai IGYR-7 p. 2/4
IGYR-7 p. 3/4 A gyártásütemezés elvi problémakitűzése Adott: a gyártóberendezések halmaza (erőforrások, korlátosak): típus, gyártókapacitás a lehetséges műveletek halmaza végrehajtási idővel vagy költséggel műveletekre vonatkozó korlátozások: sorrendi, milyen típusú berendezésen hajtható végre a végtermék(ek): rendelésállománnyal, ami dinamikusan is változhat (a lehetséges kiindulási anyagok): rendelkezésre állással, ami dinamikusan is változhat Kiszámítandó: egy ütemezés, ami előírja, hogy milyen műveletet melyik berendezésen mikor hajtsunk végre idő vagy költség optimálisan
IGYR-7 p. 4/4 Speciális gyártásütemezési feladatok 1. Változó erőforrás-korlátozású dinamikus feladat Jellemzői: a rendelésállomány és a nyersanyagok rendelkezésre állása időben változó időben változó berendezés kapacitás és rendelkezésre állás minden időlépésben lokálisan megvalósítható megoldást keresünk Megoldható cselekvés tervezéssel
IGYR-7 p. 5/4 Speciális gyártásütemezési feladatok 2. Erőforrás-korlátozás nélküli statikus feladat Jellemzői: a rendelésállomány és a nyersanyagok rendelkezésre állása statikus (időben állandó) korlátlan berendezés kapacitás és rendelkezésre állás legkisebb végrehajtási idejű megoldást keresünk Van egyszerű, polinomiális időben kiszámítható megoldás
IGYR-7 p. 6/4 Műveleti tervek végrehajtásának ellenőrzése szimulációval (időzített Petri hálók)
IGYR-7 p. 7/4 Kiterjesztett Petri háló modellek Hierarchikus Petri hálók Időzített Petri hálók: feliratokkal óra: beépített (vagy spec. "forrás" hely) átmenetekhez tüzelési ido (helyekhez várakozási ido) Színezett Petri hálók: feliratokkal jelzőpontok (token-ek) diszkrét értékkészletuek ("szín") helyekhez megengedett színhalmaz átmenetekhez és élekhez (diszkrét) függvények
IGYR-7 p. 8/4 Futópálya Petri háló modellje Időzített Peri háló modell! "
IGYR-7 p. 9/4 Galuskaszaggató gyártás modellje Galuska-szaggató gyártás műveletei (időzített Peri háló modell formájában) Nyel-lap Alap-lap Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Alap-tal Nyel Lyukfuras (type Furogep) Ido: 3 Lyukas-tal Szegecseles (type Szegecselo) Ido: 1 Lyukas-tal-nyellel Festes (type Festolakkozo) Ido: 5 Galuska-szaggato
IGYR-7 p. 10/4 Galuskaszaggató gyártás végrehajtása 1 Galuska-szaggató gyártás szimulációja (időzített Peri háló modell felhasználásával): t = 0, t = 2, t = 4 Nyel-lap Alap-lap Nyel-lap Alap-lap Nyel-lap Alap-lap Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Alap-tal Alap-tal Alap-tal Nyel Lyukfuras (type Furogep) Nyel Lyukfuras (type Furogep) Nyel Lyukfuras (type Furogep) Ido: 3 Ido: 3 Ido: 3 Lyukas-tal Lyukas-tal Lyukas-tal Szegecseles (type Szegecselo) Ido: 1 Szegecseles (type Szegecselo) Ido: 1 Szegecseles (type Szegecselo) Ido: 1 Lyukas-tal-nyellel Lyukas-tal-nyellel Lyukas-tal-nyellel Festes (type Festolakkozo) Festes (type Festolakkozo) Festes (type Festolakkozo) Ido: 5 Ido: 5 Ido: 5 Galuska-szaggato Galuska-szaggato Galuska-szaggato
IGYR-7 p. 11/4 Galuskaszaggató gyártás végrehajtása 2 Galuska-szaggató gyártás szimulációja (folytatás) (időzített Peri háló modell felhasználásával): t = 7, t = 8 Nyel-lap Alap-lap Nyel-lap Alap-lap Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Tpres1 (type Presgep1) Tpres2 (type Presgep1) Ido: 2 Ido: 4 Alap-tal Alap-tal Nyel Lyukfuras (type Furogep) Nyel Lyukfuras (type Furogep) Ido: 3 Ido: 3 Lyukas-tal Lyukas-tal Szegecseles (type Szegecselo) Szegecseles (type Szegecselo) Ido: 1 Ido: 1 Lyukas-tal-nyellel Lyukas-tal-nyellel Festes (type Festolakkozo) Festes (type Festolakkozo) Ido: 5 Ido: 5 Galuska-szaggato Galuska-szaggato
IGYR-7 p. 12/4 Egyszerű grafikus módszer a megjelenítésre és analízisre (Gantt chart)
IGYR-7 p. 13/4 Gantt táblázat - Gantt chart A leírás elemei: Feladatok: (kezdete, vége), előző feladat, erőforrás Erőforrások (személyek): feladathoz rendelhetők, lehet karbantartási (szabadság) idejük Nézetek: a leírás elemeiből Gantt táblázat PERT gráf Erőforrás-foglaltság táblázat
IGYR-7 p. 14/4 Gantt táblázat összeállításának menete az adott témának megfelelően meghatározzuk a tevékenységeket, meghatározzuk a folyamat teljes átfutási idejét (határidejét), meghatározzuk az egyes munkalépések időszükségletét, feltárjuk az egyes munkalépések logikai összefüggéseit (mely lépések végezhetők párhuzamosan, egymást megelőzve, követve) fentiek figyelembe vétele mellett a tevékenységek időszükségletét vonallal jelöljük
IGYR-7 p. 15/4 Egy egyszerű példa Galuska-szaggató gyártás műveletei (Petri háló formájában) Nyel-lap Alap-lap Tpres1 (type Presgep1) Tpres2 (type Presgep1) Alap-tal Nyel Lyukfuras (type Furogep) Lyukas-tal Szegecseles (type Szegecselo) Lyukas-tal-nyellel Festes (type Festolakkozo) Galuska-szaggato
IGYR-7 p. 16/4 Gantt táblázat - példa Feladatok elhelyezése az időtengelyen minden feladat külön sorban időtengely vizszintes sorrendiség nyilakkal (automatikus időeltolás)
Gantt táblázat - másik példa IGYR-7 p. 17/4
IGYR-7 p. 18/4 Mik a módszer erősségei és gyengeségei? Erősségek: szemléletes, könnyen áttekinthető formában ábrázolja az ütemtervet figyelembe vehető az összes tevékenység meghatározhatók a prioritások, függőségek, párhuzamosságok Gyengeségek: túl sok tevékenység vagy túl hosszú időtáv esetén bonyolulttá válhat az ábrázolás nem mindig képes ábrázolni a megfelelő öszefüggéseket
IGYR-7 p. 19/4 A program értékelő és átekintő módszer - PERT gráf A felírás lépései: a gyártásban szereplő összes tevékenység (feladat) meghatározása a tevékenységek sorrendjének meghatározása a függőségi kapcsolatok figyelembevételével a tevékenységek időtartamának becslése (optimista, legvalószínűbb, pesszimista becslés) az egyes tevékenységek várható idejének a kiszámítása a tevékenységi idők szórásnégyzetének a kiszámítása
IGYR-7 p. 20/4 PERT gráf - példa Feladatok egymásutánisági függéseinek leírása ok-okozati gráf formájában a feladatok a gráf csúcspontjai irányított él: előző feladatból az aktuális feladatba időbeliség: feliratokkal
IGYR-7 p. 21/4 Erőforrás foglaltsági táblázat - példa Erőforrás foglatságok elhelyezése az időtengelyen minden erőforrás külön sorban időtengely vízszintes konfliktus (több feladat igényelné ugyanazt az erőforrást) jelzése piros színnel
IGYR-7 p. 22/4 Erőforrás-korlátozás nélküli statikus ütemezés Kritikus út módszer
IGYR-7 p. 23/4 Kritikus út módszer - CPM CPM: Critical Path Method Adott az ütemezendő elemi műveletek halmaza (activity) minden elemi művelet előfeltételei (szintén elemi műveletek) parciális rendezés (egymásutániság) minden elemi művelet végrehajtási ideje Táblázatba rendezhető Grafikus leírás: CPM gráf élei megfelelnek az elemi műveleteknek (egy-egy értelmű megfeleltetés) csúcsok megfelelnek eseményeknek (rendszer-állapotok bekövetkezésének)
IGYR-7 p. 24/4 Mik a módszer erősségei és gyengeségei? Erősségek: a projektet alkotó tevékenységekre összpontosít azonosítja a szükséges kapcsolatokat a tevékenységek között minden egyes tevékenység becsült időtartamát ábrázolja kiszámolja a leggazdaságosabb megvalósítási módot Gyengeségek: sok tevékenység esetén bonyolult az alkalmazása
IGYR-7 p. 25/4 Egy egyszerű példa D(2) (A,D) 5 I(2) (A,D,I) 8 A(3) (A) 2 E(3)!!D(0)!! I(2) (NIL) 1 B(4) 3 F(5) 6 J(1) 9 (B) (A,B,D,E,F) (A,B,C,D,E,F,G,H,I,J,K) C(5) (C) 4 G(4) K(5) H(6) 7 (B,C,G,H) Művelet Előfeltételek Idő (min) Művelet Előfeltételek Idő (min) A - 3 G B 4 B - 4 H C 6 C - 5 I D 2 D A 2 J D, E, F 1 E A 3 K G, H 5 F B 5 GOAL *
A kritikus út kiszámítása 1 Algoritmikusan, két menetben I. Előrefelé haladó számítás: legkorábbi bekövetkezési idők 1. A kezdő esemény kezdeti idejét nullára állítjuk 2. Minden műveletet akkor kezdünk, ha az előfeltételek teljesültek 3. Minden esemény legkorábbi bekövetkezési ideje (E i ) a beléje vezető műveletek befejeződési idejeinek maximuma II. Visszafelé haladó számítás: legkésőbbi bekövetkezési idők 1. A befejező esemény legkésőbbi bekövetkezési idejét a legkorábbira állítjuk 2. Minden művelet legkésőbbi bekövetkezési idejét a vég-esemény legkésőbbi bekövetkezési idejéből számítjuk, levonva belőle a művelet végrehajtási idejét 3. Minden esemény legkésőbbi bekövetkezési ideje (L i ) a belőle induló műveletek kezdő idejeinek minimuma IGYR-7 p. 26/4
IGYR-7 p. 27/4 Az egyszerű példa - előrefelé (A,D) 5 [5, ] I(2) (A,D,I) 8 [7, ] (A) [3, ] D(2) 2!!D(0)!! I(2) A(3) E(3) [0, ] [4, ] (NIL) 1 B(4) 3 F(5) 6 J(1) 9 (B) (A,B,D,E,F) (A,B,C,D,E,F,G,H,I,J,K) C(5) G(4) [9, ] max(5,6,9) [16, ] max(7,10,16) (C) 4 [5, ] H(6) K(5) 7 (B,C,G,H) [11, ] max(8,11)
IGYR-7 p. 28/4 Az egyszerű példa - visszafelé [0, 0] min(8,3,0) (NIL) 1 A(3) B(4) [3, 11 ] min(11,12) (A) 2 [4, 7 ] min(9,7) 3 D(2) E(3) F(5) (A,D) [5,14 ] I(2) 5!!D(0)!! I(2) 6 J(1) (A,D,I) 8 9 [7, ] C(5) (C) (B) 4 [5, 5 ] H(6) G(4) (A,B,D,E,F) K(5) (A,B,C,D,E,F,G,H,I,J,K) [9,14 ] min(15,14) [16,16 ] 7 (B,C,G,H) [11, 11 ]
IGYR-7 p. 29/4 A kritikus út kiszámítása 2 Csúszási idők 1. Eseményekre: a legkésőbbi és a legkorábbi bekövetkezési idő különbsége, S i = L i E i 2. Az i-edik eseményből a j-edikbe vezető műveletre: S ij = L j E i t ij ahol t ij a művelet végrehajtási ideje Kritikus út: azon műveletekből (élekből) áll, amelyek csúszási ideje nulla
IGYR-7 p. 30/4 Az egyszerű példa - kritikus út [0, 0] min(8,3,0) (NIL) 1 A(3) B(4) [3, 11 ] min(11,12) (A) 2 [4, 7 ] min(9,7) 3 D(2) E(3) F(5) (A,D) [5,14 ] I(2) 5!!D(0)!! I(2) 6 J(1) (A,D,I) 8 9 [7, ] C(5) (C) (B) 4 [5, 5 ] H(6) G(4) (A,B,D,E,F) K(5) (A,B,C,D,E,F,G,H,I,J,K) [9,14 ] min(15,14) [16,16 ] 7 (B,C,G,H) [11, 11 ]
IGYR-7 p. 31/4 Gyakorlat statikus ütemezési feladatra Füles edény gyártás
IGYR-7 p. 32/4 A füles edény gyártás feladata Füles edényt szeretnénk gyártáni az alábbi műveletekkel Azonosító Művelet Idő (min) SZ1 szállítás a lap-tárolóból 3 SZ3 szállítás a fül-tárolóból 1 SZ2 lap-szállítás összeszereléshez 2 SZ4 fül-szállítás összeszereléshez 2 SZ5 késztermék szállítás tárolóba 4 G1 lap préselés 3 G2 fül préselés 1 G3 összeszerelés 1 1. Tervezzük meg a műveleti sorrend Petri hálóját! 2. Határozzuk meg a kritikus utat! 3. Ábrázoljunk egy optimális ütemezést Gantt táblázattal és erőforrás foglaltsági táblázattal!
Dinamikus programozás - Gyártásütemezés IGYR-7 p. 33/4
IGYR-7 p. 34/4 Speciális gyártásütemezési feladatok 3. Erőforrás-korlátozás nélküli statikus feladat több művelet végrehajtási lehetőséggel Jellemzői: a rendelésállomány és a nyersanyagok rendelkezésre állása statikus (időben állandó) korlátlan berendezés kapacitás és rendelkezésre állás alternatív (egymást helyettesítő) berendezések legkisebb végrehajtási idejű megoldást keresünk Megoldás: dinamikus programozással
IGYR-7 p. 35/4 Dinamikus programozás Egy dinamikus programozási algoritmus kifejlesztése 4 lépésre bontható fel: 1. Jellemezzük az optimális megoldás szerkezetét. 2. Rekurzív módon definiáljuk az optimális megoldás értékét. 3. Kiszámítjuk az optimális megoldás értékét alulról felfelé történő módon. 4. A kiszámított információk alapján megszerkesztünk egy optimális megoldást. A dinamikus programozás minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja meg, az eredményt egy táblázatban tárolja, és ezáltal elkerüli az ismételt számítást, ha a részfeladat megint felmerül.
IGYR-7 p. 36/4 Szerelőszalag ütemezése Mindegyik szalagnak n állomása van, melyek indexei j = 1,...,n. S ij jelöli az i-edik (i = 1 vagy 2) szalag j-edik állomását. Az első szalag j-edik állomása (S 1j ) ugyanazt a funkciót látja el, mint a második szalag j-edik állomása (S 2j ). Az S ij állomáson a műveleti időt a ij jelöli.
IGYR-7 p. 37/4 Szerelőszalag ütemezése -Példa Autógyártás alvázra történő alkatrész-rászereléssel A teljes leszámlálás számítási ideje Ω(2 n ). Ez nagy n mellett elfogadhatatlan.
IGYR-7 p. 38/4 1. lépés: a legrövidebb gyártási út szerkezete Tekintsük a lehetséges legrövidebb utat, ahogy egy alváz a kiindulási helyzetből túljut az S 1j állomáson. Ha j = 1, akkor csak egy lehetőség van, és így könnyű meghatározni a szükséges időt. j = 2,...,n esetén két lehetőség van: Az alváz érkezhet közvetlenül az S 1,j 1 állomásról, amikor ugyanannak a szalagnak a (j 1)-edik állomásáról a j-edik állomására való átszállítás ideje elhanyagolható. Az alváz S 2,j 1 felől érkezik, az átszállítás ideje t 2,j 1. Tegyük fel, hogy az S 1 j állomáson való túljutás leggyorsabb módja az, hogy oda az S 1,j 1 felől érkezünk. Az alváznak a legrövidebb módon kell túljutnia az S 1,j 1 állomáson, mert ha volna egy gyorsabb mód, hogy az alváz túljusson a S 1,j 1 állomáson, akkor ezt használva magán S 1,j -n is hamarabb jutna túl, ami ellentmondás.
IGYR-7 p. 39/4 1. lépés: a legrövidebb gyártási út szerkezete Általánosabban fogalmazva azt mondhatjuk, hogy a szerelőszalag ütemezésének (hogy megtaláljuk a legrövidebb módot az S ij állomáson való túljutásra) optimális megoldása tartalmazza egy részfeladat (vagy az S 1,j 1 vagy az S 2,j 1 állomáson való leggyorsabb áthaladás) optimális megoldását. Erre a tulajdonságra optimális részstruktúraként fogunk hivatkozni. Azaz részfeladatok optimális megoldásaiból megszerkeszthető a feladat optimális megoldása.
IGYR-7 p. 40/4 2. lépés: a rekurzív megoldás Az optimális megoldás értékét a részfeladatok optimális értékeiből rekurzívan fejezzük ki. A részfeladatok legyenek mindkét szalag j-edik állomásán való leggyorsabb áthaladás megkeresésének a feladatai j = 1,...,n mellett. Jelölje f i [j] azt a legrövidebb időt, ami alatt az alváz túl tud jutni az S ij állomáson. Célunk annak a legrövidebb időnek a meghatározása, ami alatt az alváz az egész üzemen keresztül tud haladni. Ezt az időt f jelöli. f = min{f 1 [n] + x 1,f 2 [n] + x 2 } f 1 [1] = e 1 + a 11 f 2 [1] = e 2 + a 21
IGYR-7 p. 41/4 2. lépés: a rekurzív megoldás Hogyan kell kiszámolni az f i [j]-t j = 2,...,n és i = 1,2 esetén? f 1 [j] = min{f 1 [j 1]+a 1j,f 2 [j 1]+t 2,j 1 +a 1j }, ha j = 2,...,n. f 2 [j] = min{f 2 [j 1]+a 2j,f 1 [j 1]+t 1,j 1 +a 2j }, ha j = 2,...,n. A következő rekurzív egyenletet kapjuk: f 1 [j] = f 2 [j] = { { e 1 + a 11, ha j = 1, min{f 1 [j 1] + a 1j,f 2 [j 1] + t 2,j 1 + a 1j }, ha j 2 e 2 + a 21, ha j = 1, min{f 2 [j 1] + a 2j,f 1 [j 1] + t 1,j 1 + a 2j }, ha j 2
IGYR-7 p. 42/4 2. lépés: a rekurzív megoldás Az f i [j] mennyiségek a részfeladatok optimális érékei. Annak érdekében, hogy vissza tudjuk keresni a legrövidebb utat, definiáljuk l i [j]-t mint azt a szerelőszalagot, amelyiknek a j 1-edik állomását használtuk az S ij -n való leggyorsabb keresztülhaladáskor. Itt i = 1,2 és j = 2,...,n. (Nem definiáljuk l i [1]-et, mert S i1 -t egyik szalagon sem előzi meg másik állomás.) Az l szalag definíció szerint az, amelyiknek az utolsó állomását használjuk az egész üzemen való áthaladáskor. Az l i [j] értékek segítségével lehet nyomon követni a legrövidebb utat.
IGYR-7 p. 43/4 3. lépés: a legrövidebb átfutási idő kiszámítása Sokkal jobban járunk, ha az f i [j] értékeket más sorrend szerint számoljuk, mint az a rekurzív módszerből adódik. Vegyük észre, hogy j... 2 esetén f i [j] csak f 1 [j 1] -től és f 2 [j 1] -től függ. Ha az f i [j] értékeket az állomások j indexének növekvő sorrendjében számoljuk, akkor a legrövidebb átfutási idő meghatározása Θ(n) ideig tart.
IGYR-7 p. 44/4 3. lépés: a legrövidebb átfutási idő kiszámítása ALGORITMUS1(a,t,e,x,n) 1. f 1 [1] := e 1 + a 11 f 2 [1] := e 2 + a 21 2. for j := 2 to n 3. do if f 1 [j 1] + a 1j f 2 [j 1] + t 2,j 1 + a 1j 4. then f 1 [j] := f 1 [j 1] + a 1j l 1 [j] := 1 5. else f 1 [j] := f 2 [j 1] + t 2,j 1 + a 1j l 1 [j] := 2 6. if f 2 [j 1] + a 2j f 1 [j 1] + t 1,j 1 + a 2j 7. then f 2 [j] := f 2 [j 1] + a 2j l 2 [j] := 2 8. else f 2 [j] := f 1 [j 1] + t 1,j 1 + a 2j l 2 [j] := 1 9. if f 1 [n] + x 1 f 2 [n] + x 2 10. then f = f 1 [n] + x 1 l = 1 11. else f = f 2 [n] + x 2 l = 2
IGYR-7 p. 45/4 4. lépés: a legrövidebb átfutási idejű út f i [j], f, l i [j] és l kiszámítását követően meg kell szerkeszteni az üzemen való legrövidebb áthaladást biztosító utat. Az eljárás az út állomásait az indexek csökkenő sorrendjében nyomtatja ki. ALGORITMUS2(l,n) 1. i := l 2. print i"-edik szalag" n"-edik állomás" 3. for j := n downto 2 4. do i := l i [j] 5. print i"-edik szalag (" j 1")-edik állomás"
IGYR-7 p. 46/4 Gyakorlat dinamikus programozásra Szerelőszalag ütemezési példa
IGYR-7 p. 47/4 Feladat Kövessük végig a dinamikus programozással meghatározott optimális ütemezés lépéseit az egyszerű, 5 állomást tartalmazó szerelőszalag példán: