• Non ci sono risultati.

CAP 4 LA GESTIONE DI TEMPI, RISORSE E COST

J. T.Marchewka (2) nel suo libro afferma che : “A milestone is a significant event or achievement that provides evidence that that deliverable has been completed or that a phase

4.1.4 I METODI E LE PROCEDURE DI CALCOLO.

Gli algoritmi consentono di determinare i tempi di inizio e fine delle singole attività elementari e di conseguenza del progetto e delle sue parti, e di definire quindi la pianificazione e successive ripianificazioni in corso d’opera; inoltre secondo Protto (8) consentono analisi di simulazione “what if” ripetendo i calcoli su dati variati. Secondo Protto gli algoritmi consentono la determinazione dei tempi del progetto rispetto ad un riferimento temporale:

• Tempi di inizio e fine di tutte le attività elementari, cioè:

-tempi minimi: quando, il prima possibile, ogni singola attività può iniziare a finire.

-tempi massimi: quando, dato un vincolo sulla data finale di compimento n del progetto o sulla sua durata totale, il più tardi possibile ogni singola

attività deve iniziare e finire; Quindi anche i tempi minimi e massimi delle parti e dell’intero progetto.

Durata minima possibile del progetto.

• Gradi di libertà temporali nell’esecuzione di ogni attività elementare.( “slittamenti”, o “scorrimenti”, o “slack time”, o “float time”).

• Quindi anche i gradi di libertà temporali di parti del progetto.

Gli algoritmi non sono schedulatori, perché risultano utili solo quando la risorsa è abbondante o facilmente reperibile sul mercato; infatti, in caso di risorsa realmente scarsa, la possibilità di allocazione e le date possibili di esecuzione delle attività sono interdipendenti e quindi la programmazione potrebbe avvenire solo mediante una serie di approssimazioni, ripetendo l’algoritmo più volte, inserendo ogni volta ulteriori vincoli di tempo per tenere conto della indisponibilità di risorsa, inoltre senza garanzia di trovare l’ ottimo e sub-ottimo accettabile. Altri algoritmi hanno la capacità di schedulare, cioè di calcolare i tempi allocando contemporaneamente le risorse necessarie; a tali algoritmi va naturalmente anche fornita l’informazione circa le risorse richieste dalle singole attività elementari, sia la disponibilità totale di risorsa nel tempo in base ad un calendario. In caso di più progetti che dovessero condividere le stesse risorse, tali algoritmi sono in grado di ottimizzare l’insieme dei progetti in base all’informazione circa la priorità associata a ciascun progetto.

Gli algoritmi sono divisi in tre gruppi:

• Gli algoritmi di programmazione lineare

• Gli algoritmi euristici

Tra gli algoritmi reticolari c’è il PERT che è un acronimo di Program Evaluation and Review Technique, ed è il nome dato ad un algoritmo di calcolo della minima durata di un programma rappresentato su un reticolo con attività sugli archi, oltre a questo output, l’algoritmo calcola tutte le informazioni circa i tempi di inizio e fine delle attività e i tempi degli eventi in corrispondenza alla durata minima del programma. L’ algoritmo PERT, secondo Protto (9), non è uno schedulatore completo, perché non alloca risorse; esso richiede in input un reticolo e le durate delle attività; tali durate devono quindi già essere stimate in considerazione della maggiore o minore disponibilità di risorsa. La stima delle durate è in generale impossibile poiché la disponibilità della risorsa dipende dal momento in cui questa dovrebbe essere impegnata e tale momento viene fornito in output dell’ algoritmo, così diventa necessario eseguire calcoli in successione allungando le durate tecniche ad ogni durata passata per tenere conto dell’indisponibilità eventuale di risorsa. Protto nel suo libro (10) considera un reticolo con le attività sugli archi, denominando h e k due nodi ,definisce Ak,h l’arco orientato che va dal nodo h al nodo k, arco che corrisponde alla relativa attività di durata tecnica dh,k, vengono definite in seguito le seguenti grandezze:

Di nodo:

Te,h= Tempo “al più presto” dell’evento h (Time Early): quando al più presto l’evento può accadere,

