Project Scheduling: CPM time analysis

Documenti analoghi
La Gestione dei Progetti. Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena

La Gestione dei Progetti. Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena

Introduzione al Project Scheduling

1) Disegnare la rete di progetto con le attività sugli archi, e la rete di progetto con le attività sui nodi.

Ottimizzazione nella Gestione dei Progetti - Esercitazione 1: calcolo degli schedule ottimi

Operations Management

Introduzione al Project Scheduling

La Gestione dei Progetti. Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena

Processi di cost management - Programmazione multiperiodale

2.3.5 Pianificazione di progetti

2.3.4 Pianificazione di progetti

Pianificazione dei progetti. Alberto Caprara DEIS - Università di Bologna

Problema del Job Shop

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Problema di flusso massimo

1. Considerazioni generali

Problema del Job Shop

Esame di Ricerca Operativa del 07/06/2019

Gestione della produzione e della supply chain Logistica distributiva

età (anni) manutenzione (keuro) ricavato (keuro)

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Flusso a Costo Minimo

Possibile applicazione

2.2 Alberi di supporto di costo ottimo

Project Scheduling: PERT. Il PERT ha potenzialità superiori rispetto a quelle di un semplice mezzo per la pianificazione ed il controllo.

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Esame di Ricerca Operativa del 19/07/19. Esercizio 1. (a) Risolvere mediante il metodo del simplesso il seguente problema di programmazione lineare:

Algoritmo basato su cancellazione di cicli

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Esercizi proposti nel Cap Soluzioni. Esercizio 14.1

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2

Esame di Ricerca Operativa del 20/02/18

Gestione dei Progetti di Innovazione. C.d.L. INGEGNERIA INFORMATICA AUTOMATICA ELETTRONICA delle TELECOMUNICAZIONI. Corso di

Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33

2.2 Alberi di supporto di costo ottimo

3.3 Problemi di PLI facili

Parte IV: Matrici totalmente unimodulari

5.1 Metodo Branch and Bound

Esame di Ricerca Operativa del 11/1/19

Linea di 4 macchine con buffer

Organizzazione della produzione

2.2 Alberi di supporto di costo ottimo

Esame di Ricerca Operativa del 11/02/2015

Esercizio 1. Variabili decisionali:

RICERCA OPERATIVA (a.a. 2018/19)

CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique

Pianificazione dei progetti

Tecniche reticolari di programmazione delle attività

Macchine parallele M 1 M 2 M 3 J 1 J 2 LAVORI J 3 J 4

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

2.2 Alberi di supporto di costo ottimo

Problemi, istanze, soluzioni

Esame di Ricerca Operativa del 22/01/18

Esame di Ricerca Operativa del 22/01/18

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Massimo Paolucci DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Algoritmi e Strutture di Dati (3 a Ed.) Algoritmo dei tre indiani. Alan Bertossi, Alberto Montresor

Grafi e reti di flusso

Esame di Ricerca Operativa del 13/06/17. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

Ragionamento su reti di vincoli temporali

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esame di Ricerca Operativa del 19/02/2019. Esercizio 1. Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso:

Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford

Esame di Ricerca Operativa del 16/06/2015

Esame di Ricerca Operativa del 14/09/18

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

Teoria dei Grafi Parte I. Alberto Caprara DEIS - Università di Bologna

Esame di Ricerca Operativa del 06/02/17

Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.

Esame di Ricerca Operativa del 06/02/17

Ottimizzazione nella gestione dei progetti

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Esame di Ricerca Operativa del 18/06/18

Project Scheduling: CPM least cost scheduling

Macchine parallele M 1 M 2 M 3 J 1 J 2 LAVORI J 3 J 4

5.1 Metodo Branch and Bound

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

Introduzione ai grafi

CASO 1) Pesi positivi ( diretto o indiretto) Algoritmo di Dijkstra

5.3 Metodo dei piani di taglio

Certificati dei problemi in NP

2.3.3 Cammini ottimi nei grafi senza circuiti

Cammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Cammini Minimi. Algoritmo di Dijkstra

