La schedulazione dei progetti Estratto da Operations Management Modelli e metodi per la logistica II Edizione Autore: Giuseppe Bruno Edizioni Scientifiche Italiane
I problemi di scheduling 21 6.8 - LA SCHEDULAZIONE DI PROGETTI I modelli e i metodi finora analizzati possono essere efficacemente utilizzati per la schedulazione di operazioni che devono essere eseguite con continuità o con sensibile frequenza come tipicamente avviene nell ambito della gestione operativa dei processi di produzione. Un progetto, invece, è costituito da una serie di attività tra loro correlate che richiedono tempi e risorse consistenti. Esempi di progetti sono la costruzione di strutture ed infrastrutture, la realizzazione di un sistema informativo, il lancio di un prodotto sul mercato, la realizzazione di eventi straordinari (es: mostre, fiere). Dagli esempi fatti si comprende che un progetto è caratterizzato dal fatto di avere un inizio ed una fine ben precisi e di essere realizzato una tantum. Per una realizzazione efficace ed efficiente, è necessario programmare e coordinare le attività, controllare i tempi e i costi nella fase di avanzamento, gestire le risorse (umane, finanziare e tecnologiche) a disposizione. Le metodologie e le tecniche di supporto per la programmazione e la gestione di progetti che consentono di realizzare queste attività sono note come tecniche di Project Management. Una tecnica di Project Management di importanza fondamentale è la tecnica PERT (Project Evaluation Review Technique), sviluppata tra il 198 e il 199 per la gestione di progetti di carattere militare e successivamente applicata con successo in campo civile. La tecnica PERT, oggi ampiamente diffusa e consolidata, consente di definire le relazioni di interdipendenza tra le attività, di valutare i tempi di realizzazione, di pianificare l uso delle risorse, di individuare le conseguenze di e- ventuali variazioni nella programmazione e/o nella gestione delle attività. Il PERT si basa sulla rappresentazione di un progetto attraverso un grafo, detto anche reticolo PERT. Ciascuna attività viene rappresentata con un arco orientato: il nodo origine è detto evento inizio dell attività mentre il nodo destinazione è detto evento fine dell attività (Figura 6.4). Un progetto è rappresentato da un grafo orientato caratterizzato dalle seguenti proprietà: Evento inizio Evento fine FIG. 6.4 - Rappresentazione di una attività
22 Capitolo sesto - Esiste un solo nodo del grafo I nel quale non entrano archi del grafo; tale nodo è l evento inizio del progetto. - Esiste un solo nodo del grafo F dal quale non escono archi del grafo; tale nodo è l evento fine del progetto. - Il grafo non presenta cicli. - Non esistono archi paralleli, ovvero archi aventi stessa origine e stessa destinazione Le proprietà (1) e (2) consentono di individuare univocamente l inizio e la fine del progetto. La proprietà (3) è necessaria per evitare il paradosso che un attività debba seguire se stessa. La proprietà (4) serve ad evitare confusione tra le attività nella fase di schedulazione. Se ad ogni arco (i, j) si associa la durata d ij dell attività si può valutare la durata minima del progetto, individuando il percorso tra l evento inizio e l evento fine del progetto di durata massima. Il percorso così individuato è detto percorso critico e le attività che lo compongono attività critiche. La lunghezza del percorso critico coincide con la durata minima del progetto. Una durata minore del progetto, infatti, implicherebbe che alcune delle attività critiche non potrebbero essere completate. In Figura 6.46 è riportato il reticolo PERT, che rispetta le proprietà (1 4), con l indicazione del percorso e delle attività critiche. Per individuare il percorso critico si può trasformare il problema in un problema di minimo percorso cambiando il segno al peso degli archi. In questo modo, poiché per la proprietà (3) il grafo è aciclico, si può applicare un algoritmo di minimo percorso che funzioni in presenza di archi con costi negativi (es: algoritmo di Ford-Moore-Bellmann). 1 7 4 4 3 2 I 2 6 7 F 2 3 8 6 FIG. 6.46 - Reticolo PERT e percorso critico
I problemi di scheduling 23 Un modo alternativo più intuitivamente legato al problema della schedulazione del progetto si basa sulla definizione di alcuni parametri associati agli eventi ed alle attività. In particolare per ogni evento i si definiscono i seguenti parametri: Tempo al più presto (earliest time) tp i E il tempo in corrispondenza del quale l evento può verificarsi al più presto a condizione che tutte le attività precedenti siano state completate al più presto. Tempo al più tardi (latest time) tt i E il tempo in corrispondenza del quale l evento può verificarsi al più tardi senza modificare la durata del progetto. Scorrimento (slack time) sl i E la differenza tra il tempo al più tardi e il tempo al più presto dell evento (sl i = tt i - tp i ). Lo scorrimento indica di quanto l evento può essere ritardato rispetto al suo tempo al più presto senza alterare la durata del progetto. Un evento è critico se il suo scorrimento è nullo o, in altri termini, se il tempo al più presto e quello al più tardi coincidono. Questo comporta che un evento critico è fissato nel tempo. Per ogni attività (i,j) si definiscono: Tempo di inizio al più presto (earliest start time) tip ij E il tempo in corrispondenza del quale l attività può iniziare al più presto a condizione che tutte le attività precedenti siano state completate al più presto. Per definizione esso coincide con il tempo al più presto dell evento inizio dell attività tp i. Tempo di fine al più presto (earliest finish time) tfp ij E il tempo in corrispondenza del quale l attività può completarsi al più presto a condizione che tutte le attività precedenti siano state completate. Esso è dato dalla somma del tempo di inizio al più presto e della durata dell attività tfp ij = tp i + d ij. Tempo di inizio al più tardi (earliest finish time) tit ij E il tempo in corrispondenza del quale l attività può iniziare al più tardi a condizione che tutte le attività precedenti siano state completate senza modificare la durata del progetto. Esso è dato dalla differenza tra il tempo al più tardi dell evento fine e la durata dell attività tit ij = tt j - d ij.
24 Capitolo sesto Tempo di fine al più tardi (latest finish time) tft ij E il tempo in corrispondenza del quale l attività può finire al più tardi senza modificare la durata del progetto. Per definizione esso coincide con il tempo al più tardi dell evento fine dell attività tt j. Scorrimento dell attività (slack time) sl ij E la differenza tra il tempo di inizio al più tardi tit ij e il tempo di inizio al più presto tip ij dell attività ovvero sl ij = tit ij - tip ij = (tt j - d ij ) - tp i. Lo scorrimento indica di quanto l inizio di un attività può essere ritardata rispetto al suo tempo di inizio al più presto senza alterare la durata del progetto. Un attività è critica se il suo scorrimento è nullo o, in altri termini, se il tempo di inizio al più presto e quello al più tardi coincidono. Questo comporta che un attività critica è fissata nel tempo e un eventuale ritardo nel completamento provocherebbe un aumento della durata del progetto. In Figura 6.47 è illustrato il significato di alcune delle variabili introdotte. Schedulare un progetto significa individuare i tempi al più presto ed al più tardi di ciascun evento dai quali si ricavano gli altri parametri indicati. A tale scopo di utilizzano le seguenti procedure. Calcolo dei tempi al più presto Per definizione il tempo al più presto di un evento i è il tempo in corrispondenza del quale l evento può verificarsi al più presto a condizione che tutte le attività precedenti siano state completate al più presto. Pertanto deve risultare tp i tp k + d ki k: esiste l attività (k,i) In caso contrario, infatti, qualche attività (k,i) si completerebbe oltre il proprio tempo al più presto dell evento i. d ij + sl ij d ij + sl ij d ij d ij (i, j) sl ij sl ij (i, j) tip ij = tp i tfp ij tft ij =tt j t tip ij = tp i tip ij FIG. 6.47 - Parametri relativi ad eventi ed attività j tft ij =tt j t
I problemi di scheduling 2 Di conseguenza esso è dato da tp i = max k (tp k + d ki ) k: esiste l attività (k,i) Per valutare il tempo al più presto di un evento i, quindi, è necessario aver già calcolato il tempo al più presto di ciascun evento k direttamente collegato ad i da un attività (k, i). Per questa ragione, fissato per convenzione un valore del tempo al più presto dell evento inizio (ad esempio 0), i tempi al più presto si calcolano mano mano dall evento inizio del progetto avanzando verso l evento fine del progetto. Calcolo dei tempi al più tardi Per definizione il tempo al più tardi di un evento i è il tempo in corrispondenza del quale l evento può verificarsi al più tardi senza ritardare la schedulazione del progetto. Di conseguenza deve verificarsi che tt k tt i + d ik k: esiste l attività (i, k) In caso contrario, infatti, qualche attività (i, k) si completerebbe oltre il proprio tempo al più tardi. Pertanto il il tempo al più tardi di un evento i è dato da tt i = min k (tt k - d ik ) k: esiste l attività (i, k) Per valutare il tempo al più tardi di un evento i è quindi necessario aver già calcolato il tempo al più tardi di ciascun evento k direttamente collegato a i da un attività (i,k). Di conseguenza, fissato il valore del tempo al più tardi dell evento fine del progetto pari al suo tempo al più presto (tp F =tt F ) i tempi al più tardi si possono calcolare con una procedura che dall evento fine del progetto retrocede verso l evento inizio del progetto. In Figura 6.48 sono illustrate schematicamente le regole per il calcolo dei tempi al più presto ed al più tardi dei singoli eventi. tp i = max k (tp k + d ki ) tp k k d ki i tt i = min k (tt k - d ik ) i d ik k tt k FIG. 6.48 - Tempi al più presto e al più tardi degli eventi
26 Capitolo sesto Una volta individuati i parametri associati alle attività è possibile determinare la schedulazione del progetto. In particolare la schedulazione al più presto prevede che le attività abbiano inizio a partire dal proprio tempo di inizio al più presto. Nella schedulazione al più tardi, invece, le attività partono dal tempo di inizio al più tardi e, quindi terminano in corrispondenza del tempo di fine al più tardi. Esempio Il reticolo PERT di Figura 6.49 rappresenta un progetto costituito da 10 attività per il quale si vuole definire la durata minima e i parametri relativi agli eventi ed alle attività. In Figura 6.0 è indicato il calcolo progressivo dei parametri associati agli eventi (tempo al più presto, tempo al più presto e scorrimento) mentre in Figura 6.1 quello relativo alle attività (tempo di inizio al più presto, tempo di fine al più presto, tempo di fine al più presto e scorrimento). La durata minima del progetto è pari a 1; il percorso critico è costituito dalle attività critiche (I,3), (3,4), (4,F) che sono caratterizzate da valori nullo dello scorrimento. Gli eventi I, 3, 4 ed F sono critici perché presentano scorrimenti nulli. Come si può notare gli eventi inizio e fine associati ad attività critiche sono sempre critici. Non è detto, però, che attività comprese tra eventi critici siano sicuramente critiche; se si considera, ad esempio, l attività (3, F), essa, pur essendo compresa tra due eventi critici, presenta uno scorrimento pari a 3. In Figura 6.49, insieme al reticolo PERT, sono riportati i parametri relativi agli eventi secondo la legenda indicata. In Figura 6.2 è illustrato il diagramma di Gantt relativo alla schedulazione delle attività a partire dal tempo di inizio al più presto compatibile con la durata minima del progetto. Le attività critiche sono rappresentate consecutivamente mentre le altre attività sono riportate secondo il tempo di inizio non decrescente. I 0 0 0 Evento Tempo al più tardi j 0 0 0 1 3 4 1 3 2 4 6 I 3 1 1 4 2 1 3 2 3 2 Tempo al più presto Scorrimento 4 10 10 0 6 F 3 6 6 0 F 1 7 1 1 FIG. 6.49 - Reticolo PERT e percorso critico
I problemi di scheduling 27 Evento j Tempo al più presto tp j Evento j Tempo al più tardi tt j Scorrimento I tp I = 0 F tt F = 1 sl F = 1-1 tp 1 = 0+3 =3 4 tt 4 = 1- =10 sl 4 = 10-10=0 2 tp 2 = 0+1 =1 3 tt 3 =min(10-4, 1-6)=6 sl 3 = 6-6=0 3 tp 3 = max(1+3, 0+6, 1+4)=6 2 tt 2 = min(1-7, 6-2)=4 sl 2 = 3-1=2 4 tp 4 = max(3+, 6+4)=10 1 tt 1 = min(10-, 6-2)=4 sl 1 = 4-3=1 F tp F =max(1+7,6+6,10+)=1 I tt I = min(6-6,3-1,4-3)=0 sl I = 0-0=0 Attività (i,j) Tempo di inizio al più presto tip ij FIG. 6.0 - Calcolo parametri relativi agli eventi Tempo di fine al più presto tfp ij Tempo di fine al più tardi tft ij Scorrimento I-1 tip I1 = tp I =0 tfp I1 =tp I + d I1 =0+3=3 tft I1 = tf 1 =4 sl I1 = 4-3=1 I-2 tip I2 = tp I =0 tfp I2 =tp I + d I2 =0+1=1 tft I2 = tf 2 =3 sl I2 = 3-1=2 I-3 tip I3 = tp I =0 tfp I3 =tp I + d I3 =0+6=6 tft I3 = tf 3 =6 sl I3 = 6-6=0 1-3 tip 13 = tp 1 =3 tfp 13 =tp 1 +d 13 =3+2= tft 13 = tf 3 =6 sl 13 = 6-=1 1-4 tip 14 = tp 1 =3 tfp 14 =tp 1 +d 14 =3+=8 tft 14 = tf 4 =10 sl 14 = 10-8=2 2-3 tip 23 = tp 2 =1 tfp 23 =tp 2 +d 23 =1+3=4 tft 23 = tf 3 =6 sl 23 = 6-4=2 2-F tip 2F = tp 2 =1 tfp 2F =tp 2 +d 2F =1+7=8 tft 2F = tf F =1 sl 2F = 1-8=7 3-4 tip 34 = tp 3 =6 tfp 34 =tp 3 +d 34 =6+4=10 tft 34 = tf 4 =10 sl 34 = 10-10=0 3-F tip 3F = tp 3 =6 tfp 3F =tp 3 +d 3F =6+6=12 tft 3F = tf F =1 sl 3F = 1-12=3 4-F tip 4F = tp 4 =10 tfp 4F =tp 4 +d 4F =10+=1 tft 4F = tf F =1 sl 4F = 1-1=0 FIG. 6.1 - Calcolo parametri relativi alle attività I-2 I-1 2-3 1-3 2-F 1-4 I-6 3-4 4-F 0 1 2 3 4 6 7 8 9 10 11 12 13 14 1 t FIG. 6.2 - Schedulazione al più presto del progetto di Figura 6.43 3-F