Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 06/7. félév 7. Előadás Dr. Kulcsár Gyula egyetemi docens
Tartalom. A projektütemezés alapjai.. Erőforrás-korlát nélküli projektütemezési feladatok megoldása CPM-módszerrel.. Erőforrás-korlátos projektütemezési feladatok modellezése és heurisztikus megoldása.
Felhasznált irodalom Michael L. Pinedo: Planning and Scheduling in Manufacturing and Services. Springer, (nd ed.), 009
A projektütemezés alapjai
Projekt: Projektütemezés Egy nagy, összetett, általában egyedi igény alapján előállítandó termék vagy nyújtandó szolgáltatás előállítására/teljesítésére irányú törekvés, amely általában nagyszámú komponens feladat/aktivitás végrehajtását igényli. Projektütemezés: Projekt(ek) időbeli végrehajtásának megtervezése úgy, hogy a megfogalmazott célok teljesüljenek figyelembe véve az előírt korlátozásokat.
Cél: Projektütemezés jellemzői egy vagy többcélú optimalizálás, amelyben sokféle szempont szerepelhet (pl. minőség, idő, költség, felhasználói elégedettség stb.). Feladatok/aktivitások hálózata alakul ki (pl. megelőzési relációk alapján). Korlátozottan/korlátlanul rendelkezésre álló erőforrásokat kell figyelembe venni.
Projekt példák Termelés Tervezés Kutatás/fejlesztés Menedzsment Építés Karbantartás, fenntartás Implementálás, telepítés stb.
Hierarchikus tervezés Stratégiai Taktikai Taktikai/ operatív Nagyvonalú folyamattervezés Részletes folyamattervezés Stratégiai erőforrás tervezés Nagyvonalú kapacitástervezés Projektütemezés Operatív Részletes ütemezés 8
Egy projekt struktúrája Projekt Fő tevékenység Fő tevékenység Fő tevékenység RCCP Feladat Feladat Feladat Feladat Feladat Feladat Projektütemezés 9
A projektütemezés alapjai Projekt/projektek reprezentálása (precedencia gráfok) Modellek és megoldási módszerek Kritikus útvonal módszer (egyszerű) (Critical Path Method, CPM) Erőforrás-korlátos projektütemezés (bonyolult) (Resource-Constrained Project Scheduling, RCPS) Prioritás/szabályalapú megoldási módszerek Tudás-intenzív megoldási módszerek Kiterjesztett modellek és módszerek (összetett)
Projekt ábrázolása Feladat p(j) Előfeltétel - - - 4 4, 5, 6 4 job on node reprezentáció: 4 6 5 job on arc reprezentáció: 4 5 6
Projekt ábrázolása Feladat Végrehajtási idő [időegység] Megelőző feladat(ok) - 4 4 5 6 4, 5 7 4, 5 job on arc reprezentáció: 4 6 5 7
Projekt reprezentálása precedencia gráffal Feladat Végrehajtási idő [időegység] Megelőző feladat(ok) - 4 4 5 6 4, 5 7 4, 5 job on node ábrázolás Csomópont: feladat A csomópontok számozottak. Irányított él: kötelező sorrendiség Nincs irányított körút. Nincs redundáns él. 4 6 5 7
Erőforrás-korlát nélküli projektütemezési feladatok megoldása CPM-módszerrel
Projektütemezési feladat erőforráskorlátok nélkül Feltételezzük, hogy: korlátlan erőforrások állnak rendelkezésre párhuzamosan, adott n feladat megelőzési relációkkal. minden egyes feladat p j végrehajtási idejét ismertjük. Az ütemezés célja: a projekt befejezési időpontjának (makespan) minimalizálása. 5
A j feladat: Projektütemezési feladat erőforráskorlátok nélkül végrehajtási ideje: p j legkorábbi lehetséges kezdési időpontja: S j legkorábbi lehetséges befejezési időpontja: C j legkésőbbi megengedett befejezési időpontja: C j időtartaléka: slack C p S '' ' j j j j Kritikus feladat: nincs tartaléka slack j 0 Kritikus útvonal: kritikus feladatok láncolata. 6
Kritikus útvonal módszer (Critical Path Method, CPM) A CPM módszer két algoritmusból áll: Forward procedure Backward procedure
Kritikus útvonal módszer (Critical Path Method, CPM) Előre haladó eljárás (Forward procedure): Kezdeti időpontból indul, a precedencia gráfon végighaladva az irányított élek mentén kiszámítja minden feladat esetében a legkorábbi megengedett indítási és befejezési időpontot. Az utolsónak elkészülő feladat adja meg a projekt befejezési időpontját.
Előre haladó eljárás (Forward procedure). lépés: Legyen t = t s (pl. t s = 0 az indítás referencia időpontja). A megelőző feladattal nem rendelkező minden egyes j feladat esetében legyen S j = t és C j = t + p j.. lépés: A megelőző feladattal rendelkező minden egyes j feladat esetében legyen induktív módon: ' ' S j max Ck és C j = S j + p j. all k j. lépés: A legkorábbi projekt-befejezési időpont: C max C,C,...,C ' ' ' max n 9
Kritikus útvonal módszer (Critical Path Method, CPM) Visszafelé haladó eljárás (Backward procedure): A projekt befejezési időpontjából indul, a precedencia gráfon az irányított élek mentén visszafelé haladva kiszámítja minden feladat esetében a legkésőbbi megengedett befejezési és indítási időpontot tekintettel arra, hogy a projektbefejezési határidő még tartható legyen.
Visszafelé haladó eljárás (Backward procedure). lépés: Legyen t = C max A rákövetkező feladattal nem rendelkező minden egyes j feladat esetében S n legyen C j = C max és S j = C max - p j.. lépés: A rákövetkező feladattal rendelkező minden egyes j feladat esetében legyen C '' j min S j all k. lépés: Ellenőrizzük, hogy '' k és S j = C j - p j. t min{ S,...,S }. '' '' s n
Magyarázat A forward procedure megadja az S j megengedett legkorábbi indítási időpontját minden feladatnak. A backward procedure megadja az S j megengedett legkésőbbi indítási időpontját minden feladatnak. Ha ezek azonosak, akkor a feladat kritikus. Ha ezek különbözőek, akkor a feladatnak van időtartaléka (slack). Kritikus útvonal (critical path): kritikus feladatok láncolata, amely a t s kezdési időponttól a C max befejezési időpontig vezet. Kritikus útvonalból egyszerre több is lehet, ezek akár részben fedhetik is egymást.
CPM példa j 4 5 6 7 8 9 0 4 p j 5 6 9 7 0 6 0 9 7 8 7 5 4 7 6 9 0 4 5 8
Előre haladó eljárás j 4 5 6 7 8 9 0 4 p j 5 6 9 7 0 6 0 9 7 8 7 5 5+6= += +0= 4 7 +9=4 5 4+=6 C 56 max 6+0=6 6 9 0 4+8=5 5+5=56 4 5+9=4 5 8 6+7=4 4+7=50 4+7= 6+6= C max = A feladatok legkorábbi befejezési időpontjainak számítása
Visszafelé haladó eljárás j 4 5 6 7 8 9 0 4 p j 5 6 9 7 0 6 0 9 7 8 7 5-6=6 4-= 4-0=4 4 7 4-9=4 5-5=0 6-=4 6-0=6 6 9 0 4-7=6 5-8=4 56-5=5 4 56 4-9=5 5 8 5-7=44 6-7=9 6-6=0 A feladatok legkésőbbi indítási időpontjainak számítása
Kritikus útvonal 4 7 0 6 9 4 5 8
CPM példa Feladat Műveleti idő Megelőző feladat(ok) Job p(j) Predecessors - - - 4 4, 5, 6 4 Projekt befejezés (Sink) 0 4 0 S 4 6 T Projekt indítás (Source) 5
Job p(j) Predecessors S' C'' - 0-0 - 0 6 4 4, 7 5, 8 6 4 7 8 CPM példa (folyt.) Kritikus feladat (Critical job): S + p = C = C = S + p Jelölés: p j S C 0 0 4 0 S 4 6 T 0 0 0 7 7 8 8 8 5 0 6 8
Erőforrás-korlátos projektütemezési feladatok modellezése és heurisztikus megoldása
Erőforrás-korlátos projektütemezés Resource Constrained Project Scheduling (RCPSP)
Projektütemezés Erőforrás-korlátok nélkül viszonylag egyszerű. Erőforrás-korlátokkal nagyon bonyolult: amikor a korlátozottan rendelkezésre álló erőforrások miatt bizonyos munkák (jobs) nem hajthatók végre párhuzamosan diszjunktív élek jelennek meg a gráfban. Például: Jobs 4 5 p(j) 8 4 6 4 4 R(,j) R(,j) 0 4 0 Erőforrás R R Korlát 4 8 4 5
Diszjunktív élek Tegyük fel, hogy R =4. A következő munkák nem hajtók végre párhuzamosan: & & 6 4 & 5 5 & 6 4 Job p(j) Predecessors S' C'' R(,j) - 0-0 - 0 6 4 4, 7 5, 8 6 4 7 8 6 5 diszjunktív élek
RCPSP n munka (job) j=,,n N erőforrás i=,,n R k :a k erőforrás korlátja (rendelkezésre állás) p j : a j munka (job) végrehajtási ideje R kj : a j munka (job) igénye az k erőforrásból P j : a j munkát (job-ot) közvetlenül megelőző munkák halmaza (predecessors).
RCPSP Cél: a projekt befejezési Cmax max C j időpontjának (C max ) minimalizálása: Korlátozások: a T=0 időpont előtt egyetlen munka sem indíthtó a precedencia korlátozásokat be kell tartani az erőforrások kapacitása véges ' j 4
RCPSP (példa) A munkák erőforrást igényelnek: Job p(j) Predecessors S' C'' R(,j) - 0-0 - 0 6 4 4, 7 5, 8 6 4 7 8 6 5 4 5 Erőforrás-igény 4 6 4 5 6 7 8 5
RCPSP (példa folyt.) Tételezzük fel, hogy R = 4, ekkor: 6 5 4 4 5 6 4 5 6 7 8 9 0 C max nő időegységgel! 6
RCPSP (Példa ) 4 Job p(j) P(j) S' C'' R(,j) R(,j) - 0-0 - 0 6 4 4, 7 5, 8 6 4 7 8 R 4 4 6 5 0 4 6 8 0 R 0 4 6 8 0 4 6 5 7
Prioritási szabály alapú ütemezés (Priority-rule-based scheduling) Generálási sémák (Generation scheme) Soros (serial) Párhuzamos (parallel) Prioritási szabályok (Priority rule) Legkésőbbi befejezési időpont (latest finish time) Minimális időtartalék (minimum slack) 8
Soros ütemezési módszer (Serial scheduling method) Minden feladat egy munkát jelent n munka (job) a kész munkák halmaza: a beütemezett munkák a döntési halmaz: azok a munkák, amelyek indíthatók (az előfeltételeik be vannak ütemezve) a fennmaradó munkák halmaza: a többi munka Az eljárás:. Készítsünk egy üres ütemtervet.. Válasszuk ki a legnagyobb prioritású munkát a döntési halmazból, és ütemezzük a lehető legkorábbi kezdéssel.. Ha a döntési halmaz nem üres, akkor folytassuk a. lépéssel, egyébként vége. 9
Soros ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - Döntési halmaz R 0 4 6 8 40
Soros ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - Döntési halmaz R 0 4 6 8 4
Soros ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - Döntési halmaz R 0 4 6 8 4
Soros ütemezési módszer Példa (#4) Job p(j) P(j) R(,j) v(j) (priority) - - R 0 4 6 8 4
Párhuzamos ütemezési módszer (Parallel scheduling method). Készítsünk egy üres ütemtervet.. Legyen T az a legkorábbi időpont, amikor egy ütemezetlen munka indítható (az előfeltételei teljesültek). Válogassuk ki azokat a munkákat, melyek a T időpontban indíthatók. Jelölje ezen munkák halmazát D.. Ha a D halmaz nem üres, akkor válasszuk ki belőle a legnagyobb prioritású munkát. Ütemezzük a kiválasztott munkát a T indítási időpontra. Folytassuk a. lépéssel. 4. Ha a D halmaz üres, akkor vége. 44
Párhuzamos ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - D T 0 R 0 4 6 8 45
Párhuzamos ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - D T 0 R 0 4 6 8 46
Párhuzamos ütemezési módszer Példa (#) Job p(j) P(j) R(,j) v(j) (priority) - - D T R 0 4 6 8 47
Párhuzamos ütemezési módszer Példa (#4) Job p(j) P(j) R(,j) v(j) (priority) - - R 0 4 6 8 48
Prioritási szabály alapú ütemezés (Priority-rule-based scheduling) Generálási sémák (Generation scheme) Soros (serial) Párhuzamos (parallel) Prioritási szabályok (Priority rule) Legkésőbbi befejezési időpont (latest finish time) Minimális időtartalék (minimum slack) 49
Prioritási szabályok Legkésőbbi befejezési időpont Latest finish time (LFT): v j = - C j Minimális időtartalék Minimum slack (MS): v j = - (C j - p j t*) az aktuális legkorábbi indítási időpont 50
MS prioritási szabály soros ütemezési sémával (#) Job p(j) P(j) R(,j) S'(j) C''(j) v(j) (priority) - 0 0-0 5-5 0 R 0 4 6 8 5
MS prioritási szabály soros ütemezési sémával (#) Job p(j) P(j) R(,j) S'(j) C''(j) v(j) (priority) - 0-0 5-5 0 v j = - (C j - p j t*) R 0 4 6 8 5
MS prioritási szabály soros ütemezési sémával (#) Job p(j) P(j) R(,j) S'(j) C''(j) v(j) (priority) - 0-5 5 5 v j = - (C j - p j t*) R 0 4 6 8 5
Összefoglalás A projektütemezés alapjai Erőforrás korlát nélküli probléma CPM módszer RCPS problema Generálási sémák és prioritási szabályok Keresési algoritmusok (következő előadás) 54
Köszönöm a figyelmet! Az előadásvázlat elérhető az alábbi webcímen: http://ait.iit.uni-miskolc.hu/~kulcsar/serv07.htm