Come trovare la durata minima del progetto

Uno dei problemi della schedulazione di un progetto (project scheduling) è il calcolo della durata minima di un progetto. Per trovarla posso usare l'algoritmo che trova il costo massimo del cammino orientato in un digrafo aciclico.

    Un esempio pratico

    Un progetto è composto da 14 attività.

    Alcune attività devono rispettare un vincolo di precedenza rispetto alle altre, ossia possono iniziare solo al termine di altre attività.

    Attività Durata Vincoli di precedenza
    A1 7 --
    A2 9 --
    A3 12 --
    A4 16 A1, A2
    A5 15 A1, A2, A3
    A6 14 A1, A2
    A7 6 A4, A6
    A8 3 A5, A6
    A9 5 A6
    A10 7 A9
    A11 8 A7
    A12 9 A10, A11
    A13 11 A8, A9
    A14 6 A10, A13

    Nota. Le attività sono numerate in modo tale che nessu indice è inferiore agli indici dei vincoli di precedenza.

    Come prima cosa costruisco un digrafo (grafo orientato) cominciando dal nodo iniziale start (s) fino al nodo finale (t).

    I nodi sono le attività del progetto mentre gli archi indicano i vincoli di precedenza tra le attività.

    Sopra ogni arco indico la durata dell'attività di arrivo espressa in giorni.

    il grafo

    Nota. Il nodo di inizio (s) e fine progetto (t) hanno durata pari a zero.

    Per trovare la durata minima applico l'algoritmo a partire dal nodo S.

    Analizzo ogni singolo nodo in ordine topologico, quindi in sequenza n=1, 2, 3, 4 ecc.

    Per ciascun nodo trovo il tempo massimo T(n)+D(n) dei cammini in entrata e il nodo predecessore P(n).

    Il nodo terminale t indica la fine del progetto.

    Nodo 1 (attività di durata 7)

    Il nodo 1 ha un solo arco in entrata da S

    $$ T(1)_{min} = T(S) + D(S) = 0 + 0 = 0$$

    $$ P(1) = S $$

    Quindi, l'attività A1 può iniziare subito nell'istante zero (tempo minimo).

    Nodo 2 (attività di durata 9)

    Il nodo 2 ha un solo arco in entrata da S

    $$ T(2)_{min} = T(S) + D(S) = 0 + 0 = 0 $$

    $$ P(2) = S $$

    Quindi, l'attività A2 può iniziare subito nell'istante zero (tempo minimo).

    Nodo 3 (attività di durata 12)

    Il nodo 3 ha un solo arco in entrata da S

    $$ T(2)_{min} = T(S) + D(S) = 0 + 0 = 0 $$

    $$ P(3) = S $$

    Quindi, l'attività A3 può iniziare subito nell'istante zero (tempo minimo).

    Nodo 4 (attività di durata 16)

    Il nodo 4 ha due archi in entrata dal nodo 1 e dal nodo 2

    il nodo 4

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(4)_{min} = T(1) + D(1) = 0 + 7 = 7 \\ T(4)_{min} = T(2) + D(2) = 0 + 9 = 9 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 2.

    Quindi, prima dell'istante t=9 giorni l'attività A4 non può iniziare (tempo minimo).

    $$ T(4)_{min} =9 $$

    $$ P(4) = 2 $$

    Nodo 5 (attività di durata 15)

    Il nodo 5 ha tre archi in entrata dal nodo 1, dal nodo 2 e dal nodo 3

    il nodo 5

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(5)_{min} = T(1) + D(1) = 0 + 7 = 7 \\ T(5)_{min} = T(2) + D(2) = 0 + 9 = 9 \\ T(5)_{min} = T(3) + D(3) = 0 + 12 = 12 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 3.

    Quindi, prima dell'istante t=12 giorni l'attività A5 non può iniziare (tempo minimo).

    $$ T(5)_{min} =12 $$

    $$ P(5) = 3 $$

    Nodo 6 (attività di durata 14)

    Il nodo 6 ha due archi in entrata dal nodo 1 e dal nodo 2.

    il nodo 6

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(6)_{min} = T(1) + D(1) = 0 + 7 = 7 \\ T(6)_{min} = T(2) + D(2) = 0 + 9 = 9 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 2.

    Quindi, prima dell'istante t=9 giorni l'attività A6 non può iniziare (tempo minimo).

    $$ T(6)_{min} =9 $$

    $$ P(5) = 2 $$

    Nodo 7 (attività di durata 6)

    Il nodo 7 ha due archi in entrata dal nodo 4 e dal nodo 6.

    il nodo 7

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(7)_{min} = T(4) + D(4) = 9 + 16 = 25 \\ T(4)_{min} = T(6) + D(6) = 9 + 14 = 23 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 4.

    Quindi, prima dell'istante t=25 giorni l'attività A7 non può iniziare (tempo minimo).

    $$ T(7)_{min} =25 $$

    $$ P(7) = 4 $$

    Nodo 8 (attività di durata 3)

    Il nodo 8 ha due archi in entrata dal nodo 5 e dal nodo 6.

    il nodo 8

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T8)_{min} = T(5) + D(5) = 12 + 15 = 27 \\ T(5)_{min} = T(6) + D(6) = 9 + 14 = 23 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 5.

    Quindi, prima dell'istante t=27 giorni l'attività A8 non può iniziare (tempo minimo).

    $$ T(8)_{min} =T(5) + D(5) = 12+15 =27 $$

    $$ P(8) = 5 $$

    Nodo 9 (attività di durata 5)

    Il nodo 9 ha un solo arco in entrata dal nodo 6.

    $$ T(9)_{min} =T(6) + D(6) = 9 + 14 =23 $$

    $$ P(9) = 6 $$

    Quindi, prima dell'istante t=23 giorni l'attività A9 non può iniziare (tempo minimo).

    Nodo 10 (attività di durata 7)

    Il nodo 10 ha un solo arco in entrata dal nodo 9.

    $$ T(10)_{min} =T(9) + D(9) = 23 + 5 =28 $$

    $$ P(10) = 9 $$

    Quindi, prima dell'istante t=28 giorni l'attività A10 non può iniziare (tempo minimo).

    Nodo 11 (attività di durata 8)

    Il nodo 11 ha un solo arco in entrata dal nodo 7.

    $$ T(11)_{min} =T(7) + D(7) = 25 + 6 =31 $$

    $$ P(11) = 7 $$

    Quindi, prima dell'istante t=31 giorni l'attività A11 non può iniziare (tempo minimo).

    Nodo 12 (attività di durata 9)

    Il nodo12 ha due archi in entrata dal nodo 10 e dal nodo 11.

    il nodo 12

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(12)_{min} = T(10) + D(10) =28 + 7 = 35 \\ T(12)_{min} = T(11) + D(11) = 31 + 8 = 39 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 11.

    Quindi, prima dell'istante t=39 giorni l'attività A12 non può iniziare (tempo minimo).

    $$ T(12)_{min} =39 $$

    $$ P(12) = 11 $$

    Nodo 13 (attività di durata 11)

    Il nodo13 ha due archi in entrata dal nodo 9 e dal nodo 8.

    il nodo 13

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(13)_{min} = T(8) + D(8) =27 + 3 = 30 \\ T(13)_{min} = T(9) + D(9) = 23+ 5 = 28 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 8.

    Quindi, prima dell'istante t=39 giorni l'attività A13 non può iniziare (tempo minimo).

    $$ T(13)_{min} =30 $$

    $$ P(13) =8 $$

    Nodo 14 (attività di durata 6)

    Il nodo 14 ha un solo arco in entrata dal nodo 13.

    $$ T(14)_{min} =T(13) + D(13) = 30 + 11 =41 $$

    $$ P(14) = 13 $$

    Quindi, prima dell'istante t=41 giorni l'attività A14 non può iniziare (tempo minimo).

    Nodo t (attività di durata 0)

    Il nodo finale t ha due archi in entrata dal nodo 12 e dal nodo 14.

    il nodo finale

    Scelgo il tempo maggiore.

    $$ max \begin{cases} T(t)_{min} = T(12) + D(12) =39 + 9 = 48 \\ T(t)_{min} = T(14) + D(14) = 41+ 6 = 47 \end{cases} $$

    Il percorso con tempo maggiore è quello proveniente dal nodo 12.

    Quindi, prima dell'istante t=48 giorni il progetto non può finire (tempo minimo).

    $$ T(t)_{min} =48 $$

    $$ P(t) =12 $$

    In conclusione, la soluzione del problema è la seguente:

    La durata minima del progetto è 48 giorni.

    Ecco il tempo minimo di inizio (Tmin) per ciascuna attività del progetto

    Attività Durata Vincoli di precedenza Tmin
    A1 7 -- 0
    A2 9 -- 0
    A3 12 -- 0
    A4 16 A1, A2 9
    A5 15 A1, A2, A3 12
    A6 14 A1, A2 9
    A7 6 A4, A6 25
    A8 3 A5, A6 27
    A9 5 A6 23
    A10 7 A9 28
    A11 8 A7 31
    A12 9 A10, A11 39
    A13 11 A8, A9 30
    A14 6 A10, A13 41

    Una volta calcolata la durata minima del progetto e i tempi minimi di inizio delle attività, posso calcolare i tempi massimi di fine attività e trovare le attività critiche del progetto.

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    La teoria dei grafi