Projektütemezés Virtuális vállalat 06-07. félév 5. gyakorlat Dr. Kulcsár Gyula
Projektütemezési feladat megoldása
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.
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 - 3-3 - 4 4, 5, 3 6 4 job on node reprezentáció: 4 6 3 5 job on arc reprezentáció: 4 5 6 3 7
Projekt ábrázolása Feladat Végrehajtási idő [időegység] Megelőző feladat(ok) - 3 3 4 4 5 3 6 4, 5 7 3 4, 5 job on arc reprezentáció: 4 6 3 5 7 8
Projekt reprezentálása precedencia gráffal Feladat Végrehajtási idő [időegység] Megelőző feladat(ok) - 3 3 4 4 5 3 6 4, 5 7 3 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 3 5 7
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. 0
Projektütemezési feladat erőforráskorlátok nélkül A j feladat: végrehajtási ideje: legkorábbi lehetséges kezdési időpontja: legkorábbi lehetséges befejezési időpontja: legkésőbbi megengedett befejezési időpontja: 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.
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 3. lépés: A legkorábbi projekt-befejezési időpont: C = { ' ' '} max C,C,...,C max n 4
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 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 3. lépés: Ellenőrizzük, hogy '' k és S j = C j - p j. t = min{ S,...,S }. '' '' s 6 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 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 3 4 5 6 7 8 9 0 3 4 p j 5 6 9 7 0 6 0 9 7 8 7 5 4 7 6 9 0 4 3 3 5 8
Előre haladó eljárás j 3 4 5 6 7 8 9 0 3 4 p j 5 6 9 7 0 6 0 9 7 8 7 5 5+6= +=3 3+0=33 4 7 33+9=4 5 4+=6 C = 56 max 6+0=36 6 9 0 43+8=5 5+5=56 4 5+9=4 3 5 8 36+7=43 3 43+7=50 4+7= 6+6=3 C max = A feladatok legkorábbi befejezési időpontjainak számítása
Visszafelé haladó eljárás j 3 4 5 6 7 8 9 0 3 4 p j 5 6 9 7 0 6 0 9 7 8 7 5-6=6 4-= 34-0=4 4 7 43-9=34 5-5=0 6-=4 36-0=6 6 9 0 43-7=36 5-8=43 56-5=5 4 56 3 3 4-9=5 5 8 5-7=44 6-7=9 36-6=30 A feladatok legkésőbbi indítási időpontjainak számítása
Kritikus útvonal 4 7 0 6 9 4 3 3 5 8
CPM példa Feladat Műveleti idő Megelőző feladat(ok) Job p(j) Predecessors - 3-3 - 4 4, 5,3 6 4 Projekt befejezés (Sink) 0 3 4 0 S 4 6 T Projekt indítás (Source) 3 5
Job p(j) Predecessors S' C'' - 0 3 3-0 3 3-0 6 4 4, 3 7 5,3 3 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 S 0 0 3 3 4 0 4 6 T 0 0 3 3 7 7 8 8 8 3 5 0 6 3 8
Erőforrás korlátozott projektütemezés (RCPS) A munkák erőforrást igényelnek: Job p(j) Predecessors S' C'' R(,j) - 0 3 3 3-0 3 3-0 6 4 4, 3 7 5,3 3 8 3 6 4 7 8 3 6 5 4 3 3 5 Erőforrás-igény 4 6 3 4 5 6 7 8 4
Erőforrás korlátozott projektütemezés (RCPS) Tételezzük fel, hogy R = 4, ekkor: 6 5 4 3 3 4 5 6 3 4 5 6 7 8 9 0 C max nő időegységgel! 5
RCPSP Példa 4 Job p(j) P(j) S' C'' R(,j) R(,j) - 0 3 3 3-0 3 3-0 6 4 4, 3 7 5,3 3 8 3 6 4 7 8 3 R = 4 3 4 6 5 0 4 6 8 0 R = 3 0 4 6 8 0 4 6 5 6
Köszönöm a figyelmet! Dr. Kulcsár Gyula Miskolci Egyetem Alkalmazott Informatikai Tanszék kulcsar@ait.iit.uni-miskolc.hu http://ait.iit.uni-miskolc.hu/~kulcsar