Pianificazione dei progetti Alberto Caprara DEIS - Università di Bologna acaprara@deis.unibo.it
Tecniche reticolari Metodologie per la risoluzione di problemi di pianificazione di progetti Progetto: insieme di attività A i aventi durata d i ( i=1,,n ) insieme di relazioni di precedenza tra attività: Es. A i = scavo fondamenta,, A j = costruzione struttura A i p A j A j non può iniz. prima del termine di A i Problema: determinare l istante di inizio di ogni attività in modo che la durata totale del progetto (makespan) sia minima PRO.2
Tecniche PERT-CPM Se risorse infinite probl. facile (polinomiale) CPM = Critical Path Method (durate deterministiche) PERT = Program Evaluation and Review Technique (durate aleatorie) Stesse basi concettuali Esistono numerose varianti (gen. NP): richiesta di risorse (scarse) associate alle attività durate dipendenti dall assegnazione di risorsa PRO.3
Rappresentazione del progetto Paradigma Activity on Arcs (AOA), Activity Network: Progetto un grafo orientato pesato aciclico (rete): archi A h = (v i, v j ) rappresentano attività non interrompibili vertici rappresentano fine o inizio di attività pesi d(v i, v j ) sono la durata dell attività (v i, v j ) il grafo rappresenta relazioni di precedenza: A i p A j evento finale di A i evento iniziale di A j cammino contenente A i prima di A j PRO.4
attività fittizie archi di durata nulla usati per imporre relazioni di precedenza Es. { A, B, C, D, E } B D A p D A p E B p D C p E A C E PRO.5
Activity Network: assunzioni un attività non può essere interrotta un evento ha durata nulla nessuna attività uscente da un evento v i può essere iniziata prima che siano terminate tutte le attività entranti in v i il grafo deve essere aciclico: C A B A p B, B p C, C p A impossibile!!! PRO.6
Esempio costruzione rete (1) Progetto: { A, B, C, D, E } A p B, A p C, C p D, B p E, C p E B E A C D PRO.7
Esempio Progetto: { A, B, C, D, E } A p B, A p C, C p D, B p E, C p E A B E C D PRO.8
Precedence Network Rappresentazione alternativa: Paradigma Activity on Nodes (AON), Precedence Network: vertici A i = v i rappresentano attività pesi d(v i ) sono la durata dell attività v i archi (v i, v j ) relazioni di precedenza le due rappresentazioni sono equivalenti PRO.9
Precedence Network: Esempio Progetto: { A, B, C, D, E } A p B, A p C, C p D, B p E B E A C D PRO.1
Activity Network: convenzioni (1) Il grafo non può contenere archi multipli B B A A PRO.11
Activity Network: convenzioni (2) Il grafo deve avere un solo vertice iniziale (semigrado entrante nullo) B D A C E PRO.12
Activity Network: convenzioni (3) Il grafo deve avere un solo vertice finale (semigrado uscente nullo) B D A C E PRO.13
Numerazione dei vertici I vertici devono essere numerati in modo che: arco (v i, v j ) A, si abbia i < j Sempre possibile il grafo è aciclico Algoritmo: cerca un vertice senza archi entranti etichetta il vertice con il prossimo indice rimuovi gli archi uscenti PRO.14
Procedure NUMBER begin aggiungi a G i vertici fittizi v e v n+1 e gli archi relativi; B := A; k := ; while k n+1 do { Γ - e Γ + sono relativi al grafo (V,B) } scegli vertice v V : Γ - (v) = ; attribuisci a v il numero k; B := B \{(v, v i ) : v i Γ + (v) }; k := k+1; end end. PRO.15
Esempio v 3 B D v 4 v 8 A v v 1 v 2 v 9 v 5 C E v 6 v 7 PRO.16
Definizione della rete Per ogni attività bisogna stabilire: quali attività devono precederla quali attività devono seguirla P = { A,B,C,D,E,F,G } A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G pred succ A - B, C B A D, E C A D, E, F D B, C G E B, C G F C G G D,E,F - PRO.17
Esempio costruzione rete (1) P = { A,B,C,D,E,F,G } A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G B D A E G C F PRO.18
Esempio costruzione rete (2) A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G B D A E G C F PRO.19
Esempio costruzione rete (3) A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G B D A E G C F PRO.2
Esempio costruzione rete (4) A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G B D A E G C F PRO.21
Esempio costruzione rete (5) A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G D A B E C F G PRO.22
Esempio costruzione rete (6) A p B, A p C, B p D, B p E, C p D, C p E, C p F, D p G, E p G, F p G v 1 A v 2 B P A, B, C, D, E, F, G v 4 { } D E v 5 v 8 v C v 3 F v 6 G v 7 PRO.23
Critical Path Method Cammino: sequenza di attività non sovrapponibili Makespan lunghezza di ogni cammino da v a v n+1 D,7 v 4 v 8 A,7 v v 1 v 2 v 9 v 3 B,5 v 5 C,8 E,4 v 6 v 7 PRO.24
Critical Path Method (2) Makespan = lunghezza del cammino più lungo (LPP) dall evento iniziale al finale LPP : algoritmo polinomiale per grafici Per aciclici ogni evento v k, k =,, n+1 si determina: TMIN k = istante minimo in cui v k può accadere TMAX k = istante massimo in cui v k può accadere senza ritardare l istante di completamento del progetto (=TMIN n+1 ) PRO.25
Calcolo di TMIN TMIN k = istante minimo in cui v k può accadere dipende dagli eventi e le attività che lo precedono 5 v i 5 v j 7 TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; v k 7 PRO.26
Calcolo di TMAX TMAX k = istante massimo in cui v k può accadere senza ritardare il completamento del progetto dipende dagli eventi e le attività che lo seguono 5 5 v k v i 1 7 7 v j 14 TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; PRO.27
Procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. PRO.28
Esempio procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. v 3 B,5 D,7 v 4 v 8 A,7 v v 1 v 2 v 9 v 5 C,8 E,4 v 6 v 7 PRO.29
Inizializzazione TMIN procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. v 3 B,5 D,7 v 4 v 8 A,7 v v 1 v 2 v 9 v 5 C,8 E,4 v 6 v 7 PRO.3
Calcolo dei TMIN procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. 7 14 B,5 D,7 v 3 v 4 v 8 14 A,7 v v 1 v 2 7 v 9 v 5 C,8 E,4 v 6 v 7 8 12 PRO.31
Inizializzazione TMAX procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. 7 14 B,5 D,7 v 3 v 4 v 8 14 A,7 v v 1 v 2 7 v 9 v 5 C,8 E,4 v 6 v 7 14 8 12 PRO.32
Calcolo dei TMAX procedure CPM begin TMIN := ; for k := 1 to n+1 do TMIN k := max i:(vi, v k ) A { TMIN i + d(v i, v k ) }; TMAX n+1 := TMIN n+1 ; for k := n downto do TMAX k := min i:(vk, v i ) A { TMAX i - d(v k, v i ) }; end. 2 7 7 14 14 B,5 D,7 v 3 v 4 v 8 14 A,7 v v 1 v 2 7 7 v 9 v 5 C,8 E,4 v 6 v 7 14 2 8 1 12 14 PRO.33
Informazioni caratteristiche v i v j d ij Attività A h = (v i, v j ) = A ij Early Start Time: EST (A h )= TMIN i Late Start Time: LST (A h ) = TMAX j - d(v i, v j ) Float (slittamento): S (A h ) = LST (A h )-EST (A h ) Attività critica = A h : LST (A h )= EST (A h ) Cammino critico = cammino da v a v n+1 formato da sole attività critiche PRO.34
Informazioni caratteristiche Att. v i v j EST(v i, v j ) LST(v i, v j ) S(v i, v j ) A 1 2 B 3 4 2 2 C 5 6 2 2 D 4 8 7 7 E 6 7 8 1 2 Attività critiche 2 7 7 14 14 B,5 D,7 v 3 v 4 v 8 Cammino critico: { v, v 1, v 2, v 4, v 8, v 9 } 14 A,7 v v 1 v 2 7 7 v 9 v 5 C,8 E,4 v 6 v 7 14 2 8 1 12 14 PRO.35
Diagramma di Gantt La soluzione può essere rappresentata con il diagramma di Gantt C E B A D 1 2 3 4 5 6 7 8 9 1 11 12 13 14 PRO.36
Soluzione del problema B A C D E v 3 B,5 D,7 v 4 v 8 A,7 v v 1 v 2 v 9 v 5 C,8 E,4 v 6 v 7 2 7 7 14 14 B,5 D,7 v 3 v 4 v 8 14 14 A,7 v v 1 v 2 7 7 v 9 v 5 C,8 2 8 1 E,4 v 6 v 7 12 14 Att. i j EST(v i, v j ) LST(v i, v j ) S(v i, v j ) A 1 2 B 3 4 2 2 C 5 6 2 2 D 4 8 7 7 E 6 7 8 1 2 B A C E 1 2 3 4 5 6 7 8 9 1 11 12 13 14 D Grafo Numeraz. vertici Makespan Informaz. Gantt PRO.37
Costruzione di una casa (1) AScavo fondamenta B Costruzione struttura CConnessione tubature D Tubi acqua e riscaldamento E Posa cavi F Pavimenti e scarichi G Muri interni H Tetto e grondaie I J Finiture interne Pittura esterna K Pulizia finale PRO.38
Costruzione di una casa (2) Attività Descrizione Durata (gg) Predecessori A Scavo fondamenta 4 - B Costruzione struttura 12 A C Connessione tubature 3 A D Tubi acqua e riscaldamento 6 B E Posa cavi 4 B F Pavimenti e scarichi 3 B,C G Muri interni 3 D H Tetto e grondaie 2 E,F I Finiture interne 5 G J Pittura esterna 3 H K Pulizia finale 1 I,J PRO.39
Costruzione di una casa (3) v 3 D,6 v 5 G,3 v 7 B,12 I,5 A,4 v 1 v 2 E,4 v 9 K,1 v 1 C,3 J,3 v 4 v 6 v F,3 H,2 v 11 v 8 PRO.4
Soluzione 16 16 22 22 25 25 D,6 G,3 v 3 v 5 v 7 B,12 A,4 v 1 v 2 4 4 E,4 3 3 I,5 31 31 K,1 v 9 v 1 C,3 J,3 16 v 4 22 v 6 F,3 H,2 2 25 22 v 8 27 PRO.41
Realizzazione prodotto Z Z si ottiene assemblando X ed Y realizzati in due reparti diversi prima dell inizio della produzione: acquisto materie prime addestramento del personale (diverso per X e Y) prima dell assemblaggio i prodotti Y sono ispezionati i prodotti Z sono collaudati e poi stoccati in aree preventivamente predisposte la predisposizione delle aree non puo precedere l inizio dell assemblaggio di Z PRO.42
Realizzazione prodotto Z (2) Attività Durata Pred. A) Acquisto materie prime 9 --- B) Addestramento rep. X 1 --- C) Addestramento rep. Y 5 --- D) Realizzazione parte X 8 A,B E) Realizzazione parte Y 7 A,C F) Ispezione parte Y 4 E G) Assemblaggio 6 D,F H) Collaudo prodotto 5 G I) Predisposizione stoccaggio 8 D,F L) Stoccaggio 2 H,I PRO.43
Realizzazione Prodotto Z (3) Attività Durata Pred. A) 9 --- B) 1 --- C) 5 --- D) 8 A,B E) 7 A,C F) 4 E G) 6 D,F H) 5 G I) 8 D,F L) 2 H,I B,1 v 3 A,9 v 1 v 2 D,8 F,4 v 6 G,6 I,5 v 7 v 8 H,5 C,5 L,2 v 4 E,7 v 5 v 9 PRO.44
Realizzazione Prodotto Z (4) 1 v 3 12 D,8 2 2 26 26 v 6 G,6 v 7 B,1 A,9 v 1 v 2 F,4 I,5 v 8 H,5 31 31 C,5 9 9 L,2 v 4 E,7 v 5 v 9 33 33 9 9 16 16 PRO.45
Modello matematico CPM t i = istante in cui si verifica l evento i min t n t j -t i d ij (v i,v j ) A t i i = 1,, n modello continuo PRO.46
CPM Tempi-Costi In alcuni casi la durata di una attività può essere diminuita utilizzando maggiori risorse maggiori risorse maggiori costi costo c A d N,c N d A,c A durata e costo Normali durata e costo Accelerati c N d A d N tempo PRO.47
Costo di accelerazione c A c N d A d N c ij = (c ija -c ijn ) (d ija -d ijn ) PRO.48
Modello CPM Tempi-Costi t i = istante in cui si verifica l evento i y ij = riduzione della durata dell attività (i,j) A T = durata desiderata del progetto min Σ (i,j) A ( c ijn + c ij y ij ) (v i,v j ) A t n T t j -t i d ijn -y ij (v i,v j ) A y ij d ijn -d A ij t i i = 1,, n PRO.49