Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CARLO MANNINO
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.
Gli attuali modelli matematici (e pacchetti applicativi) non distinguono più così
nettamente fra PERT e CPM.
Input: Identificazione delle attività
Warehouse
Tetto carico/scaric
Strade
Pavimento porte
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:
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).
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
a c
a c 2 5 6
2 6
4
3 b d 5 3 4 d 7
b
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 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).
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
• 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
FSijmax (5)
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à.