Esame di Ricerca Operativa del 28/06/2019. max 9 x 1 +8 x 2 6 x x x 1 +2 x x 1 +2 x x 1 3 x x 1 4 x 2 3

Esame di Ricerca Operativa del 04/07/17

RICERCA OPERATIVA (a.a. 2008/09) Nome: Cognome: Matricola:

Modelli su rete (Grafi)

Transcript:

1. Intoduzione Una volta costruita la rete di progetto AOA (attività sugli archi) G = (N, A) è possibile fare una prima analisi del progetto a partire dalla conoscenza delle durate (tempi di esecuzione) t ij di ogni attività (i, j). Le durate t ij possono essere note con certezza come nel CPM oppure essere stocastiche e rappresentabili mediante variabili aleatorie come nel PERT. In ogni caso, in tutti i progetti esiste un insieme di attività che sono particolarmente importanti nella determinazione del tempo di completamento del progetto nel senso che un qualsiasi ritardo nel completamento di una di esse si ripercuote integralmente sul tempo di esecuzione complessivo. Queste attività sono le cosiddette attività critiche di un progetto 1

2. Percorso critico Sia T il tempo minimo di esecuzione di un progetto in corrispondenza a certi prefissati valori {t ij } dei tempi di esecuzione delle singole attività. Definizione 1: Attività critica Un attività (i, j) si dice critica se sostituendo t ij con t ij + Δt il minimo di tempo di esecuzione del progetto diventa T + Δt. Definizione 2: Evento critico Un evento i si dice critico se posticipando di Δt il suo verificarsi rispetto al minimo istante in cui può accadere il minimo tempo di esecuzione del progetto diventa T + Δt. Definizione 3: Percorso critico Data una rete rappresentativa di un progetto si dice percorso critico qualsiasi cammino dal nodo iniziale al nodo finale in cui tutti gli archi siano rappresentativi di attività critiche. Un percorso critico è formato da soli nodi (eventi) critici, ma la condizione è solo necessaria. 2

3. Tempi di raggiungimento Per determinare il percorso critico di un progetto occorre introdurre altre due definizioni: Definizione 4: Tempo minimo di raggiungimento Si definisce tempo minimo di raggiungimento t i di un evento i il minimo istante di tempo entro cui possono essere completate tutte le attività che precedono l evento i. Definizione 5: Tempo massimo di raggiungimento Si definisce tempo massimo di raggiungimento T i di un evento i il massimo istante di tempo entro cui almeno un attività che segue l evento i deve cominciare, pena un aumento del tempo minimo di esecuzione del progetto. Osservazione Il tempo minimo T di esecuzione di un progetto coincide col tempo minimo di raggiungimento dell evento finale f; risulta perciò che T = t f. 3

3. Tempi di raggiungimento (continua) Calcolo di t i e T i (i) Supponiamo noti i tempi t k di tutti gli eventi k predecessori dell evento i. k i La generica attività (k, i) che precede l evento i può essere completata al più presto all istante t k + t ki. Pertanto, per definizione, t i t k + t ki. Poiché in particolare t i è il minimo istante di tempo entro cui tutte le attività (k, i) possono essere completate, allora si ha t i = max {k : (k, i) A } {t k + t ki }, cioè t i è pari al massimo tra i minimi tempi di completamento delle attività precedenti l evento i. 4

3. Tempi di raggiungimento (continua) (ii) Supponiamo ora noti i tempi T k di tutti gli eventi k successori dell evento i. i k La generica attività (i, k) che segue l evento i deve essere completata entro l istante T k (pena un aumento del tempo minimo di esecuzione del progetto), e quindi deve avere inizio entro l istante T k t ik. Pertanto, per definizione, T i T k t ik. Poiché in particolare T i è il massimo istante di tempo entro cui almeno un attività (i, k) che segue l evento i deve iniziare (pena un aumento del tempo minimo di esecuzione del progetto), allora si ha: T i = min {k : (i, k) A } {T k t ik }, cioè T i è pari al minimo tra i massimi istanti di inizio delle attività successive all evento i (compatibilmente con la minima durata del progetto). 5