Tl,h= Tempo “al più tardi” dell’ evento h (Time Late): quando al più tardi l’evento deve accadere, altrimenti il programma non si completa nel tempo minimo.

Sh = Slittamento totale dell’ evento h: quando l’evento può spostarsi nel tempo senza che il programma si completi oltre il tempo minimo.

Di attività:

ti;h,k= tempo minimo (“al più presto”) di inizio dell’attività Ah,k:quando al più presto l’attività può iniziare .

tf;h,k= tempo minimo (“al più presto”) di fine dell’ attività Ah,k quando al più presto l’attività può finire .

Ti,h,k= tempo massimo (“al più tardi”) di inizio dell’attività Ah,k quando al più tardi l’attività deve iniziare

Tf;h,k= tempo massimo (“al più tardi”) di fine dell’attività Ah,k quando al più tardi l’attività deve finire.

St;h,k= slittamento totale dell’attività Ah,k quando l’attività può ritardare la sua fine senza che ciò comporti conseguenze sul tempo minimo di fine dell’intero programma. Sl;h,k= slittamento libero (“al più presto”) dell’attività Ah,k quando il termine può ritardare senza conseguenze sui tempi minimi e massimi di inizio delle attività successive.

Sr;h,k= slittamento “libero al più tardi” dell’attività Ah,k quanto l’inizio dell’attività può essere anticipata rispetto al suo tempo massimo.

Si;h,k = slittamento indipendente dell’attività Ah,k quanto il termine dell’attività può ritardare senza conseguenze sui tempi minimi e massimi di inizio delle attività successive quando le attività precedenti terminassero al loro tempo massimo.

Con slittamento libero si intende solitamente lo slittamento libero al più presto. Alcuni autori, che usano la dizione completa, utilizzano il termine slittamento libero come sinonimo di slittamento indipendente. In fig 2.0 sono schematizzati sotto forma di diagramma a barre i quattro tipi di slittamento di attività in relazione alla posizione nel tempo dell’attività stessa, e cioè, secondo che essa inizi o termini ai tempi a più presto o al più tardi dei nodi di partenza o di arrivo e a riguardo Protto fa notare che (11) : “lo slittamento indipendente si evidenzia tanto in testa quanto in coda all’attività. Il tempo di slittamento di una attività può essere dovuto sia ad uno slittamento rigido dell’attività nel tempo, sia ad una maggiore durata rispetto al pianificato. Un’ attività che slitta consuma prima il suo slittamento indipendente, se ne ha ( cioè se Si;h,k>0), poi intacca lo slittamento totale, oltre il quale lo slittamento si ripercuote sul tempo finale del progetto”.

Fig.2.0 I quattro tipi di slittamento.

All’interno della famiglia PERT si individua l’algoritmo PERT-tempi semplice che si sviluppa in due fasi, la prima “in avanti” percorre il reticolo dal nodo iniziale a quello finale calcolando i tempi al più presto o minimi, la seconda “all’indietro” ripercorre il reticolo a ritroso calcolando i tempi al più tardi o massimi, avendo posto la durata totale del programma pari a quella minima calcolata al termine della prima fase come tempo al più presto del nodo finale n. Si presenta un algoritmo che, non essendo schedulatore, può essere utilizzato solo in caso di risorsa abbondante.

Oltre all’algoritmo PERT-Tempi Semplice abbiamo l’ algoritmo Full PERT-tempi, che strutturalmente è lo stesso del Pert semplice, ma considera le durate delle attività in forma probabilistica, in effetti le durate tecniche delle attività sono stime e pertanto è corretto considerare la loro probabilità di durata piuttosto che eseguire il calcolo su base deterministica come nel PERT semplice. Volendo eseguire i calcoli in modo rigoroso, le stime dovrebbero fornire sia le distribuzioni di probabilità delle singole durate tecniche, che dipendono dalle caratteristiche delle attività e dalla accuratezza di stima, sia informazioni circa la indipendenza statistica o meno delle durate delle singole attività tra loro.

Per ovviare a questi problemi il Full PERT pone delle ipotesi semplificative :

• Le durate delle attività sono tra loro statisticamente indipendenti,

