Dato un progetto costituito da un numero finito di attività, cui è associata una durata o tempo di completamento, pianificare tale progetto vuol dire stabile una schedulazione ammissibile per ciascuna attività.
Formalmente,
Definizione. Si definisce progetto un insieme di m attività .
A ciascuna attività , è associata una durata o tempo di completamento
.
Fra due attività distinte può essere definita una relazione di precedenza del tipo
con il significato che l’attività può avere inizio solo dopo il completamento dell’attività
.
Tale relazione è chiaramente transitiva, ossia per ogni , tali che
Obiettivo: Il Problema della Pianificazione di un Progetto consiste nello schedulare e sincronizzare le attività di un progetto in modo da minimizzare la durata complessiva del progetto stesso, dove la durata complessiva è valutabile solo nell’istante in cui è completata l’ultima attività prevista dalla schedulazione.
Un progetto può essere rappresentato tramite un grafo orientato G=(V,A) adottando la convenzione di associare ad ogni attività un arco di costo pari alla durata dell’attività cui è associato.
La disposizione degli archi in G deve tener conto delle eventuali precedenze fra le varie attività del progetto.
A partire dalla descrizione del progetto per mezzo della lista delle attività e delle relative durate
e della lista delle q relazioni di precedenza
si costruisce un grafo iniziale contenente un arco per ogni attività di costo pari alla durata dell’attività cui è associato ed un arco fittizio di costo nullo per ogni relazione di precedenza.
Dunque, il grafo iniziale contiene m+q archi.
Si consideri, ad esempio, il seguente progetto PG:
Il grafo iniziale rappresentante PG ha m+q=5+5=10 archi ed è riportato in Figura.
Nel grafo iniziale si “contraggono” gli archi fittizzi ridondanti per poi cancellare i nodi risultanti superflui dopo la contrazione degli archi fittizzi ridondanti.
Per il grafo rappresentante PG si ottiene il grafo ridotto mostrato in Figura.
E’ banale osservare che il grafo orientato G=(V,A) rappresentante un progetto è sempre aciclico.
Ogni nodo j in V è da interpretarsi come evento ed in
particolare come l’evento corrispondente al completamento di tutte le attività associate agli archi entranti in j, cioè di tutte le attività
In quanto segue, si supporrà che il grafo G abbia un solo vertice iniziale s ed un solo vertice finale d (vedi Figura).
Tali ipotesi
Dato un progetto descritto mediante una lista di attività
ed una lista di relazioni di precedenza fra le attività, una volta costruito il grafo minimale che lo rappresenti, bisogna numerare i nodi del grafo in modo tale che la numerazione scelta rispetti l’ordine topologico, cioè sia tale che
L’ordine topologico dei nodi è ottenibile grazie ad un semplice algoritmo di complessità computazionale , il cui pseudocodice è riportato di seguito.
L’output è l’array index[n] contenente gli indici assegnati ai nodi.
Siano
Introducendo n variabili di decisione , al Problema della Pianificazione di un Progetto corrisponde il seguente modello matematico:
Note.
rappresenta la durata complessiva del progetto da minimizzare.
I vincoli (b) hanno la seguente interpretazione: per ogni attività (i,j) in A, ne rappresenta l’istante di completamento ed ogni attività (j,v) in A potrà iniziare solo dopo tale istante (vedi Figura).
Interpretando le durate delle attività come costi associati agli archi, la durata minima del progetto coincide con il costo del cammino più lungo dal nodo 1 al nodo n in G.
Per risolvere il Problema della Pianificazione di un Progetto, in letteratura è stato proposto un algoritmo noto come CPM, acronimo di Critical Path Method.
Ad ogni nodo i=1,2,…,n, l’algoritmo CPM associa
è la durata complessiva minima del progetto.
Definizioni e Proprietà.
Un’attività (i,j) in A ha slittamento nullo se si verifica che
Un’attività con slittamento nullo è detta attività critica.
Un cammino dal nodo 1 al nodo n in G è detto cammino critico se tutte le attività (equiv. archi) che lo compongono sono critiche.
Un qualunque grafo rappresentante un progetto ha almeno un cammino critico.
Per ogni i=1,2,…,n, e
sono calcolate tramite l’applicazione dell’algoritmo CPM, il cui input è costituito dal grafo minimale G=(V,A).
CPM è costituito da due fasi:
In linea 1 dell’algoritmo CPM viene invocato l’algoritmo nodes-topological-sort per numerare in ordine topologico i nodi con complessità computazionale pari a .
I loop for in linea 3 e 5 hanno entrambi computazionale pari a .
Ne consegue che la computazionale dell’algoritmo CPM è pari a
1. Presentazione del Corso ed Introduzione alla Programmazione Mat...
2. Introduzione ai Problemi di PL
6. Algoritmo del Simplesso Revisionato
7. Algoritmo del Simplesso Tabellare
10. Soluzione di Problemi di PL tramite Algoritmo del Simplesso
11. Problemi di Programmazione Lineare Intera
12. PLI con matrice dei vincoli unimodulare
13. Problemi di PLI: Branch & Bound
14. Il Problema dello Zaino 0/1 e il Problema dello Zaino Frazionar...
15. Il Problema dello Zaino 0/1: un algoritmo B&B
16. Il Problema dello Zaino 0/1: un algoritmo di Programmazione Din...
17. Richiami di Teoria dei Grafi: definizioni e notazioni
18. Il Problema del Vertex Cover Minimo di un Grafo
19. Il Problema dell'Albero di Copertura Minimo (MST)
20. Il Problema dell'Albero di Copertura Minimo (MST): esempio
D. Bertsimas e J.N. Tsitsiklis, Introduction to Linear Optimization, Belmont - Massachusetts (USA), Dynamic Ideas and Athena Scientific, 2008.
M. Fischetti, Lezioni di Ricerca Operativa, Padova, Edizioni Libreria Progetto Padova, 1999.
S. Martello, Fondamenti di Ricerca Operativa L-A, Bologna, Società Editrice Esculapio, 2004.
S. Martello, Ricerca Operativa LS, Bologna, Società Editrice Esculapio, 2004.
Dispense del Corso di Ricerca Operativa presso l'Università degli Studi di Pisa.
Dispense ed Appunti del Corso prodotte da Paola Festa.