3. Tempi di raggiungimento (continua) Algoritmo di calcolo Le precedenti definizioni consentono di formalizzare subito un algoritmo in due fasi. Sia A l insieme degli archi del grafo di progetto. (i) Fase di calcolo in avanti t 0 := 0. for i := 1 to f do t i := max {k : (k, i) A } {t k + t ki } (ii) Fase di calcolo all indietro T f := t f. for i := f 1 downto 0 do T i := min {k : (i, k) A } {T k t ik } Complessità delle due fasi O(m), dove m è il numero di archi della rete di progetto. Esempio Attività: A, B, C, D, E, F, G Durate: 2, 5, 3, 7, 4, 4, 8 Precedenze: A < B; A < C; B < D; C < E; F < E; A < G [t i, T i ] [7, 7] (5) 2 D [0, 0] B (7) A G (8) 0 1 4 (2) [2, 2] C (4) (3) 3 E F (4) [5, 10] [14, 14] 6

4. Tempi minimi e massimi di inizio e completamento di un attività Definizione 6: Tempo minimo di inizio di un attività Si definisce tempo minimo di inizio ES ij di un attività (i, j) il minimo tempo entro cui questa può iniziare: ES ij = t i. Definizione 7: Tempo minimo di completamento di un attività Si definisce tempo minimo di completamento (fine) EF ij di un attività (i, j) il minimo tempo entro cui questa può terminare: EF ij = ES ij + t ij = t i + t ij. Definizione 8: Tempo massimo di completamento di un attività Si definisce tempo massimo di completamento LF ij di un attività (i, j) il massimo tempo entro cui questa deve essere completata (pena un aumento del tempo minimo di esecuzione del progetto): LF ij = T j. Definizione 9: Tempo massimo di inizio di un attività Si definisce tempo massimo di inizio LS ij di un attività (i, j) il massimo tempo entro cui questa deve iniziare (pena un aumento del tempo minimo di esecuzione del progetto): LS ij = LF ij t ij = T j t ij. 7

5. Tempi di slittamento Definizione 10: Slittamento di un evento Il tempo di slittamento F i (o margine di tempo) dell evento i è il massimo ritardo possibile sulla sua occorrenza senza alterare il tempo minimo di completamento del progetto: F i = T i t i. Definizione 11: Evento critico L evento i per cui F i = T i t i = 0 è critico. Definizione 12: Slittamento totale di un attività Il tempo di slittamento totale TF ij (o margine di tempo) dell attività (i, j) è il massimo ritardo possibile sul suo inizio (completamento) senza alterare il tempo minimo di completamento del progetto: TF ij = LS ij ES ij = (T j t ij ) t i = = LF ij EF ij = T j (t i + t ij ). Definizione 13: Attività critica L attività (i, j) per cui TF ij = 0 è critica. 8

5. Tempi di slittamento (continua) Definizione 14: Slittamento libero di un attività Il tempo di slittamento libero FF ij dell attività (i, j) è il massimo ritardo possibile sul suo completamento senza alterare il tempo minimo di inizio delle attività successive: FF ij = min k {ES jk } EF ij = t j (t i + t ij ). Definizione 15: Slittamento di sicurezza di un attività Il tempo di slittamento di sicurezza SF ij (o margine di tempo di sicurezza) dell attività (i, j) è il massimo ritardo possibile sul suo inizio supponendo che tutte le attività precedenti terminino al più tardi possibile: SF ij = LS ij max k {LF ki } = (T j t ij ) T i. 9

6. Percorso critico Definizione 16: Percorso e catena Un percorso è una catena (sequenza) di attività che conduce dall inizio alla fine del progetto, cioè un cammino dal nodo origine 0 al nodo finale f della rete di progetto. Ricordiamo che (vedi Def. 3): Un percorso è critico se tutte le attività che lo compongono sono critiche. Proprietà conseguenti (i) In un progetto esiste almeno un percorso critico (ii) Il percorso critico è una catena di lunghezza massima. (iii) Un percorso critico è formato da soli nodi critici, ma la condizione è solo necessaria. 10