• Tutte le durate hanno distribuzione di probabilità di tipo Beta, che ha una distribuzione di probabilità a forma di campana asimmetrica, nella quale si individuano i seguenti valori (14):

- a: valore ottimistico - b: valore pessimistico

- m: valore più probabile dai quali si calcola:

- la durata attesa (du) è una media ponderata delle tre durate, il suo valore è molto vicino alla media della β.

- Alla du si associa un grado di attendibilità ( varianza):

Nel caso di una di una gaussiana si ha una du che coincide con il valore medio della curva:

Prendendo in considerazione un esempio dell ing. Pratali (15) possiamo calcolare la durata attesa e la varianza:

- attività : scavo fondazioni (100 mc)

Si vede graficamente:

Si calcola in questo modo du e la varianza:

L’approccio statistico alla durata delle attività consente di calcolare le probabilità di una catena di più attività e così consente di calcolare la probabilità di rispettare :

le milestone

la data finale di consegna.

La durata di una sequenza di attività (somma delle distribuzioni β delle durate delle attività), si distribuisce secondo una gaussiana ( le attività devono essere statisticamente indipendenti > di 12).

Di questa distribuzione gaussiana noi possiamo calcolare : -la media come somma delle durate:

Introducendo la variabile standardizzata Z in termini di scarto quadratico medio :

Con tali assunzioni possiamo calcolare la probabilità di una certa durata della sequenza:

Sulle tabelle per la distribuzione gaussiana in corrispondenza di Z si legge la probabilità di realizzare D.

Facciamo un esempio (15):

Dalla tabella per Z=1,94

0,5000-0,4738 = 0,0262 = 2,62%

Ovvero graficamente, c’è la probabilità del 97,38% che la sequenza di attività duri più di 55 gg.

I problemi decisionali che vengono affrontati utilizzando gli algoritmi PERT Semplice e CPM possono essere espressi come funzioni da minimizzare soggette a vincoli rappresentati da sistemi di disequazioni lineari nelle stesse variabili e pertanto possono essere utilizzati algoritmi di programmazione lineare per la ricerca della soluzione (16).

Il caso del PERT Semplice si riformula come segue:

obbiettivo min [ TE,n ] con TL,n = TE,n e TL,1 = TE,1 per ogni attività Ah,k Tf;h,k - ti;h,k ≥ dh,k

TE,k - ti;h,k ≥ dh,k Tf;h,k - TL,h ≥ dh,k

Questo tipo di formulazione in termini di programmazione lineare consente di risolvere anche altri problemi, come minimizzazione tempi-costi o, ad esempio, il caso della ricerca delle date ottimali degli eventi ( nodi del reticolo ), quando le durate delle attività dipendono linearmente dalla quantità di risorsa impiegata.

Inoltre per la risoluzione dei problemi decisionali possono essere utilizzati gli algoritmi euristici, che sono procedure che cercano di avvicinarsi alla soluzione, non calcolandola attraverso un processo deterministico, ma trovando una soluzione sub-ottima attraverso processi ripetitivi (17). Secondo Protto (18) “tali procedure costruiscono una soluzione compatibile con i vincoli posti al problema sulla base di una determinata logica, non è però detto che la soluzione costruita sia la migliore; alcune procedure, una volta individuata una prima soluzione esplorano l’intorno alla ricerca di direzioni che portino a convergere verso altra soluzione migliore, tali procedure sono certamente migliori, ma più onerose in termini di automazione e tanto lente quanto ampio viene posto l’intorno di esplorazione.

Nel caso dello scheduling, gli algoritmi euristici utilizzati sono algoritmi minimizzanti, che ricercano un minimo della durata totale del progetto, oppure un minimo di una funzione della durata totale e del costo”. I software in uso che automatizzano gli algoritmi euristici sono in grado di gestire un set di vincoli molto esteso che va da diverse forme di calendario ed orario lavorativo, a vincoli tra attività di tipo “inizio-inizio” e “fine-fine” oltre al classico “fine- inizio”. Inoltre sono in grado di tenere una contabilità di progetto per il controllo-costi e forniscono potenti generatori di report.