Sei sulla pagina 1di 19

Ottimizzazione nella gestione dei progetti

Capitolo 2: Reti di attività

CARLO MANNINO

Università di Roma“La Sapienza”


Dipartimento di Informatica e Sistemistica
Definizioni di base
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à prestabilite (ore, giorni, …).
Orizzonte temporale l’insieme dei periodi richiesti per l’esecuzione del progetto o
disponibili a priori se in presenza di scadenze (deadline).
Tecniche reticolari
Scopi:
1. 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:
1. L’insieme delle attività del progetto
2. La durata di ciascuna attività (certa o incerta)
3. Le precedenze temporali.

Metodi classici:
1. 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.
4. .... 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’obiettivo principale era quello di terminare il progetto nel


più breve tempo possibile.
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’obiettivo è un compromesso (trade-off) fra il costo del progetto
e il suo tempo di completamento (è possibile 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 Prefabbricati Serbatoi 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


1 Disegno del prodotto (6 settimane)
2 Disegno della confezione (2 settimane)
3 Ordine e ricezione dei materiali per prodotto (3 settimane)
4 Ordine e ricezione dei materiali per confezione (2 settimane)
5 Assemblaggio dei prodotti (4 settimane)
6 Preparazione delle Confezioni (1 settimana)
7 Impacchettamento dei prodotti (1 settimana)
8 Test di mercato del prodotto (6 settimane)
9 Revisione del prodotto (3 settimane)
10 Revisione della confezione (1 settimana)
11 Presentazione dei risultati al CdA (1 settimana)

Descriviamo le relazioni di precedenza (immediate). 1 deve finire prima che 3


cominci (1 < 3). Tutte le relazioni sono di tipo Finish/Start
2 < 4, 3 < 5, 4 < 6, 5 < 7, 6 < 7, 7 < 8, 8 < 9, 8 < 10, 9 < 11, 10 < 11.
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 possibili rappresentazioni:

Activity-on-arc: gli archi sono attività e i nodi eventi


Rete delle attività

G = (V, A) 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 applicabilità a problemi 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 b Es. 2 attività, {a, b}; a deve finire prima che b


1 2 3 cominci (a precede b, a < b)

Eventi:
1 – inizio a,
2 – fine a, inizio b,
3 – fine b
Proprietà delle reti AoA
a 2 d
Activity network con 5 attività: {a, b, c, d, e}
1 c 4
vincoli di precedenza: {a < c, a < d, b < e, c < e}.
b e
3
Un’attività può cominciare solo quando tutti i predecessori
sono terminati. Si osservi che la relazione di precedenza è
transitiva (se a < b e b < 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 1-4, talvolta è necessario aggiungere attività o
eventi fittizi (dummy)

Caso 1: non esiste


2 6 un’unica attività
a d
b iniziale o finale
3 5
c e Attività: {a, b, c, d, e}
4 7 Precedenze: {a < d, a < e, b < d, b < e, c < d, c < e}

2 6
a d Si aggiunge un nodo fittizio (il nodo 1) per
b 8 l’evento inizio progetto, e archi fittizi dal nodo
1 3 5
1 ai nodi che rappresentano l’inizio delle prime
c e attività (sorgenti).
4 7
Similmente per la la fine del progetto si
collegano i pozzi al nodo fine progetto.
Attività ed eventi fittizi
Caso 2: presenza di Se alcune attività deve essere eseguita in parallelo, e cioè
sono archi paralleli tutte le attività hanno lo stesso evento iniziale e finale,
bisogna introdurre attività ed eventi fittizi.

b 2 b b 2
a 1 a 1 a
1 2 4 4
c c
c
3 3

Caso 3: rappresentazione dei Quando i vincoli di precedenza coinvolgono più


vincoli di precedenza attività. Es: a < c, b < c, b < d

a c
a c 2 5 6
2 6
4
3 b d 5 3 4 d 7
b

Sbagliato! Implica a < d Corretto: b < c ma a e d sono inconfrontabili


Un algoritmo costruttivo
Attività: {a, b, c, d} Precedenze: {a < c, b < c, b < d}

Per costruire una rete AoA (non ridotta) si può seguire un semplice algoritmo:

1. Associa a ogni attività un arco disgiunto (gli estremi rappresentano l’inizio e la fine
dell’attività corrispondente)
a c
2 4 6 8
1 10

3 5 7 9
b d

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 c
2 4 6 8
1 10

3 5 7 9
b d

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 b, se tali archi non appartengono a un cammino orientato nel grafo originale.
a c
2 4 8
1 10

3 5 7 9
b d
Activity on Nodes (AoN)
Nodi rappresentano attività + due nodi fittizi (inizio e fine progetto).

Archi rappresentano relazioni di precedenza.

Es. 5 attività {a, b, c, d, e}: precedenze (semplici) a < c , a < d, b< e, c < d, c < e.

a d
s c t
b e

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 (b comincia dopo che a è terminato).
Questa è l’unica facilmente rappresentabile nello standard AoA.
Esistono altre relazioni, più complesse, rappresentabili con AoN: ad esempio, un’attività
può cominciare un certo tempo dopo che un’altra è terminata, oppure deve essere
eseguita in parallelo.

• Finish – Start: FSij 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: FSijmin(t)
FSijmin(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 FSijmax(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: SSijmin(t) l’attività j deve cominciare almeno ..t unità di tempo dopo
che l’attività i è cominciata. Analogamente SSijmax(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: FFijmin(t), FFijmax(t), l’attività j deve finire dopo che l’attività i è finita.

• Start – Finish: SFijmin(t), SFijmax(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 SS1max
j ( 6) j
progetto
1

L’attività j deve cominciare esattamente 5 FSijmin (5)


j
settimane dopo che l’attività i è finita.
i

FSijmax (5)

Il progetto deve terminare entro e non


oltre tre settimane. SF1nmax (3) n
1
Il grafo delle precedenze
Le relazioni di precedenza generalizzate vengono rappresentate
mediante il grafo delle precedenze generalizzate H(V,F).

• V = {1,…,n} insieme delle attività, 1 inizio progetto, 10 fine progetto.


Esempio di grafo di precedenze (generalizzate) (De Reyck (1998))
SSmin(1)
4
3 FFmax(4)
6 FFmin(2)
4
SSmin(2) FS max(3) 4
9
FFmax(3) FSmin(2)
SSmin(1)
0 SSmin(0) 6 FSmin(0)
FSmin(4) 0
1 2 8 10

2 FFmin(2) )
max (3) (3
ax
SSmin(2) FS SSmin(2) m

3 FS
5 SFmin(6) 7
7 SFmin(10) 5
4
SFmax(4)

Il grafo delle precedenze generalizzate è l’input per la costruzione del grafo dei vincoli.
Nodi e precedenze fittizie
SSmin(1) Le relazioni di precedenza fra i nodi fittizi
4
3 FFmax(4) e gli altri nodi del grafo vengono spesso
6 FFmin(2)
4 omesse (tranne quelle “immediate ”) nelle
SSmin(2) FS max(3) 4
9 rappresentazioni grafiche.
FFmax(3) FS min (2)
SSmin(1)
0 SSmin(0) 6 FSmin(0)
FSmin(4) 0
1 2 8 10

2 FFmin(2) )
max (3) (3
ax
SSmin(2) FS SSmin(2) m

3 FS
5 SFmin(6) 7
7 SFmin(10) 5
4
SFmax(4)
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 1 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à.

Potrebbero piacerti anche