7. Lunghezza catena Definizione 17: Lunghezza di una catena Si definisce lunghezza l α di una generica catena C α dal nodo iniziale al nodo finale la grandezza l α = Σ (i, j) Cα t ij Se C 1,, C α,, C p sono tutte le catene dal nodo iniziale al nodo finale le cui corrispondenti lunghezze sono l 1,, l α,, l p, il tempo minimo di completamento T del progetto è ovviamente dato da: T = max 1 α p l α Esempio [t i, T i ] [7, 7] (5) 2 D [0, 0] B (7) A G (8) 0 1 (2) [2, 2] C (4) (3) 3 E F (4) [5, 10] 4 [14, 14] i j Attività critica i Evento critico 11

8. Percorsi sottocritici Nell analisi della tempistica delle attività di un progetto può essere utile individuare i percorsi sottocritici Questi possono essere individuati nel modo seguente (i) Si selezionano le attività del progetto raggruppandole in funzione del loro tempo di slittamento. (ii) Si ordinano i gruppi di attività in ordine crescente di tempo di slittamento. (iii) Il primo gruppo comprende il percorso-(i) critico-(i), mentre i gruppi successivi comprendono i percorsi sottocritici in ordine crescente di distanza dalla criticità. Osservazione La fase di scheduling di un progetto con risorse illimitate (PS, prec C max ) corrisponde al modello di scheduling su macchine P prec C max, in cui cioè un insieme di job soggetti a vincoli di precedenza devono essere processati su un numero illimitato di macchine parallele con l obiettivo di minimizzare il massimo tempo di completamento dei job. 12

9. Formulazione come problema di PL Determinare il tempo minimo di completamento T del progetto equivale a risolvere un problema di cammino massimo nella rete aciclica G = (N, A) rappresentante il progetto con attività sugli archi. Data la rete aciclica G = (N, A) e detto t i il tempo di raggiungimento minimo del nodo i, il problema consiste nel risolvere il seguente problema di PL min t f t 0 t j t i t ij (N i, N j ) A t i 0 N i N Posto π i = t i, riscriviamo il problema come min π 0 π f π i π j t ij (N i, N j ) A π i 0 N i N Il problema duale è max Σ (Ni, N j ) A t ij x ij 1 i = 0 Σ {j: (Ni, N j ) A} x ij Σ {j: (Nj, N i ) A} x ji = 0 i = 1,, f 1 1 i = f x ij 0 (N i, N j ) A che è la formulazione del problema di cammino massimo (su una rete aciclica). 13

10. Dipendenza slittamenti dal grafo di progetto Ricordiamo che: TF ij = T j (t i + t ij ); FF ij = t j (t i + t ij ); SF ij = (T j t ij ) T i [t i ; T j ] [0; 0] [5; 5] [11; 11] 0 1 [t i ; T j ] 3 4 A (5) C (1) D (6) B (6) 2 [11; 11] [17; 17] [0; 0] [5; 5] [11; 11] [17; 17] 0 1 3 4 A (5) B (6) D (6) C (1) 2 [6; 11] [t i ; T j ] [0; 0] [5; 5] [11; 11] [17; 17] 0 1 4 5 A (5) B (6) D (6) 2 [5; 10] C (1) 3 [6; 11] attività TF FF SF A 0 0 0 B 0 0 0 C 5 5 5 D 0 0 0 attività TF FF SF A 0 0 0 B 0 0 0 C 5 0 5 D 0 0 0 attività TF FF SF A 0 0 0 B 0 0 0 C 5 0 0 D 0 0 0 I valori degli slittamenti liberi FF e di sicurezza SF delle attività dipendono dalla rappresentazione con grafo con attività sugli archi usato. Solo gli slittamenti totali TF sono invarianti rispetto alla rappresentazione. 14

