Ottimizzazione nella gestione dei progetti Capitolo 2: Reti di attività CARLO MANNINO Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica
Definizioni di ase Il Progetto è costituito di eventi (o pietre miliari) e di attività (o task) che devono essere eseguite rispettando vincoli di precedenza. Ogni attività ha una durata e richiede risorse (eventualmente nulle) Un evento si riferisce a un insieme di attività che devono essere completate in un certo istante di tempo Risorse sono, ad esempio, il credito, la forza lavoro, le macchine, l equipaggiamento, l energia, lo spazio, ecc. Vincoli di precedenza fra attività: il più tipico è il vincolo fine/inizio: un attività non può cominciare prima che un altra sia finita. Altri esempi di relazioni temporali: inizio/inizio, fine/fine, inizio/fine, con o senza intervalli di tempo (time lag). Tempo: il tempo viene tipicamente misurato in unità prestailite (ore, giorni, ). Orizzonte temporale l insieme dei periodi richiesti per l esecuzione del progetto o disponiili a priori se in presenza di scadenze (deadline).
Tecniche reticolari Scopi:. Definire lo schedule delle attività, cioè associare a ogni attività un istante iniziale. 2. Permettere l analisi dei ritardi, cioè determinare la durata complessiva del progetto e le attività che la determinano. Input:. L insieme delle attività del progetto 2. La durata di ciascuna attività (certa o incerta) 3. Le precedenze temporali. Metodi classici:. CPM (critical path method): durate certe e relazioni temporali di fine/inizio (certe attività possono cominciare solo dopo che altre sono terminate). 2. MPM (metra potential method): come il CPM, ma con relazioni temporali più complicate (inizio/inizio, fine/fine, inizio/fine) 3. PERT (program evaluation & review techique): come CPM ma durate stocastiche..... GERT, VERT,...)
PERT e CPM PERT (Program evaluation & Review Technique) è stato sviluppato dalla marina americana per la pianificazione e il controllo del programma per la costruizione del missile Polaris. L oiettivo principale era quello di terminare il progetto nel più reve tempo possiile. Il PERT può contemplare il caso di incertezze sui tempi di completamento delle singole attività. Grazie a questa tecnica il tempo di completamento dell intero progetto fu ridotto di due anni. CPM (Critical Path Method) è stato sviluppato da Du Pont. L oiettivo è un compromesso (trade-off) fra il costo del progetto e il suo tempo di completamento (è possiile diminuire il tempo di completamento spendendo di più). Gli attuali modelli matematici (e pacchetti applicativi) non distinguono più così nettamente fra PERT e CPM.
Input: Identificazione delle attività Warehouse Uffici Warehouse Riparazioni Edifici Strade d accesso Interni Infrastrutture Fondamena Muri e tetti Infrastrutture Rete fognaria Piloni Prefaricati Seratoi Antincendio Cemento Muri portanti Fognature Parcheggi Tetto carico/scaric Strade Pavimento porte Attività Le attività vengono identificate nella fase di pianificazione e rappresentate nella WBS (nelle foglie). Per ogni attività si devono determinare la durata e i rapporti di interdipendenza temporali con le altre attività, e le risorse richieste. Le attività e i rapporti di precedenza vengono rappresentati con un grafo orientato
Un esempio Per la produzione di un nuovo prodotto sono state individuate le seguenti attività con relativi tempi di completamento Attività Descrizione Tempo Disegno del prodotto (6 settimane) 2 Disegno della confezione (2 settimane) 3 Ordine e ricezione dei materiali per prodotto (3 settimane) Ordine e ricezione dei materiali per confezione (2 settimane) 5 Assemlaggio dei prodotti ( settimane) 6 Preparazione delle Confezioni ( settimana) Impacchettamento dei prodotti ( settimana) 8 Test di mercato del prodotto (6 settimane) 9 Revisione del prodotto (3 settimane) 0 Revisione della confezione ( settimana) Presentazione dei risultati al CdA ( settimana) Descriviamo le relazioni di precedenza (immediate). deve finire prima che 3 cominci ( < 3). Tutte le relazioni sono di tipo Finish/Start 2 <, 3 < 5, < 6, 5 <, 6 <, < 8, 8 < 9, 8 < 0, 9 <, 0 <.
Rete di attività La rete delle attività (rete delle precedenze, grafo dei vincoli) è un grafo orientato che rappresenta le relazioni di precedenza fra attività. Esistono due possiili rappresentazioni: Rete delle attività G = (V, A) Activity-on-arc: gli archi sono attività e i nodi eventi Activity-on-node: i nodi sono attività ed eventi, gli archi rappresentano vincoli di precedenza
Activity on arc (AoA) Primo tipo di rappresentazione: attività sugli archi. (Activity on Arc). La prima introdotta, ancora in uso talvolta Scarsa applicailità a prolemi con vincoli di precedenza generali e vincoli sulle risorse Archi rappresentano le attività Nodi rappresentano eventi: in particolare, dato l arco (u,v), la coda u è l evento inizio dell attività, mentre il nodo testa v rappresenta l evento fine dell attività. a Es. 2 attività, {a, }; a deve finire prima che 2 3 cominci (a precede, a < ) Eventi: inizio a, 2 fine a, inizio, 3 fine
a 2 3 d c e Proprietà delle reti AoA Activity network con 5 attività: {a,, c, d, e} vincoli di precedenza: {a < c, a < d, < e, c < e}. Un attività può cominciare solo quando tutti i predecessori sono terminati. Si osservi che la relazione di precedenza è transitiva (se a < e < c allora a < c). Proprietà reti AoA: Ogni rete AoA ha un nodo sorgente (il nodo evento inizio progetto) e un nodo pozzo (il nodo evento fine progetto). Tutti gli altri nodi hanno almeno un predecessore e almeno un successore. Fra una coppia di eventi (nodi) c è al più un attività (un arco) grafo semplice I cammini orientati corrispondono ad attività che devono essere eseguite in successione. Le attività che devono rispettare vincoli di precedenza si trovano su uno o più cammini orientati.
Attività ed eventi fittizi Per poter costruire una rete AoA associata a un insieme di attività e relative precedenze, rispettando le regole -, talvolta è necessario aggiungere attività o eventi fittizi (dummy) 2 6 a d 3 5 c e Caso : non esiste un unica attività iniziale o finale Attività: {a,, c, d, e} Precedenze: {a < d, a < e, < d, < e, c < d, c < e} 2 6 a d 3 5 8 c e Si aggiunge un nodo fittizio (il nodo ) per l evento inizio progetto, e archi fittizi dal nodo ai nodi che rappresentano l inizio delle prime attività (sorgenti). Similmente per la la fine del progetto si collegano i pozzi al nodo fine progetto.
Attività ed eventi fittizi Caso 2: presenza di sono archi paralleli Se alcune attività deve essere eseguita in parallelo, e cioè tutte le attività hanno lo stesso evento iniziale e finale, isogna introdurre attività ed eventi fittizi. a c 2 a 2 3 c c a 2 3 Caso 3: rappresentazione dei vincoli di precedenza a c 2 6 3 d Sagliato! Implica a < d 5 Quando i vincoli di precedenza coinvolgono più attività. Es: a < c, < c, < d a c 2 5 6 3 d Corretto: < c ma a e d sono inconfrontaili
Un algoritmo costruttivo Attività: {a,, c, d} Precedenze: {a < c, < c, < d} Per costruire una rete AoA (non ridotta) si può seguire un semplice algoritmo:. Associa a ogni attività un arco disgiunto (gli estremi rappresentano l inizio e la fine dell attività corrispondente) a 2 6 c 8 0 3 5 d 9 2. Aggiungi archi per rappresentare le relazioni di precedenza tra gli eventi di inizio e fine attività 3. Aggiungi i nodi di inizio e fine progetto e relativi archi fittizi
Riduzione La rete può essere ridotta contraendo alcuni archi fittizi a 2 3 5 6 c d 8 9 0 Contrazione arco (u,v): rimuovi l arco (u,v); i nodi u e v diventano uno stesso nodo, e la stella entrante (uscente) del nuovo nodo è l unione delle stelle entranti (uscenti) di u e v. Algoritmo: contrai in sequenza archi fittizi la cui contrazione non crea precedenze inesistenti (ovvero: il grafo contratto non deve contenere cammini orientati passanti per due archi a e, se tali archi non appartengono a un cammino orientato nel grafo originale. a c 2 8 3 5 d 9 0
Activity on Nodes (AoN) Nodi rappresentano attività + due nodi fittizi (inizio e fine progetto). Archi rappresentano relazioni di precedenza. Es. 5 attività {a,, c, d, e}: precedenze (semplici) a < c, a < d, < e, c < d, c < e. s a c d e t Gli unici nodi fittizi sono quelli di inizio e fine progetto. Vanno sempre aggiunti e possono essere utilizzati per rappresentare complesse relazioni di precedenza. L attività inizio progetto ha durata nulla e finisce prima dell inizio di qualunque altra attività del progetto L attività fine progetto ha durata nulla e comincia dopo la fine di qualunque altra attività del progetto
Altre relazioni di precedenza Finora si è vista solo una sola relazione di precedenza, la cosiddetta Finish/Start ( comincia dopo che a è terminato). Questa è l unica facilmente rappresentaile nello standard AoA. Esistono altre relazioni, più complesse, rappresentaili con AoN: ad esempio, un attività può cominciare un certo tempo dopo che un altra è terminata, oppure deve essere eseguita in parallelo. Finish Start: FS ij l attività j deve cominciare dopo che l attività i è finita. Se è richiesto un tempo t di attesa (time lag) minimo prima che j cominci, ad esempio per il lead time si scrive: FS min ij (t) FS min ij (t) i j Esempio: si può posare il parquet solo dopo un po di tempo che il pavimento è stato completato (per l asciugatura) Altre volte si può aspettare al massimo un certo tempo t, nel qual caso si scrive FS ij max (t) Esempio: il corso di OGP non può cominciare più di un anno dopo che il corso di Progetto e Ottimizzazione di Reti è terminato
Altre relazioni di precedenza Start Start: SS ij min (t) l attività j deve cominciare almeno..t unità di tempo dopo che l attività i è cominciata. Analogamente SS ij max (t) significa che j deve cominciare al più t unità di tempo dopo che l attività i ècominciata Esempio: stendere l asfalto e spianarlo: la spianatura deve cominciare un po dopo che si è cominciato a stendere l asfalto ma non troppo dopo (altrimenti l asfalto si raffredda). Finish Finish: FF ij min (t), FF ij max (t), l attività j deve finire dopo che l attività i è finita. Start Finish: SF ij min (t), SF ij max (t), l attività j deve finire dopo l attività i è cominciata. Esempio: un vecchio impianto produttivo può essere fermato solo dopo che quello nuovo ha cominciato a operare.
Esempi di relazioni complesse L attività j deve cominciare al massimo dopo 6 settimane (unità di tempo) dopo l inizio del progetto max SS j (6) j L attività j deve cominciare esattamente 5 settimane dopo che l attività i èfinita. i min FS ij (5) j max FS ij (5) Il progetto deve terminare entro e non oltre tre settimane. max SF n (3) n
Il grafo delle precedenze Le relazioni di precedenza generalizzate vengono rappresentate mediante il grafo delle precedenze generalizzate H(V,F). V = {,,n} insieme delle attività, inizio progetto, 0 fine progetto. Esempio di grafo di precedenze (generalizzate) (De Reyck (998)) 0 SS min (2) SS min (0) SS min (2) 3 3 FF max (3) SS min () FF max () FS 2 min () 2 FS max (3) FS max (3) SS min (2) 6 FF min (2) 9 SS min () 6 FS 8 min (0) FF min (2) 5 SF min (0) SF min (6) SF max () 5 FS min (2) FS max (3) 0 0 Il grafo delle precedenze generalizzate è l input per la costruzione del grafo dei vincoli.
0 SS min (2) SS min (0) SS min (2) Nodi e precedenze fittizie SS min () 3 FF max () 6 FF min (2) 9 FF max (3) SS min () 2 FS min () 6 8 FS min (0) 2 FF min (2) SS min (2) 3 5 SF min (0) SF min (6) 5 SF max () FS max (3) FS max (3) FS min (2) FS max (3) Le relazioni di precedenza fra i nodi fittizi e gli altri nodi del grafo vengono spesso omesse (tranne quelle immediate ) nelle rappresentazioni grafiche. L attività inizio progetto ha durata nulla e finisce prima dell inizio di qualunque altra attività del progetto. Spesso vengono solo rappresentate le relazioni fra in nodo e le attività (riconosciute come) iniziali. L attività fine progetto ha durata nulla e comincia dopo la fine di qualunque altra attività del progetto. Spesso vengono solo rappresentate le relazioni fra le attività riconosciute come finali e il nodo n di fine progetto. In realtà, tutte le relazioni fittizie devono essere considerate negli algoritmi per la costruzione dei piani delle attività. 0 0