10. Dipendenza slittamenti dal grafo di progetto I responsabili di tale difetto sono i: nodi out-dummy: solo archi fittizi uscenti nodi in-dummy: solo archi fittizi entranti Facendo riferimento alle sole attività non-fittizie, ridefiniamo i tempi di raggiungimento minimo e massimo degli eventi, rispettivamente come: Sia t' i il minimo tempo entro cui almeno un attività che segue l evento i può cominciare. Sia T' i il massimo tempo entro cui tutte le attività che precedono l evento i devono essere completate (pena un aumento del tempo minimo di esecuzione del progetto). E quindi per un attività (i, j) (non-fittizia) si ha: ES ij = t' i ; LS ij = T' j t ij ; EF ij = t' i + t ij ; LF ij = T' j 15

10. Dipendenza slittamenti dal grafo di progetto L algoritmo di calcolo di tali tempi è il seguente: Algoritmo di calcolo Fase di calcolo in avanti t' 0 := t 0 := 0. for i := 1 to f do t' i := t i := max {k : (k, i) A } {t k + t ki } Fase di calcolo all indietro T' f := T f := t f. for i := f 1 downto 0 do T' i := T i := min {k : (i, k) A } {T k t ik } if i is out-dummy then t' i = min {k : (i, k) A } {t' k } Fase di calcolo in avanti for i := 1 to f do if i is in-dummy then T' i = max {k : (k, i) A } {T' k } Complessità delle tre fasi O(m), dove m è il numero di archi della rete di progetto. Osservazioni: Per i non-dummy t' i = t i e T' i = T i. Per i out-dummy t' i t i e T' i = T i. Per i in-dummy t' i = t i e T' i T i. Quindi, slittamenti totali di attività (non-fittizie) sono invarianti rispetto alla rappresentazione. 16

10. Dipendenza slittamenti dal grafo di progetto Ricalcolando gli slittamenti secondo i nuovi tempi sui nodi: TF ij = T' j (t' i + t ij ); FF ij = t' j (t' i + t ij ); SF ij = (T' j t ij ) T' i [t' i ; T' j ] [0; 0] [5; 5] [11; 11] 0 1 [t' i ; T' j ] 3 4 A (5) C (1) D (6) B (6) 2 [11; 11] [17; 17] [0; 0] [5; 5] [11; 11] [17; 17] 0 1 3 4 A (5) B (6) D (6) C (1) 2 [11; 11] [t' i ; T' j ] [0; 0] [5; 5] [11; 11] [17; 17] 0 1 4 5 A (5) B (6) D (6) 2 [5; 5] C (1) 3 [11; 11] attività TF FF SF A 0 0 0 B 0 0 0 C 5 5 5 D 0 0 0 attività TF FF SF A 0 0 0 B 0 0 0 C 5 5 5 D 0 0 0 attività TF FF SF A 0 0 0 B 0 0 0 C 5 5 5 D 0 0 0 Come si può notare in tal modo anche gli slittamenti liberi FF e di sicurezza SF delle attività sono invarianti rispetto alla rappresentazione con grafo con attività sugli archi usato. 17

11. Reti AON: Calcolo tempi minimi e massimi d inizio e completamento delle attività Indichiamo da qui in avanti con T 1,, T n, le n attività del progetto. Senza perdita di generalità, siano T 0 e T n+1 due dummy task: T 0 precede tutti i task e T n+1 sussegue tutti i task. Indichiamo con: p i : durata dell attività T i ; P i : insieme predecessori diretti dell attività T i ; S i : insieme successori diretti dell attività T i. I valori di: ES i : (earliest start time), min. istante d inizio di T i LF i : (latest finish time), max. istante di fine di T i EF i : (earliest finish time), min. istante di fine di T i LS i : (latest start time), max. istante d inizio di T i Si calcolano con procedure forward e backward procedura forward ES 0 := EF 0 := 0; For i := 1 to n+1 do ES i := max [EF j T j P i ], EF i := ES i + p i. detto T = EF n+1 = ES n+1. procedura backward LF n+1 := LS n+1 := T; For i := n down-to 0 do LF i := min [LS j T j S i ], LS i := LF i p i. 18

12. Analisi temporale con precedenze generalizzate Le relazioni temporali considerate finora tra un attività T i e una attività T j sono di precedenza stretta: T i < T j T j non può iniziare prima del completamento di T i Si tratta di precedenze tipo finish-to-start (FS) con time lag nullo. Esistono in generale relazioni di precedenza di tipo: - start-to-start (SS) - start-to-finish (SF) - finish-to-start (FS) - finish-to-finish (FF) Inoltre tra l inizio (fine) di T i e inizio (fine) di T j in genere vanno osservati dei time-lag (attese) minimi o massimi. Siano s i e f i, risp., gli istanti di inizio e di fine di T i. Relazioni precedenze generalizzate (GPR). Tipologie di GPR con time-lag minimo δ: - start-to-start (SS ij min (δ)): s i + δ s j - start-to-finish (SF ij min (δ)): s i + δ f j - finish-to-start (FS ij min (δ)): f i + δ s j - finish-to-finish (FF ij min (δ)): f i + δ f j Tipologie di GPR con time-lag massimo δ: - start-to-start (SS ij max (δ)): s j s i + δ - start-to-finish (SF ij max (δ)): f j s i + δ - finish-to-start (FS ij max (δ)): s j f i + δ - finish-to-finish (FF ij max (δ)): f j f i + δ 19

12. Analisi temporale con precedenze generalizzate Introduciamo i time-lag normalizzati l ij (l ji ) con i seguenti valori in base al tipo di precedenza generalizzata: Per le GPR con time-lag minimo δ: - SS ij min (δ): s i + δ s j s i + l ij s j, cioè SS ij min (l ij ) con l ij = δ - SF ij min (δ): s i + δ f j s i + l ij s j, cioè SS ij min (l ij ) con l ij = δ p j - FS ij min (δ): f i + δ s j s i + l ij s j, cioè SS ij min (l ij ) con l ij = p i + δ - FF ij min (δ)): f i + δ f j s i + l ij s j, cioè SS ij min (l ij ) con l ij = p i p j + δ Per le GPR con time-lag massimo δ: - SS ij max (δ): s j s i + δ s j + l ji s i, cioè SS ji min (l ji ) con l ji = δ - SF ij max (δ): f j s i + δ s j + l ji s i, cioè SS ji min (l ji ) con l ji = p j δ - FS ij max (δ): s j f i + δ s j + l ji s i, cioè SS ji min (l ji ) con l ji = p i δ - FF ij max (δ): f j f i + δ s j + l ji s i, cioè SS ji min (l ji ) con l ji = p j p i δ N.B.: SS max ij (δ) SS min ji ( δ); FS max ij (δ) SF min ji ( δ); SF max ij (δ) FS min ji ( δ); FF max ij (δ) FF min ji ( δ); I time lag normalizzati permettono di esprimere i vincoli di precedenza generalizzati nelle forme s i + l ij s j oppure s j + l ji s i T i p i T j p j T i T j p i p j s i δ = l ij s j t s i δ = l ji s j t 20

12. Analisi temporale con precedenze generalizzate Tra T i e T j possono coesistere diverse GPR: se s i + l 1 ij s j e s i + l 2 ij s j s i + max{l 1 ij, l 2 ij} s j se s j + l 1 ji s i e s j + l 2 ji s i s j + max{l 1 ji, l 2 ji} s i Quindi la finestra temporale di s j rispetto a s i è: s j [s i + l ij, s i l ji ], con l ij = max{l 1 ij, l 2 ij} e l ji = max{l 1 ji, l 2 ji}. Occorre costruire una rete di progetto in grado di rappresentare le GPR e effettuare l analisi dei tempi ricercando il-(i) cammino-(i) critico-(i). La rete AON si presta meglio a questo scopo. Tipologie di GPR con time-lag minimo δ: - start-to-start (SS ij min (δ)): s i + δ s j T i SS ij min (δ) T j l ij = δ T i T j - start-to-finish (SF ij min (δ)): s i + (δ p j ) s j T i SF ij min (δ) T j l ij = δ p j T i T j 21

12. Analisi temporale con precedenze generalizzate - finish-to-start (FS ij min (δ)): s i + (δ + p i ) s j T i FS ij min (δ) T j l ij = δ + p i T i T j - finish-to-finish (FF ij min (δ)): s i + (δ + p i p j ) s j T i FF ij min (δ) T j l ij = δ + p i p j T i T j Tipologie di GPR con time-lag massimo δ: - start-to-start (SS ij max (δ)): s j + ( δ) s i T i SS ij max (δ) T j l ji = δ T i T j - start-to-finish (SF ij max (δ)): s j + (p j δ) s i T i SF ij max (δ) T j l ji = p j δ T i T j - finish-to-start (FS ij max (δ)): s j + ( p i δ) s i T i FS ij max (δ) T j l ji = p i δ T i T j - finish-to-finish (FF ij max (δ)): s j + (p j p i δ) s i T i FF ij max (δ) T j l ji = p j p i δ T i T j 22

12. Analisi temporale con precedenze generalizzate Esempio (0) SS min (2) 12 (0) T 1 T 2 SF 23 min (9) (7) T 3 FF 24 max (8) SS min 35 (4) (4) T 5 FS min 56 (0) 0 T 6 SS 24 min (4) T 4 (4) FF 45 min (3) rete AON con vincoli GPR (0) (2) 0 T 1 T 2 4 2 (7) T 3 T 4 (4) (4) 6 T 5 rete normalizzata G = (T, A) con vincoli GPR 4 3 4 (0) T 6 23

12. Analisi temporale con precedenze generalizzate La rete normalizzata G = (T, A) può contenere cicli. Cammini e cicli hanno lunghezza pari alla somma dei time lag normalizzati associati agli archi che vi appartengono. Affinché la rete normalizzata rappresenti correttamente le GPR occorre che nella rete: a) Le attività sorgente T 1 e pozzo T n siano fittizie; b) Esista un cammino da T 1 a T i di lunghezza 0; c) Esista un cammino da T i a T n di lunghezza p i. La a) è garantita aggiungendo eventualmente T 1 e/o T n come attività fittizie. La b) è garantita aggiungendo eventualmente la precedenza SS 1i min (0). La c) è garantita aggiungendo eventualmente la precedenza SS in min (p i ) (corrispondente a FS in min (0) nella rete AON con vincoli GPR). 24

12. Analisi temporale con precedenze generalizzate Calcolo dei tempi Data la rete normalizzata G = (T, A), il problema della determinazione della schedula di progetto a durata minima può esser formulato come: s.t. min s n s i + l ij s j, s 1 = 0 (T i, T j ) A dove s n e s 1 sono l inizio dell attività fittizie di inizio e fine progetto, rispettivamente. Risolvendo tale problema si ottengono le ES i = s i. La ricerca della durata minima del progetto equivale a determinare la lunghezza del cammino più lungo dal nodo sorgente al pozzo sulla rete (percorso critico). La presenza eventuale di cicli nella rete normalizzata non consente l applicazione delle procedure forward e backward per il calcolo degli ES i e LF i delle attività T i. Il problema è NP-hard in generale, ma polinomiale se la rete è senza cicli di lunghezza positiva. 25

12. Analisi temporale con precedenze generalizzate La rete normalizzata non deve contenere cicli di lunghezza positiva. Infatti la presenza di un ciclo di lunghezza l significa: T i1 l s i1 s i1 + l Nel caso in cui fosse l > 0, si avrebbe la contraddizione che T i1 può iniziare al più presto l periodi unitari dopo il suo stesso inizio Ad un analogo assurdo si giunge sommando i vincoli relativi agli archi del ciclo (T i1, T i2, T i3,, T ic-1, T i1 ): s i1 + l i1 i 2 s i2 s i2 + l i2 i 3 s i3.......... s ic-1 + l ic-1 i 1 s i1 l i1 i 2 + l i2 i 3 + l ic-1 i 1 = l 0 ma per ipotesi l è positivo! N.B.: Nel caso in cui esistesse un ciclo di lunghezza positiva nella rete normalizzata ci troveremmo di fronte a una incongruenza nella definizione del progetto (delle precedenze generalizzate), si sarebbero cioè presi impegni impossibili. 26

12. Analisi temporale con precedenze generalizzate Si può utilizzare il seguente algoritmo di Ford-Bellman (1958) per il calcolo del cammino di lunghezza massima in una rete con archi di lunghezza l ij non vincolata in segno e priva di cicli di lunghezza positiva Input: G = (T, A) Output: s e prec Poni s 1 := 0; s i := ; prec i = NULL, i = 2,, n. Ordina gli archi {a 1,, a m } Repeat for k := 1 to m if a k = (T i, T j ) è tale che s j < s i + l ij s j = s i + l ij prec j = T i end end until (nessuna s i è stata modificata or sono state eseguite n iterazioni) L algoritmo esegue al più n iterazioni e ad ogni iterazione esamina tutti gli archi della rete. Quindi la sua complessità è O(n m). Se anche all n-sima iterazione c è stato un aggiornamento di almeno una delle s i allora la rete contiene un ciclo di lunghezza positiva. 27

12. Analisi temporale con precedenze generalizzate Con tale algoritmo si ottengono le ES i = s i. Per il calcolo delle LS i, occorre calcolare la lunghezza λ i del cammino critico dal nodo T i al nodo pozzo T n. Infatti: LS i = LS n λ i, con LS n = ES n. Per il calcolo dei λ i possiamo applicare nuovamente l algoritmo di Ford-Bellman a ritroso, cioè partendo dal pozzo e visitando gli archi al contrario. Input: G = (T, A) Output: λ e succ Poni λ n := 0; λ i := ; succ i = NULL, i = 1,, n 1. Ordina gli archi {a 1,, a m } Repeat for k := 1 to m if a k = (T i, T j ) è tale che λ i < λ j + l ij λ i = λ j + l ij succ i = T j end end until (nessun λ i è stato modificato or sono state eseguite n iterazioni) 28

12. Analisi temporale con precedenze generalizzate Esempio (pag. 23) Ripartiamo dalla rete normalizzata (7) T 3 2 (0) (2) a 4 2 a 5 0 (4) T 1 T 2 6 T 5 a 1 4 a 3 a 4 T 4 (4) rete normalizzata G = (T, A) con vincoli GPR a 6 3 4 a 7 (0) T 6 Algoritmo Ford-Bellman T i s i : Iter. 0 s i : Iter. 1 s i : Iter. 2 1 0 0 0 2 0 0 3 2 2 4 4 4 5 7 7 6 11 11 L algoritmo si arresta alla fine della seconda iterazione. 29

12. Analisi temporale con precedenze generalizzate Esempio (pag. 23) (0) (2) 0 T 1 T 2 a 1 4 2 a 3 a 4 a 2 (7) T 3 6 T 5 T 4 (4) (4) rete normalizzata G = (T, A) con vincoli GPR a 5 a 6 4 3 (continua) 4 a 7 (0) T 6 Algoritmo Ford-Bellman a ritroso T i λ i : Iter. 0 λ i : Iter. 1 λ i : Iter. 2 1 11 11 2 11 11 3 8 8 4 7 7 5 4 4 6 0 0 0 L algoritmo si arresta alla fine della seconda iterazione. 30

12. Analisi temporale con precedenze generalizzate Esempio (pag. 23) (continua) Quindi, per il progetto con GPR la cui rete AON è: (7) SF min 23 (9) T 3 SS min 35 (4) (0) SS min (2) 12 (0) (4) FF T 1 T max 24 (8) FS min 56 (0) 0 2 T 5 T 6 SS 24 min (4) T 4 (4) FF 45 min (3) rete AON con vincoli GPR Il progetto ha durata minima pari a ES 6 = 11. La tabella riporta i tempi inizio e fine minimi e massimi delle attività: T i ES i LS i EF i LF i 1 0 0 0 0 2 0 0 2 2 3 2 3 9 10 4 4 4 8 8 5 7 7 11 11 6 11 11 11 11 Tutte le attività tranne T 3 hanno slittamento nullo; T 3 ha TF 3 = LS 3 ES 3 = LF 3 EF 3 = 1. N.B.: I concetti di cammino critico e attività critica devono essere rivisti nel caso di progetti con GPR. 31