Sei sulla pagina 1di 57

UNIVERSITÀ DELLA CALABRIA

Facoltà di Ingegneria
Corso di Laurea in Ingegneria Gestionale

PROVA FINALE

Il cammino critico di tipo fuzzy in


una rete di attività con relazioni di
precedenza generalizzate.

TUTOR CANDIDATO

Prof. Francesca Guerriero


Ing. Simona Benigno Giancarlo Volpe

__________________________________________________________________
Anno Accademico 2005/06
INDICE

Introduzione…………………………………………………………..4

Capitolo 1. Project Management e logica Fuzzy……………………...6


1.1. Il project Management……………………………...7
1.1.1. Il ciclo di vita di un progetto………………...8
1.1.2. Schedulazione delle attività operative……...10
1.1.3. Analisi del reticolo…………………………11
1.2. La logica Fuzzy…………………………………...12
1.2.1. Insiemi fuzzy………………………..……...16
1.2.2. Numeri fuzzy triangolari…………………...18
1.2.3. Operazioni sui numeri fuzzy……………….19
1.2.4. Confronto fra numeri fuzzy triangolari…….19

Capitolo 2. Il modello del Makespan………………………………..22


2.1. Analisi temporale………………………………….23
2.2. Durata di un progetto……………………………...24
2.3. Formulazione del makespan………………………25
2.4. Relazioni di precedenza generalizzate…………….29
2.5. Ricerca del cammino critico………………………34
2.6. Algoritmo di Bellman-Ford…………………….....36

Capitolo 3. Il modello del Makespan di tipo fuzzy………………….39


3.1. Introduzione e analisi della letteratura……………40
3.2. Il modello…………………………………………43
3.3. Descrizione dell’algoritmo risolutivo…………….46

2
Capitolo 4. Esempio di applicazione dell’algoritmo ………………..48
4.1. Applicazione dell’algoritmo risolutivo………...…49

Conclusioni…………………………………………………………..55
Bibliografia…………………………………………………………..57

3
INTRODUZIONE
Il Management moderno tende sempre più a perseguire livelli di
massima qualità sotto ogni aspetto della gestione dei progetti, al fine
di ottenere i risultati migliori con il minimo impiego di risorse.
Nonostante la crescente attenzione ad ogni possibile causa
d’inefficienza, si nota che alcune delle fasi relative alla gestione di un
progetto offrono ancora ampi margini di miglioramento.
Ad esempio, la schedulazione temporale delle attività, è spesso
lontana dall’essere ottimizzata.
Tra le aziende che si occupano dell’ottimizzazione dei progetti, il
Project Management utilizza procedure basate su modelli classici,
fondati su presupposti raramente riscontrabili nella realtà. Tali
procedure offrono in genere risultati soddisfacenti, ma difficilmente
sono esportabili ad altre realtà aziendali, essendo sviluppate in base
alle esigenze specifiche della realtà d’interesse.
Affidandosi alle capacità decisionali di personale specializzato, ci si
accorge di quanto possano diventare importanti per la gestione di un
progetto, una serie di fattori difficili da quantificare e formalizzare,
come ad esempio il tempo.
Un operatore esperto sa tener conto dei fattori di criticità, grazie alla
propria esperienza e competenza, ma non sempre è possibile definire
la realtà attraverso un modello matematico.
Ciò che manca ai modelli classici di schedulazione delle attività di un
progetto è proprio la capacità umana di considerare gli aspetti
“sfumati” della realtà.
L’obiettivo di questo lavoro è stato quello di sviluppare un algoritmo
per il calcolo del Makespan di un progetto, le cui attività sono legate

4
da relazioni di precedenza generalizzate, che sia in larga scala capace
di riprodurre l’abilità decisionale di un operatore umano.
Per ottenere tale obiettivo, serviva uno strumento di sviluppo che
potesse andare oltre le capacità degli usuali metodi matematici,
tenendo conto di tutti quei fattori poco analitici che possono avere
peso notevole in problemi di questo tipo.
Si è ritenuto che la logica fuzzy presentasse le potenzialità adatte a
supportare lo sviluppo di un sistema incerto come può essere
l’avanzamento di un progetto. La logica fuzzy è uno strumento teorico
e applicativo che permette di affrontare con successo quei problemi
che risultano più complessi da risolvere analiticamente.
Nel primo capitolo è data una definizione del Project Management
con le sue caratteristiche principali ed un primo approccio alle
tecniche reticolari. Sono presentate le basi teoriche della logica fuzzy,
con particolare attenzione ai numeri fuzzy triangolari e alle operazioni
effettuabili su di essi.
Nel secondo capitolo è descritto il modello del Makespan classico e
l’analisi temporale di una rete di progetto. E’ introdotto il sistema
delle relazioni di precedenza generalizzate in una rete di attività e
l’algoritmo risolutivo di Bellman-Ford modificato per il calcolo del
cammino massimo.
L’analisi del problema è svolta nel terzo capitolo, dove è presentato il
modello ed è descritto dettagliatamente l’algoritmo risolutivo del
Makespan fuzzy sotto relazioni di precedenza generalizzate.
Infine nel quarto capitolo è presentato un esempio d’applicazione
dell’algoritmo ad una rete di progetto e sono discussi i risultati
ottenuti.

5
CAPITOLO 1
PROJECT
MANAGEMENT E
LOGICA FUZZY

6
1.1 IL PROJECT MANAGEMENT
L’innovazione, il progresso tecnologico e il sempre crescente bisogno
di conoscenza hanno spinto, nel corso di questi ultimi anni,
l’attenzione e l’interesse del mondo imprenditoriale verso il Project
Management.
Le nuove sfide poste dagli scenari economici dinamici nel contesto i
cui le imprese si trovano ad operare non potevano più essere
efficacemente affrontate senza il ricorso ad una strategia che
riconoscesse nell’innovazione dei prodotti e dei servizi offerti alla
clientela la propria linea guida di riferimento, e il vertice di numerose
aziende ha individuato nei criteri, nelle metodologie e nelle tecniche
sviluppate dal Project Management la possibile soluzione al problema
rappresentato dalla gestione dei processi di revisione dei beni proposti
al mercato e di ristrutturazione dei rispettivi cicli produttivi.
Il Project Management è un sistema gestionale orientato ai risultati, e
in generale può definirsi come “la gestione sistemica di un’impresa
complessa, unica e di durata determinata, rivolta al raggiungimento
di un obiettivo chiaro e predefinito mediante un processo continuo di
pianificazione e controllo di risorse differenziate e con vincoli
interdipendenti di costi, tempi e qualità”.
Questa definizione mette in evidenza la caratteristica principale di un
progetto: la sua complessità. Un progetto è un’opera alla cui
realizzazione partecipano di norma numerosi settori aziendali di
differente estrazione tecnica, che operano svolgendo molteplici attività
tra loro correlate da stretti vincoli di interdipendenza di natura sia
logica che temporale.
Per essere davvero efficace, l’attività di Project Management deve
poter disporre di metodi e di sistemi di pianificazione e controllo che

7
siano in grado di supportare e favorire il processo di individuazione
degli obiettivi e dei risultati, delle singole attività operative,
l’attribuzione delle responsabilità esecutive, la pianificazione e la
schedulazione delle risorse e la selezione dei criteri di monitoraggio
dello stato di avanzamento dei lavori.

1.1.1. IL CICLO DI VITA DI UN PROGETTO


Un progetto, di qualsiasi natura esso sia, si sviluppa attraverso fasi
successive che ne determinano il suo ciclo di vita, che può essere così
strutturato:
1. Disegno concettuale: è la fase in cui l’organizzazione concepisce
la necessità di un progetto o riceve richieste da un cliente.
Comprende lo studio di fattibilità tecnologica, personale e
finanziaria, in cui l’organizzazione riflette su se stessa una miriade
di domande dirette a concretizzare ciò che in principio è
un’astrazione progettuale, ad esempio si verifica se si è in possesso
della tecnologia adeguata, se il personale disponibile è sufficiente e
qualificato, se le attività possono essere finanziate adeguatamente
con l’attuale liquidità interna o bisogna ricercare nuove fonti di
finanziamento. Se si sopravviene a risposte positive, si passa alla
valutazione dei rischi connessi ad ogni voce e alla selezione del
progetto che più degli altri bilancia le risorse disponibili con gli
obiettivi che si intende perseguire.
2. Definizione: sono stabiliti gli obiettivi, l’ambito d’azione e le
strategie. Il progetto si sviluppa e deve essere monitorato in modo
adeguato al fine di decretarne il successo e il completamento con la
definizione di linee guida sullo stato finale in termini di costo,
tempo e qualità. Di notevole importanza deve essere

8
l’organizzazione dei processi contenuti nell’intero progetto e la
definizione dei rispettivi prodotti finali.
3. Pianificazione: in questa fase si descrive l’esecuzione del progetto
nel dettaglio attraverso un procedimento sistematico e organizzato
definito Work Breakdown Structure (WBS). Sono decomposte le
principali attività del progetto a partire dai livelli più alti. Le
attività principali sono a loro volta suddivise e si procede cosi per
livelli successivi fino a raggiungere una dimensione gestibile per la
pianificazione ed il controllo. Per ogni attività si stabilisce la
richiesta di risorse e la loro disponibilità, la durata, i rapporti di
precedenza e i costi stimati. Si costruisce cosi la rete del progetto
(Project Network). Una volta pianificate le attività si devono
assegnare le responsabilità creando un organigramma del progetto
ove sono rappresentati il personale responsabile e gli addetti alle
attività per stabilire chi ha l’autorità e chi ha la responsabilità.
4. Sequenziamento: è definito il piano temporale in base al quale ogni
attività è identificata dai tempi d’inizio e di fine, in relazione delle
considerazioni ottenute nella fase di pianificazione sul tema
dell’allocazione delle risorse.
5. Esecuzione e controllo: è implementato il progetto. E’ durante
questa fase che si interviene con attività di reporting e
monitoraggio dei fattori stimati in fase di progettazione rilevando
eventuali scostamenti dai valori reali e procedendo con le rispettive
azioni correttive.
6. Terminazione: il progetto si conclude con la fase di consegna del
prodotto o del servizio.

9
1.1.2. SCHEDULAZIONE DELLE ATTIVITA’ OPERATIVE.
La fase più importante del ciclo di vita di un processo è quella di
pianificazione, il cui ultimo scopo consiste nella stesura del piano
operativo che risulti ottimale sotto il duplice profilo economico e
temporale. Per conseguire tale risultato è necessario risolvere il
processo di schedulazione delle attività operative previste, basandosi
sui seguenti elementi di riferimento:
 la durata delle attività: il tempo necessario affinché la stessa venga
completata;
 le relazioni di dipendenza da altre attività: che rappresentano i
vincoli e le condizioni necessarie perché ciascuna attività possa
avere inizio;
 le eventuali date imposte: le quali, se presenti, possono riguardare
l’inizio del progetto, il termine ultimo entro il quale lo stesso deve
concludersi, o qualsiasi altra data compresa nel periodo di
implementazione operativa che rappresenti una scadenza
significativa.
Il progetto è dunque visto come un insieme di attività che
interagiscono tra di loro, mentre per la sua rappresentazione, si fa
ricorso alle tecniche reticolari, che consentono di cogliere la natura
sistemica di un progetto facilitandone il controllo globale sotto il
profilo della valutazione economico-temporale necessaria al suo
completamento. Tali tecniche si fondano sulla teoria dei grafi.

10
1.1.3. ANALISI DEL RETICOLO
Il processo d’analisi reticolare è finalizzato alla valutazione della data
più prossima entro la quale può concludersi l’iter realizzativo che il
reticolo stesso rappresenta.
Per implementare questo processo sono state sviluppate diverse
tecniche operative, tra le quali:
 PERT: è l’acronimo di Program Evaluation and Review
Technique, consiste in una tecnica tesa ad evidenziare il cammino
critico all’interno di un reticolo. Questo metodo sviluppato nel
1958 in occasione del progetto POLARIS, tiene conto
dell’incertezza sui tempi di attuazione delle singole attività: per
ciascuna durata vengono stimati tre valori (pessimistico, probabile
e ottimistico) e la valutazione dell’arco temporale globale
necessario al completamento del progetto viene effettuato su base
statistica. Di conseguenza esso stabilisce un diverso indice di
criticità per ogni cammino possibile.
 CPM: è l’acronimo di Critical Path Metod; è una tecnica di
risoluzione reticolare che permette di evidenziare quella particolare
sequenza di attività, il cammino critico, che all’interno del reticolo
generale rende minimo il tempo necessario al completamento del
progetto. Di conseguenza il ritardo accusato da una qualsiasi
attività che appartiene al cammino critico si ripercuote in ugual
misura sulla data di fine progetto. E’ basato su una definizione
delle attività di tipo deterministico, per cui, a ciascuna di esse viene
associata un’unica durata che viene considerata certa.

11
1.2. LA LOGICA FUZZY
La maggior parte dei concetti con cui le persone hanno a che fare ogni
giorno sono soggettivi, difficili da quantificare e da classificare con
sicurezza. Ad esempio, non è possibile stabilire con certezza se una
persona è alta senza disporre di termine di paragone. Chiunque
affermerebbe che una persona della statura di due metri appartiene
alla categoria degli alti, ma nulla si potrà dire con certezza d i
una persona di 178 cm o di una persona di 175 cm. Secondo la logica
matematica tradizionale, si dovrebbe definire un limite preciso al di
sopra del quale le persone si possono considerare alte: le persone che
misurano almeno 178 cm sono alte, le altre non lo sono. Si
comprende come una definizione di questo tipo sia poco
rappresentativa del modo di pensare umano. È molto più naturale
pensare all’insieme delle persone alte come ad un insieme che man
mano diminuisce in modo più o meno regolare, a partire dalle persone
che sono inequivocabilmente alte per arrivare a quelle che
certamente non lo sono. In questo caso chiunque stia tra i due estremi
è alto, ma solo parzialmente: qualcuno lo è di più, qualcun altro di
meno.
Risulta perciò evidente che l’appartenenza di una persona all’insieme
degli alti non segue i canoni della logica tradizionale, non è
esprimibile facilmente con un sì o un no. Tale appartenenza è invece
ben descritta definendo per ogni persona un certo grado di
appartenenza, che esprime “quanto” la persona appartiene
all’insieme degli alti. Lo stesso ragionamento si potrebbe ripetere per
concetti come velocità elevata, prezzo economico, clima freddo e così
via. La teoria della logica fuzzy si basa sulla definizione di insiemi

12
“sfumati”, al fine di ottenere una rappresentazione più realistica di
grandezze e concetti che sono per loro natura graduali, non dicotomici.
Le variabili fuzzy non sono numeriche ma linguistiche, ed assumono
proprio valori come alto, basso, freddo, caldo.
La seconda caratteristica che avvicina la logica fuzzy al modo di
pensare umano, è il suo modo di rappresentare i ragionamenti. Di
solito i controlli impiegano formule matematiche e metodi numerici
per stabilire le corrispondenze tra le variabili d’ingresso e quelle
d’uscita. Il ragionamento umano è invece caratterizzato dall’utilizzo
di regole empiriche, a volte approssimative, dovute al buon senso o
all’esperienza, ma difficilmente traducibili in termini analitici. Anche
in questo caso la teoria fuzzy si rifà ai criteri decisionali umani,
utilizzando regole linguistiche e non matematiche per definire il modo
in cui le variabili si influenzano tra loro.
Nel guidare un’automobile eseguiamo continuamente azioni basate su
ragionamenti del tipo: se la velocità è elevata e l’ostacolo vicino, premi
forte sul pedale del freno; se la velocità è moderata e l’ostacolo si
trova a media distanza, premi leggermente sul pedale del freno.
Qualunque guidatore esegue spontaneamente e istantaneamente
ragionamenti del genere, mentre risulta molto più difficile
quantificare in modo preciso la forza in newton da applicare al pedale
del freno in corrispondenza di una certa velocità in chilometri orari e
di una certa distanza dall’ostacolo in metri.
Le regole linguistiche fuzzy sono analoghe alle regole descrittive
empiriche, e non richiedono l’utilizzo di formule o di complessi
modelli analitici.
I sistemi fuzzy si comportano in modo soddisfacente proprio in quelle
situazione che una persona saprebbe gestire con facilità, ma che

13
risultano le più difficili da affrontare con metodi analitici, come
l’esempio della frenata appena descritto.
I sistemi basati sulla logica fuzzy sono particolarmente adatti a
lavorare in condizioni di incertezza e di disturbi nell’acquisizione
dei dati. Si adattano bene a processi variabili nel tempo o fortemente
non lineari, e quindi difficili da rappresentare con modelli matematici.
Caratteristica della fuzzy logic è la notevole facilità di utilizzo e di
comprensione, dovuta alla sua affinità con il ragionamento umano.
I sistemi gestiti con logica fuzzy sono in rapida espansione in molti
campi. Le grandi aree d’utilizzo sono prevalentemente due, i sistemi
di controllo e i sistemi esperti o di supporto decisionale. Esempi di
applicazioni del primo tipo sono la regolazione di umidificatori e
condizionatori, l’eliminazione delle vibrazioni e la messa a fuoco per
macchine fotografiche e telecamere, la gestione di sistemi di sicurezza
nei trasporti (come ABS, sospensioni intelligenti, mantenimento
automatico della distanza di sicurezza), la definizione delle strategie
di lavaggio per lavabiancheria in funzione delle caratteristiche del
carico. Tra le applicazioni decisionali si possono citare sistemi di
compravendita di azioni e di valutazione del rischio, sistemi per le
previsioni meteorologiche e geofisiche, riconoscitori di caratteri e di
immagini.
In molti sistemi fuzzy, le variabili d’ingresso sono espresse con valori
numerici (p. es. la temperatura letta da un sensore, o il costo di una
particolare decisione), ed è richiesto un valore numerico anche per le
risposte che il sistema deve fornire (la potenza da erogare ad un
condizionatore, l’entità di un investimento). In tali situazioni, si
presenta la necessità di creare un’interfaccia tra il ragionamento fuzzy
e il mondo dei numeri.

14
A questo scopo si utilizzano le operazioni di fuzzificazione e
defuzzificazione, che trasformano un valore numerico in uno fuzzy e
viceversa. Tra queste due fasi si inserisce il processo d’inferenza
fuzzy, che fa corrispondere agli ingressi le uscite appropriate.
Tornando ai sistemi fuzzy di supporto decisionale, essi offrono un
vantaggio concettuale rispetto ai sistemi decisionali basati sulla
ricerca operativa o su altri metodi analitici. Quando si deve operare
una scelta basandosi sull’utilizzo di metodi analitici, ci si trova di
fronte ad uno spazio decisionale, finito o infinito, contenente le
alternative possibili. Si cerca allora di trovare l’alternativa che
massimizza una certa funzione obiettivo, rispettando nel contempo
una serie di vincoli. La funzione obiettivo permette di ordinare le
alternative secondo un grado di preferibilità, mentre i vincoli limitano
lo spazio delle alternative.
La scelta della funzione obiettivo, che deve essere formulata
analiticamente, e la definizione dei vincoli risultano perciò
determinanti sull’esito del processo.
Nei casi in cui si vogliano conseguire più obiettivi, specie se
contrastanti, ci si trova vincolati dai limiti di questa impostazione.
Al contrario, nella filosofia decisionale fuzzy, obiettivi e vincoli sono
gestiti allo stesso modo. Entrambi sono espressi tramite funzioni
particolari dette di appartenenza, mentre l’importanza e il ruolo che
assumono nel sistema vengono stabiliti da regole linguistiche. In
questo modo è molto più agevole far convivere obiettivi
concorrenti, e fornire delle indicazioni al sistema senza dover
necessariamente decidere se vanno usate come vincoli o come
obiettivi.

15
1.2.1 INSIEMI FUZZY
Un insieme "fuzzy" A è una collezione di oggetti dell'universo del
discorso U che hanno una qualche proprietà in comune. L'insieme è
caratterizzato da una funzione d’appartenenza

: U[0,1]

che associa ad ogni elemento x di U un numero reale appartenente


all'intervallo [0,1]; esso rappresenta il grado di appartenenza di x
all'insieme A. In tal modo è generalizzato il concetto di funzione
caratteristica di un insieme A, che è un’applicazione : U0,1, a
valori nell’insieme di due soli elementi, 0,1, tale che gli elementi di
A corrispondono al valore 1, e quelli del complementare di A al valore
0,
A =  xU : (x)=1

UNIONE:
Dati due sottoinsiemi fuzzy A, B dell’universo del discorso X, definiti
da due funzioni d’appartenenza A e B la loro unione viene definita
come quel sottoinsieme fuzzy di X la cui funzione di appartenenza e’

AB(x)=A(x)  B(x)

dove il simbolo  indica l’operazione di massimo.


INTERSEZIONE:
Dati due sottoinsiemi fuzzy A, B dell’universo del discorso X, definiti
da due funzioni d’appartenenza A e B la loro intersezione viene

16
definita come quel sottoinsieme fuzzy di X la cui funzione di
appartenenza e’

AB(x)=A(x)  B(x)

dove il simbolo  indica l’operazione di minimo

COMPLEMENTO:
Il complemento di un sottoinsieme fuzzy A dell’universo del discorso
X e’ definito dalla funzione di appartenenza:

CA(x)=1-A(x)

EQUIVALENZA:
Due sottoinsiemi fuzzy A e B dell’universo del discorso X sono
equivalenti se e solo se le loro rispettive funzioni di appartenenza sono
uguali.
A = B  A(x)=B(x) xX

Pare subito evidente che nella logica fuzzy non vale più né il principio
di non contraddizione (l’intersezione di A e ~A non fornisce l’insieme
vuoto), né il principio del terzo escluso (l’unione di A e ~A non
fornisce l’insieme U, con Mu(x) = 1 per tutti gli x dell’universo del
discorso).

17
1.2.2. NUMERI FUZZY TRIANGOLARI
I numeri fuzzy si differenziano in relazione alla loro funzione
d’appartenenza. In letteratura si possono trovare diversi tipi di numeri
fuzzy, ad esempio i numeri fuzzy trapezoidali e triangolari.
Nell’ambito del lavoro di tesi saranno utilizzati i numeri fuzzy
triangolari, caso particolare di quelli trapezoidali.
E’ possibile definire i numeri fuzzy triangolari attraverso una terna
A=(xL, xm,xR)

dove xL e xR sono rispettivamente il limite minore e maggiore del


numero fuzzy considerato, mentre xm è l’elemento che ha il maggior
grado di appartenenza.

Un numero fuzzy triangolare ha come funzione d’appartenenza:

 x - xL
 x  x se x L  x  x m
 m L

 x - xR
 A (x)   se x m  x  x R
 x m  x R
0 altrimenti

 (1.1)

e quindi viene rappresentato in questo modo:

xL xm xR
Fig.1.2.2.: Rappresentazione di un numero fuzzy triangolare

18
1.2.3. OPERAZIONI SUI NUMERI FUZZY TRIANGOLARI
Le operazioni aritmetiche classiche possono essere utilizzate in modo
appropriato con i numeri fuzzy. In particolare, dati due numeri fuzzy
triangolari A = (a1, a2, a3 ) e B = (b1, b2, b3 ), si definisce:
i) Addizione
A(+)B = (a1, a2, a3 ) (+) (b1, b2, b3 )
= (a1+b1, a2 +b2, a3+b3 )

ii) Sottrazione
A(-)B = (a1, a2, a3 ) (-) (b1, b2, b3 )
= (a1-b3, a2 -b2, a3-b1).

1.2.4. CONFRONTO TRA NUMERI FUZZY TRIANGOLARI


Uno dei problemi fondamentali affrontato in letteratura è il confronto
tra numeri fuzzy. Nel lavoro si è scelto di utilizzare un unico metodo
detto pessimistico che considera solo i risultati peggiori che
potrebbero essere ottenuti da un numero fuzzy, perciò potrebbe essere
usato per prendere decisioni con forti rischi avversi. Tale metodo è
definito da Facchinetti et al in [4]. Il confronto tra due numeri fuzzy
triangolari si basa sul calcolo, per ogni numero, di una funzione di
preferenza.
Def.
Sia ξ un insieme di numeri fuzzy triangolari. A  ξ sarà identificato
dalla sua funzione caratteristica:

19
0, 0  x  a1

 x  a1 a1  x  a 2
 ,
 a 2  a1
µA(x) =  (1.2)
 x  a3 a 2  x  a3
 ,
 a2  a3

0, x  a3

oppure dalla terna (a1, a2, a3 ).


Dato A  ξ, definiamo Lower di A, in simboli Low(A), come il
numero identificato dalla seguente funzione caratteristica:

1  A( x), x  a 2
µLow(A)(x) =  (1.3)
0, altrimenti

Low(A) rappresenta in qualche modo un’alternativa peggiore di A e


non è un numero triangolare fuzzy.
Definiamo la funzione di preferenza cosiddetta pessimistica φP:
ξXξ[0, 1] nel seguente modo:
 a 2  b1  
φP(A, B) = max min Low( A ) x , B x   min max  ,0 ,1.
x
  a 2  a1  b 2  b1  

Questa funzione esprime il valore più alto dell’intersezione tra µB e


µLow(A). Simmetricamente si ha:
 b 2  a1  
φP(B, A) = max min Low( B )  x , Ax   min max  ,0 ,1.
x
  a 2  a1  b 2  b1  

Dato
φP(A, B) + φP(B, A) = 1.
La funzione di preferenza pessimistica induce naturalmente su ξ
questa relazione:
A ~P B se e solo se φP(A, B) = φP(B, A).

20
~P è una relazione di equivalenza su ξ e definendo sull’insieme
quoziente ξ / ~P la seguente relazione di preferenza:
1
A >P B se e solo se φP(A, B) > .
2
Esempio
Dati due numeri fuzzy triangolari A = (3, 5, 7) e B = (4, 6, 8),
determinare il maggiore.
φP(A,B)=
  b 2  a1     54    1   1
min max  ,0 ,1  min max  ,0 ,1  min max  ,0 ,1 
  a 2  a1  b 2  b1    53 6 4    4   4

1 1
Verifichiamo che φP(A, B) = è minore di , quindi B > A.
4 2

21
CAPITOLO 2
IL MODELLO DEL
MAKESPAN

22
2.1 ANALISI TEMPORALE
Il tempo è la caratteristica principale delle attività e della gestione dei
progetti in generale; esso influenza direttamente gli altri parametri
gestionali e organizzativi, primo fra tutti il costo.
L’analisi temporale ci permette di definire in quanto tempo il progetto
terminerà e di analizzare le varie attività determinando quando esse
possono cominciare e quanto può essere ritardato il loro inizio senza
rallentare il proseguimento dell’intero progetto.
L’obiettivo si concentrerà sul calcolo del minimo tempo di
completamento del progetto e sull’identificazione delle attività
critiche.
La rappresentazione di un progetto si esplica con le reti di attività,
esse sono grafi che modellano le relazioni di precedenza che
intercorrono tra le attività di un progetto. Una relazione tipo Finish-
Start tra l’attività i e l’attività j indica che j non può iniziare prima che
i sia terminata, ossia i < j. Formalmente questa relazione è tale per cui
l’attività j non può iniziare prima che sia trascorso un certo tempo
FS(i,j) dalla fine di i. La quantità FS(i,j)min prende il nome di time-lag.
Esistono due possibili rappresentazioni di una rete di attività, una in
cui i nodi sono le attività e gli archi rappresentano i vincoli di
precedenza, Activity-on-Node (AoN). Oppure le attività possono
essere rappresentate sugli archi, ossia Activity-on-Arc (AoA).
Le reti utilizzate per rappresentare un progetto, nell’elaborato, sono
AoN. In questa variante gli unici nodi fittizi che può essere necessario
aggiungere sono quelli di inizio e fine progetto, nel caso non esista
un’unica attività iniziale o finale.
Una proprietà fondamentale della rete è che sia aciclica. Infatti, la
presenza di un ciclo implicherebbe l’esistenza una successione di

23
attività i, j, k tale che i < j, j < k, e k < i, violando la transitività delle
relazioni di precedenza.

a d

s c t

b e

Figura 2.1.: Esempio di Rete AoN, con 5 attività {a, b, c, d, e} e i due nodi fittizi
di inizio e fine progetto {s, t}

2.2 DURATA DI UN PROGETTO


Si consideri un progetto, rappresentato mediante la rete AoN,
G=(V,A) in cui V rappresenta le attività del progetto, e A i vincoli di
precedenza. Sia dato un vettore delle durate d  IR|V|, in cui di è la
durata nota e deterministica dell’attività i.
Un piano temporale (schedule) delle attività è un’assegnazione di
istanti di inizio alle attività.
Questa assegnazione specifica completamente l’allocazione temporale
delle attività, definite come interrompibili. Dunque, uno schedule è un
vettore ES = [ES1,…ESn]T, in cui ESi rappresenta il tempo minimo di
inizio dell’attività i.
Per ogni attività i  V è definita un’altra variabile, LSi che rappresenta
il tempo massimo di inizio dell’attività.

24
Sotto l’ipotesi di durata deterministica per ogni attività i  V, si avrà
che LSi = ESi + di.
Considerando solo relazioni di precedenza finish-start, si ha il vincolo
lineare LSi ≤ ESj per ogni (i, j)  A, ed eliminando le LSi , si ha ESi +
di ≤ ESj per ogni (i, j)  A.
L’obiettivo su cui porre l’attenzione è quello di determinare la durata
minima del progetto; deducendo dalla rappresentazione AoN la
presenza di un’attività di inizio e di fine progetto, si mira a
determinare il minimo valore della differenza tra l’istante di inizio
dell’attività conclusiva e dell’attività iniziale (siano tali attività fittizie
o reali), ovvero ESn – ES1, noto in letteratura come makespan.

2.3 FORMULAZIONE DEL MAKESPAN


Per formulare il problema di minimizzare il makespan, basta
introdurre un vincolo per ciascuna attività, dal momento che non sono
state fatte considerazioni sulla presenza di risorse o budget limitato e i
soli vincoli introdotti definiscono che l’esecuzione di ciascuna attività
è subordinata al completamento delle attività che la precedono.
Dato il grafo aciclico G = (V, A), in cui indichiamo con 1 il nodo
iniziale e con N il nodo finale, si ha:

min ES N  ES1
s.a.
ESi  di  ES j (i, j )  A (2.1)
ESi  0i V

25
Consideriamo il seguente esempio:

Figura 2.3.: Esempio di rete AoN

Il problema si formula nel modo seguente:

Min ES8 – ES1

s.a

ES1 + 0 ≤ ES2
ES1 + 0 ≤ ES3
ES1 + 0 ≤ ES4
ES2 + 2 ≤ ES5
ES3 + 1 ≤ ES6
ES4 + 5 ≤ ES6
ES4 + 5 ≤ ES7
ES5 + 1 ≤ ES6
ES6 + 2 ≤ ES8

26
ES7 + 7 ≤ ES8
ESi ≥ 0  i  V

Questo caratteristico problema di PL può essere riscritto in forma più


efficiente, cambiando i vincoli del problema nella forma ≥, e
rimuovendo i vincoli di non negatività. Si ottiene la seguente
formulazione:

min ESN  ES1


s.a ( 2.2 )
ES j  ESi  di (i, j )  A

Il problema (2.2) è equivalente al problema originario pur avendo


eliminato i vincoli di non negatività, perché da una soluzione del (2.2)
si può sempre ottenere una soluzione equivalente per il problema
(2.1).
In particolare se s* è una soluzione ottima del (2.2) e –k è il valore
della sua componente più negativa ( k ≥ 0 ), ponendo ESi’ = ESi* + k
per ogni i  V si ha che ES’ soddisfa tutti i vincoli di (2.1) e le due
funzioni obiettivo hanno lo stesso valore. E si può risolvere il (2.2)
anziché (2.1).
Si scrive il duale del problema (2.2) osservando che i vincoli primali
sono associati agli archi (i, j)  A del grafo G. Il termine noto di può
essere quindi interpretato come lunghezza lij dell’arco (i, j) . Per ogni
(i, j)  A associamo al vincolo (i, j) la variabile non negativa duale xij .

27
I vincoli duali sono associati ai nodi e sono di uguaglianza perché le
variabili primali in (2.2) non sono vincolate. Il problema duale
risultante può essere rappresentato mediante il seguente modello
matematico:

max  lij x ij
i, jA

s.a.
x ji  x ij  0 i  V  1, n
j:(j,i )A j:(i, j)

x
j:( 1, j )A
1j  1
( 2.3 )

x
j:( j,n )A
jn 1

x ij  0

In questa rappresentazione è ben nota la formulazione del problema di


determinare un cammino di lunghezza massima dal nodo 1 al nodo n
in G = (V, A). Poiché il grafo G è aciclico, possiamo essere certi che il
problema è ben posto.
Dalla dualità forte, deriva che all’ottimo le funzioni obiettivo dei due
problemi hanno lo stesso valore: il makespan del progetto coincide
con la lunghezza del cammino massimo sul grafo G, ove gli archi
uscenti da ciascun nodo i sono pesati con la durata di di quella attività.

28
2.4. RELAZIONI DI PRECEDENZA GENERALIZZATE
Tra le relazioni di precedenza sono state definite tra attività le
relazioni di precedenza generalizzate, che possono essere espresse
con vincoli lineari sulle variabili ES e LS. Queste relazioni non legano
solo l’istante finale di un’attività con quello iniziale di un’attività
successiva, ma anche, tra loro, gli istanti iniziali, quelli finali, o quello
iniziale con quello finale di un’attività. In generale esistono dei time-
lag che impongono una distanza minima o massima tra questi istanti.
E’ naturale concepire quattro tipi di relazioni:
1. Relazioni di tipo start-start. Vincolano gli istanti di inizio tra due
attività: l’attività j può iniziare al più presto dopo SS(i, j)min unità di
tempo dall’inizio dell’attività i: ESi + SS(i, j)min ≤ ESj (relazione di
tipo min), oppure: l’attività j deve iniziare al più tardi dopo SS(i,
j)max dall’inizio dell’attività i: ESj ≤ ESi + SS(i, j)max.
2. Relazioni di tipo start-finish. Vincolano l’istante di inizio di
un’attività con quello di fine di un’altra: l’attività j può finire al più
presto SF(i, j)min unità di tempo dall’inizio dell’attività i: ESi +
SF(i, j)min ≤ LSj (relazione di tipo min), oppure: l’attività j può
finire al più tardi SF(i, j)max unità di tempo dall’inizio dell’attività i:
LSj ≤ ESi + SF(i, j)max (relazioni di tipo max).
3. Relazioni di tipo finish-start. Sono quelle classiche con l’aggiunta
dei time-lag. L’attività j può iniziare al più presto FS(i,j)min unità di
tempo dalla fine dell’attività i: LSi + FS(i,j)min ≤ ESj (relazione di
tipo min), oppure: l’attività j può iniziare al più tardi dopo
FS(i,j)max unità di tempo dalla fine dell’attività i: ESj ≤ LSi +
FS(i,j)max (relazioni di tipo max).
4. Relazioni di tipo finish-finish. Vincolano gli istanti finali di due
attività: l’attività j può finire al più presto FF(i,j)min unità di tempo

29
dalla fine dell’attività i: LSi + FF(i,j)min ≤ LSj (relazione di tipo
min), oppure: l’attività j può finire al più tardi dopo FF(i,j)max unità
di tempo dalla fine dell’attività i: LSj ≤ LSi + FF(i,j)max (relazione
di tipo max).

Possibili applicazioni di queste relazioni sono identificabili


frequentemente, in contesti anche molto diversi.
Il problema di trovare un piano delle attività che minimizzi il tempo di
completamento in presenza di relazioni di precedenza generalizzate
può essere affrontato in termini di programmazione lineare.
I vincoli del problema sono riscritti nella forma normalizzata di “≤” e
in funzione delle sole variabili ES, sapendo che LSi = ESi + di:
ESi + lij  ESj
Oppure
ESj + lji  ESi

dove lij e lji sono opportune costanti, chiamate “lag normalizzati”.


Ad esempio, il vincolo ESi + SS(i, j)min ESj diventa ESi + lij  ESj,
ove si ponga lij = SS(i, j)min.
Il vincolo ESi + SF(i, j)max ≥ LSj diviene ESj + lji  ESi, con lji = dj -
SF(i,j)max. Procedendo in maniera analoga è possibile ricavare tutte le
normalizzazioni delle relazioni temporali. Si osservi che il vincolo
finish-start senza time lag (FS(i, j)min=0) si traduce come lij = di.

30
Relazione Vincolo Vincolo Lag
Normale normalizzato
SS(i, j)min ESi + SS(i, j)min  ESi + lij  lij = SS(i, j)
min

ESj ESj

SS(i, j)max ESi + SS(i, j)max  ESj + lji  lji = -SS(i, j)


max

ESj ESi

SF(i, j)min ESi + SF(i, j)min  ESi +lij  lij= -dj +


min
LSj ESj SF(i,j)

SF(i, j)max ESi + SF(i, j)max  ESj +lji  lji= dj -SF(i,j)


max

LSj ESi

FS(i, j)min LSi + FS(i, j)min  ESi + lij  lij=di+ FS(i,j)


min

ESj ESj

FS(i, j)max LSi + FS(i, j)max  ESj + lji  lji=-di- FS(i,j)


max

ESj ESi

FF(i,j)min LSi + FF(i,j)min  ESi + lij  lij = di - dj +


LSj ESj FF(i,j)min

FF(i,j)max LSi + FF(i,j)max  ESj + lji  lji = dj - di -


LSj ESi FF(i,j)max

Tabella 1: Normalizzazione delle precedenze generalizzate

Anche in presenza di vincoli di precedenza generalizzati, possiamo


utilmente rappresentare il progetto per mezzo di una rete AoN. Mentre
finora l'arco (i,j) indicava semplicemente che l'attività j doveva
seguire la i, adesso utilizziamo gli archi per rappresentare anche
l'informazione associata alle relazioni normalizzate. Precisamente,
abbiamo che nella rete AoN esiste l'arco (k,q) dal nodo k al nodo q se

31
e solo se esiste una relazione normalizzata specificata da un parametro
di tipo SS(k,q), SF(k,q), FS(k,q) o FF(k,q), sia di tipo min che max. Da
questa rete AoN è possibile ricavare una rappresentazione
normalizzata, in cui cioè l'arco è orientato da k a q se la relazione è
della forma ESk + lkq  ESq.
Si noti come la presenza di una relazione di tipo max tra due attività i
e j porta all'introduzione di un arco dal nodo j al nodo i, ovvero
orientato inversamente rispetto alla relazione.
L'arco è pesato con il lag normalizzato lkq. La rete ottenuta prende il
nome di constraint digraph (grafo orientato vincolato).
Dato dunque un constraint digraph G = (V, E), il problema di trovare
un piano delle attività ammissibile che minimizzi il makespan può
essere formulato come:
min ESn
ESi + lij  ESj  (i, j)  E
ESi  0  i  V (2.4)

dove ESn è l'inizio dell'attività n (eventualmente fittizia) di fine


progetto.
Occorre valutare alcune importanti osservazioni nella costruzione del
grafo dei vincoli. Anzitutto, se ci sono archi paralleli, basta
considerare quello di peso massimo: infatti, se si hanno entrambi i
vincoli ESi + 2  ESj e ESi + 3 ESj , il secondo domina il primo, che
può essere quindi omesso. In effetti, una stessa coppia di attività può
essere legata da più relazioni di precedenza generalizzate: la più
"stringente" delle relazioni di tipo min (ossia quella con lij massimo)
obbligherà j a iniziare dopo l'istante ESi + lij , mentre la più stringente

32
di quelle di tipo max (quella con lji massimo) vincolerà j a iniziare non
oltre si-lji. In generale, si può dunque individuare un intervallo [ESi +
lij ; ESi - lji], detto finestra temporale (time window) di ES j
relativamente a ESi.
Si noti che in generale occorrerà imporre esplicitamente il fatto che
ogni attività termini prima che l'attività n inizi: infatti, adesso la
presenza di un arco da i a j non garantisce più che j inizi dopo che i è
finita: in una relazione start-start abbiamo solo che j inizia (almeno
SS(i, j)min istanti) dopo l'inizio di i, ma se per esempio j è molto lunga,
è anzi probabile che termini dopo la fine di i. Perciò, se un nodo i non
è coinvolto esplicitamente in relazioni FS(i, j)min con qualche altro
nodo j, si deve aggiungere al grafo un arco (i, n) di peso FS(i, n)min =
0. Solo laddove, invece, la fine di i preceda strettamente l'inizio di
qualche altra attività j, questa relazione risulta essere ridondante, e
l'arco (i, n) può dunque essere omesso. Per motivi del tutto simmetrici,
aggiungeremo anche archi del tipo (1, i) di peso FS(1, i)min = 0.
Si riporta un esempio di un progetto rappresentato tramite la rete AoN
in cui sono state aggiunte le informazioni relative alle precedenze
generalizzate e il corrispondente constraint digraph.

Figura 2.4. a): AoN con precedenze generalizzate

33
Figura 2.4. b): Digrafo dei vincoli associato al reticolo

2.5. RICERCA DEL CAMMINO CRITICO


La ricerca del cammino critico in una rete di attività viene fatta
implementando la tecnica di risoluzione reticolare descritta in
precedenza, il CPM.
Il cammino critico è definito come il cammino massimo dal nodo 1, di
inizio progetto, al nodo n, di fine progetto.
Il peso del cammino massimo dal nodo 1 al nodo n corrisponde alla
durata minima dell’intero progetto, cioè al makespan.
Nell’analisi dei cammini critici svolge un ruolo di primaria
importanza il concetto di Tempo di slittamento o total float.
I concetti di percorso critico e di earliest/latest start/finish schedule
evidenziano che, per portare a termine un progetto nei tempi previsti,
non tutte le attività hanno la stessa importanza.
Il total float TFj dell’attività j è la quantità di tempo di cui può essere
ritardata l’attività j, rispetto al proprio ESTj , senza che la data di fine
progetto venga violata. Si ha che TFj = LSTj - ESTj = LFTj - EFTj . Il
total float misura il margine di libertà che si ha nello schedulare

34
un’attività. Se il total float di un’attività è 0, allora questa attività è
critica, e dunque ogni attività che sta sul cammino critico ha total float
pari a 0. Il margine misurato dal total float è effettivamente
disponibile solo se nessuno dei predecessori di j termina dopo ESTj e
nessuno dei successori inizia prima di LFTj , circostanze che invece
possono benissimo verificarsi. Ossia, la eventuale decisione di
schedulare j in modo che termini all’istante LFTj può, in generale,
costringere altre attività ad iniziare più tardi.
Si è visto che il total float è pari a LFT j - EFTj , se però qualche
successore di j è schedulato in modo da terminare prima del proprio
latest finish time, questo può impedire a j di terminare a LFTj. Di
certo, comunque, non si potrà obbligare j a terminare prima di
mini>j{ESTi}. Il free float FFj dell’attività j è la quantità di tempo di
cui la fine dell’attività j può essere ritardata indipendentemente dalla
schedulazione dei successori, ed è pari a FFj = mini > j{ ESTi} - EFTj .
In altre parole, che l’attività inizia a EST j o a ESTj + FFj non ha alcun
impatto sulle attività aventi indice i > j.
Simmetricamente, se qualche predecessore di j inizia dopo il proprio
earliest start time, anche j potrà essere obbligato a iniziare dopo ESTj ;
in nessun caso sarà costretto a iniziare dopo maxi <j { LFTi}. Il safety
float SFj dell’attività j può essere ritardato indipendentemente dalla
schedulazione dei predecessori, ed è pari a SFj = LSTj - maxi <j{ LFTi}.
Esistono diversi algoritmi per il calcolo del cammino di peso
massimo, con complessità variabili. Di seguito si considererà
l’algoritmo di Bellman-Ford.

35
2.6. ALGORITMO DI BELLMAN-FORD.
Il problema di determinare l'earliest start time ESi di ogni attività i 
V , consiste nel trovare il valore del cammino orientato di costo
massimo dal nodo 1 al nodo i. Questo problema può essere risolto se e
solo se il grafo non contiene cicli orientati di lunghezza strettamente
positiva. Come è evidente nell’esempio seguente.
Si consideri un progetto costituito da tre attività, a, b, c, con le durate:
da = 4, db =2, dc = 1.
Si sa che l’attività b può iniziare al più presto 9 giorni dall’inizio
dell’attività a, l’attività c al più tardi 8 giorni dalla fine dell’attività b,
e inoltre l’attività c deve finire al più tardi entro 16 giorni dall’inizio
dell’attività a.
I tre vincoli generalizzati sono dunque dati da SS(a,b)min = 9,
FS(b,c)min = 8, SF(a,c)max =16.
Nella rappresentazione AoN, si ha il ciclo {(a,b); (b,c); (c,a)}, con
pesi:
lab = 9, lbc = 10, lca = -15,
dunque un ciclo positivo.
Andando a scrivere le corrispondenti relazioni, si ottiene:
ESa + 9  ESb
ESb + 10  ESc
ESc - 15  ESa
Sommando le tre disequazioni si ottiene 40, ovvero un assurdo. E
questo vale per un qualunque ciclo C positivo. Ma nei casi più
complessi può succedere di non accorgersi della presenza di eventuali
cicli positivi, e l’algoritmo di Bellman-Ford permette di superare
queste difficoltà.

36
Esso funziona nel seguente modo. Lo scopo è il calcolo delle date
minime di inizio di ogni attività. Le variabili che vengono via via
aggiornate nel corso dell'esecuzione dell'algoritmo rappresentano un
vettore di istanti di inizio, non necessariamente ammissibile, delle
varie attività, che alla fine conterranno le date minime di inizio di
ciascuna attività.
Dato il constraint digraph G, inizialmente viene scelto un ordinamento
degli archi e definita una soluzione iniziale, non necessariamente
ammissibile(ad esempio ESi := -).
A ogni iterazione, tutti gli archi di G vengono visitati, seguendo
l'ordine prefissato, e viene effettuata la seguente operazione: se per un
arco (i, j) si ha che ESj < ESi +lij violando il corrispondente vincolo, si
pone ESj := ESi + lij.
Se durante un'iterazione non si verifica alcun aggiornamento,
l'algoritmo termina e ESTi = ESi , il valore ESi corrente corrisponde
all’earliest start time di i.
L'algoritmo si arresta quando le etichette non vengono più aggiornate
per tutta una iterazione del blocco repeat, oppure, comunque, dopo n
iterazioni.
L’algoritmo può essere schematizzato come segue:

Input: G
Output: ES e pred
Inizializzazione: ES1 := 0; ESi := -; pred(i) = 0  i = 2,…,n.
begin
Ordina gli archi {e1,……, em}

37
repeat
for k = 1…..m
if ek = (i, j) è tale che ESj < ESi + lij
ESj = ESi + lij
Predj = i
end
end
until
(ES non si è modificato o sono state eseguite n iterazioni)
end.

Fig. 2.6. : Algoritmo di Bellman-Ford.

38
CAPITOLO 3
IL MODELLO DEL
MAKESPAN DI TIPO
FUZZY

39
3.1. INTRODUZIONE E ANALISI DELLA LETTERATURA
Nel modello del Makespan l’obiettivo è quello di determinare la
durata minima del progetto a cui corrispondeva il cammino critico.
Nel caso del makespan classico, la durata delle varie attività è certa e
determinata in base all’esperienza del decisore e ai dati storici di cui
dispone. Ma nella realtà, le informazioni di cui dispone non sono
attendibili, perché gli scenari interni o esterni possono essere variati,
perché si possono verificare imprevisti e rallentamenti o perché sono
stati apportati cambiamenti nel processo gestionale del progetto per
cui non si dispone di dati storici rendendo obsoleti quelli che si
dispongono.
Tutto ciò può portare a risultati che si discostano di molto dai valori
reali, con implicazioni sugli obiettivi più importanti del Project
Management, vale a dire il tempo e il costo.
Spesso è molto difficile ottenere le durate esatte delle attività e si
usano termini linguistici quali “Approssimativamente tra 9 e 15 ore” o
“ Intorno a 22 ore”, per dare una stima sulle durate delle varie attività.
Queste espressioni di natura vaga e imprecisa in qualche modo
sintetizzano quello che non si può affermare con certezza.
E in questo ambiente la teoria degli insiemi Fuzzy può giocare un
ruolo significativo nel decision-making, perché con essa si possono
rappresentare in maniera esaustiva questi termini linguistici sinonimo
di vaghezza.
Con l’inizio della seconda metà degli anni ’70, quando la logica Fuzzy
già si estese in molti campi scientifici e culturali, venne sviluppato
l’altro approccio all’analisi della progettazione della rete, definito
come Fuzzy Pert o CPM Fuzzy, in cui si utilizzano numeri fuzzy per
modellizzare i tempi di attività.

40
Le classiche formule usate nel CPM vengono modificate utilizzando
le operazioni generalizzate sui numeri fuzzy. Le formule e le relazioni
cosi modificate sono usate per definire le caratteristiche di molti
progetti, tra cui la più importante tra loro, cioè il grado della criticità
dei cammini e delle attività.
Le proprietà che sono equivalenti nel caso deterministico e portano
all’identificazione unica del cammino critico, non possono giocare
tale ruolo se esse sono automaticamente trasferite al caso fuzzy. Come
risultato sono state ottenute diverse definizioni del cammino critico
fuzzy che danno diverse stime del grado di criticità per lo stesso
cammino nella rete.
In [1] la nozione di criticità viene generalizzata direttamente senza
usare le operazioni aritmetiche generalizzate sui numeri fuzzy. Cioè,
la criticità del cammino viene considerata come una funzione a due
valori che dipende dal cammino e dai tempi di durata delle attività
assunte nella rete.
Questa funzione prende uno dei due valori “SI” o “NO”
dipendentemente dal fatto che il cammino dato è critico o non-critico
sui tempi di durata delle attività crisp assunte.
Prima di esporre il CPM con tempi di attività fuzzy, viene introdotto il
classico CPM e il CPM con tempi di attività a intervallo che è la
variante che più si avvicina al caso fuzzy.
In questa analisi le attività del progetto sono rappresentate sugli archi
della rete e le relative durate da numeri fuzzy trapezoidali.
Un altro approccio è stato presentato in [2], dove viene mostrato che
ulteriori estensioni possono essere fatte considerando la sottrazione
interattiva fuzzy e osservando che solo la parte non negativa dei
numeri fuzzy può avere un’interpretazione fisica. Sulla base di queste

41
due osservazioni sono state definite le formule per il calcolo
dell’ultimo tempo di inizio permesso e dello slittamento per ogni
attività.
Anche qui è usata una rappresentazione “Activity-on-Arc” ma i tempi
di durata delle attività sono rappresentati da numeri fuzzy triangolari.
Nuovi algoritmi per determinare gli intervalli dei latest start time e dei
floats di attività in reti generali con durate imprecise rappresentate per
mezzo di numeri o intervalli fuzzy, sono proposti in [5] , dove sono
ottenuti anche risultati di complessità per il calcolo dei floats.
In [6] viene presentato un altro modello per la completa soluzione
dell’analisi di criticità di una rete di attività, dove le rispettive durate
non sono determinate ma rappresentate da intervalli di valori (non si
parla di numeri fuzzy). E viene mostrato come la complessità
dell’algoritmo cambia, considerando la durata delle attività certa o
incerta.
Un algoritmo semplice ed efficiente per l’analisi del cammino critico
in circostanze fuzzy è presentato in [7], dove i tempi di attività della
rete del progetto sono rappresentati da numeri fuzzy trapezoidali.
Sono proposte delle proprietà per il calcolo dello slittamento fuzzy e
del cammino critico fuzzy, applicate in una rete di progetto dove le
attività sono rappresentate sugli archi.
Le proprietà descritte per il calcolo di EST e di LST, sono simili al
caso del CPM classico con numeri crisp ma computate con le
operazioni aritmetiche sui numeri fuzzy.

42
3.2. IL MODELLO
Gli algoritmi descritti nel precedente paragrafo portano a ottimi
risultati per quanto concerne l’effettiva approssimazione della realtà,
con i suoi imprevisti e le sue incertezze, nell’analisi temporale dello
sviluppo di un progetto.
Essi, però, non considerano la possibilità che tra le diverse attività del
progetto vi siano relazioni di precedenza diverse da quelle classiche
di finish-start, cioè la presenza di relazioni di precedenza
generalizzate che legano tra loro gli istanti di inizio e di fine di
un’attività con i corrispettivi istanti di un’altra attività.
L’obiettivo di questo lavoro è quello di sfruttare l’elasticità e la
dinamicità di una rete di progetto date dalla presenza delle suddette
relazioni di precedenza generalizzate tra le varie attività e avvalersi
dei benefici della logica fuzzy applicata per rappresentare il tempo di
durata delle attività, che con i suoi toni di vaghezza riesce ad
approssimare al meglio la realtà in un ambiente dove la certezza
deterministica è spesso un’utopia.
A differenza degli algoritmi sul CPM fuzzy presenti in letteratura, la
rete di attività del progetto, e dunque il grafo orientato, è mostrata
mediante la rappresentazione Activity-on-Node(AoN), dove i nodi
rappresentano le attività e gli archi rappresentano i vincoli relativi alle
relazioni di precedenza generalizzate.
I tempi di durata delle attività e i time-lag delle relazioni di
precedenza generalizzate sono rappresentati da numeri fuzzy
triangolari, descritti nel paragrafo 1.2.2. con le rispettive operazioni.
L’idea è quella di applicare l’algoritmo di Bellman-Ford per il
cammino massimo modificato, descritto nel paragrafo 2.6.,
espandendolo al caso di tempi di tipo fuzzy.

43
Dato il grafo constraint digraph G = (V, A), in cui indichiamo con 1 il
nodo iniziale e con N il nodo finale, si ha:

min FES N
s.a.
FESi  lij  F FES j (i, j )  A (3.1)
FESi  F 0i  V

Questo problema può essere risolto se e solo se il constraint digraph


non contiene cicli orientati di lunghezza strettamente positiva,
altrimenti ci si trova di fronte ad una incongruenza nella definizione
del progetto: si sarebbero cioè presi impegni impossibili da rispettare.
Definiamo la condizione per cui un ciclo orientato è di lunghezza
strettamente positiva, osservando la formula per il confronto dei
numeri fuzzy triangolari, descritta dal metodo pessimistico di
Facchinetti:
  a 2  b1  
P( A, B )  max min Low ( A) x , B x   min max  ,0 ,1.
x
  a 2  a1  b 2  b1  

Sia A = (a1,a2,a3) il numero fuzzy triangolare ottenuto sommando i


pesi degli archi appartenenti al ciclo orientato e sia B = (0,0,0) il
numero fuzzy zero, la formula diventa:
  a2  
P( A, B) = max min Low ( A) x , B x   min max  ,0 ,1.
x
  a 2  a1  

Il numero fuzzy A è strettamente maggiore di zero se e solo se


a2 1
 , e cioè se a1  a 2 .
a 2  a1 2

44
Si consideri, ad esempio, un progetto costituito da tre attività, a, b, c,
con le rispettive durate:
FDa = (3,4,6), FDb = (1,2,3), FDc = (0.5,1,2).
Si sa che b può iniziare al più presto 9 giorni dall’inizio di a, c al più
tardi 8 giorni dalla fine di b, e inoltre c deve finire al più tardi entro
16 giorni dall’inizio di a. I tre vincoli generalizzati sono dunque:
SS(a,b)min = (9,9,9), FS(b,c)min = (8,8,8), SF(a,c)max = (16,16,16).
Nella rappresentazione AoN, si ha il ciclo {(a,b), (b,c), (c,a)}, con
pesi:
lab = (9,9,9), lbc = (9,10,11), lca = (-15.5,-15,-14),
mediante l’addizione e il confronto fuzzy otteniamo che è un ciclo
positivo.
Andando a scrivere le corrispondenti relazioni, si ottiene:
FESa + (9,9,9)  FESb
FESb + (9,10,11)  FESc
FESc+(-15.5,-15,-14)  FESa
Sommando le tre disequazioni si ottiene (2.5,4,6)  (0,0,0), ovvero un
assurdo.

Dopo aver calcolato per ogni attività gli EST e LST, procedendo con
l’algoritmo di Bellman-Ford in avanti e indietro, si calcola lo
slittamento totale fuzzy come differenza tra il tempo di inizio al più
tardi e il tempo di inizio al più presto per ogni attività del progetto.
Sfruttando le proprietà presentate in [7] per il calcolo dello slittamento
fuzzy e per la ricerca del cammino critico fuzzy, dopo averle adattate e
riorganizzate per i numeri fuzzy triangolari e per la rappresentazione
AoN, si calcola il CPM fuzzy della rete.

45
Il Makespan sarà dato dal tempo fuzzy dell’EST dell’ultima attività
del progetto.

3.3. DESCRIZIONE DELL’ALGORITMO RISOLUTIVO


Di seguito si riporta la descrizione dell’algoritmo risolutivo del
Makespan in una rete di attività sottoposte a relazioni di precedenza
generalizzate e con tempi di durata rappresentati da numeri fuzzy
triangolari.

NOTAZIONI
 N : Insieme dei nodi del progetto.
 A : Insieme degli archi della rete.
 FDTi : Il tempo di durata fuzzy dell’attività i.
 FESi : Erliest Start Time fuzzy dell’attività i.
 FLFi : Latest Finish Time fuzzy dell’attività i.
 FLSi : Latest Start Time fuzzy dell’attività i.
 Pi : Il cammino i-esimo.
 P : L’insieme di tutti i cammini della rete.
 FTSi : Lo slittamento totale fuzzy dell’attività i.
 FCPM(Pk) : Il tempo totale fuzzy di slittamento del cammino Pk

Le notazioni , ,  F ( F ) rappresentano rispettivamente


l’addizione fuzzy, la sottrazione fuzzy e il confronto fuzzy secondo il
metodo Pessimistico di Facchinetti et al.
Dato un progetto, con le durate delle attività e i time-lag rappresentate
da numeri fuzzy triangolari, da cui è stato derivato il constraint

46
digraph associato analizzando le relazioni di precedenza generalizzate,
la descrizione dell’algoritmo del cammino critico fuzzy è la seguente:

1) Inizializzazione
Porre FES1 = (0,0,0), FESi = (-,-,-),  i =2,…,n
2) Ordinare gli archi {e1,…,em}.
3) Calcolare FESi , i=2,…,n
for k = 1,…,m
if ek = (i, j) è tale che FESj  F FESi  lij
FESj = FESi  lij
end
end
4) Porre FLSn = FESn , FLSi = (+,+,+),  i =1,…,n-1
5) Calcolare FLSi , i = 1,…,n-1
for k = 1,…,m
if ek = (i, j) è tale che FLSi  F FLSj  lij
FLSi = FESj  lij
end
end
6) Calcolare FTSi , i = 1,…,n-1
FTSi = FLSi  FESi
7) Trovare tutti i possibili cammini sulla rete del progetto e
calcolare FCPM(Pk):
FCPM(Pk) =  FTSi, Pk  P
iPk
8) Trovare il cammino critico fuzzy PC:
FCPM(PC) = min FCPM Pi  | Pi  P

47
CAPITOLO 4
ESEMPIO DI
APPLICAZIONE
DELL’ALGORITMO

48
4.1. APPLICAZIONE DELL’ALGORITMO RISOLUTIVO
Si consideri un progetto costituito da quattro attività. I tempi di durata
di queste attività non sono certi e dopo un’analisi dei dati storici si è
deciso di rappresentarle per mezzo di numeri fuzzy triangolari,
attribuendo i seguenti valori:
FDT1= (0,0,0), FDT2= (3,4,5), FDT3= (2,3,5), FDT4= (3,4,6).
L’attività 2 può iniziare al più presto 2 giorni dopo la fine dell’attività
1 e può iniziare al più presto 5 giorni dall’inizio dell’attività 3; la
stessa attività 3 può iniziare al più presto 4 giorni dalla fine
dell’attività 1 e può iniziare al più tardi 6 giorni dalla fine dell’attività
1. L’attività 4 deve iniziare non appena terminano le attività 2 e 3.
Si determinino il Makespan del progetto e il cammino critico della
rete.

I vincoli delle relazioni di precedenza generalizzati sono dunque:


FSmin(1,2) = (2,2,2), FSmax(1,3) = (6,6,6), FSmin(1,3) = (4,4,4),
SSmin(3,2) = (5,5,5), FSmin(2,4) = (0,0,0), FSmin(3,4) = (0,0,0).
Da essi si costruisce la rete del progetto:

2 FSmin=(0,0,0)
FSmin=(2,2,2)
SSmin=(5,5,5)
1 4
FSmax=(6,6,6
)
FSmin=(0,0,0)
FSmin=(4,4,4) 3

Fig. 4.1.a): Rete di progetto.

49
Dall’analisi delle relazioni di precedenza generalizzate, si ricavano i
pesi degli archi, lij, e si costruisce il constraint digraph:

2
(2,2,2) (3,4,5)
(5,5,5)
1 4
(-6,-6,-6)
(2,3,5)
(4,4,4)
3

Fig. 4.1.b): Constraint digraph

Si inizializzano gli istanti di inizio e si ordinano gli archi:


FES1 = (0,0,0), FESi= (-∞,-∞,-∞)  i =2,…,4
e1=(1,2), e2=(1,3), e3=(2,4), e4=(3,1), e5=(3,2), e6=(3,4).
Si calcolano gli FESi :
Iterazione 1
 k=1
FES2  F FES1  l12
(-∞,-∞,-∞)  F (0,0,0)  (2,2,2)
(-∞,-∞,-∞)  F (2,2,2)  FES2 = (2,2,2)
 k=2
FES3  F FES1  l13
(-∞,-∞,-∞)  F (0,0,0)  (4,4,4)
(-∞,-∞,-∞)  F (4,4,4)  FES3 = (4,4,4)
 k=3
FES4  F FES2  l24

50
(-∞,-∞,-∞)  F (2,2,2)  (3,4,5)
(-∞,-∞,-∞)  F (5,6,7)  FES4 = (5,6,7)
 k=4
FES1  F FES3  l31
(0,0,0)  F (4,4,4)  (-6,-6,-6)
(0,0,0)  F (-2,-2,-2)  non si aggiorna
 k=5
FES2  F FES3  l32
(2,2,2)  F (4,4,4)  (5,5,5)
(2,2,2)  F (9,9,9)  FES2 = (9,9,9)
 k=6
FES4  F FES3  l34
(5,6,7)  F (4,4,4)  (2,3,5)
(-∞,-∞,-∞)  F (6,7,9)  FES4 = (6,7,9)

Iterazione 2
 k=1
Non si aggiorna
 k=2
Non si aggiorna
 k=3
FES4  F FES2  l24
(6,7,9)  F (9,9,9)  (3,4,5)
(6,7,9)  F (12,13,14)  FES4 = (12,13,14)
Nessuno degli altri valori viene aggiornato
Si prosegue con l’algoritmo procedendo all’indietro.

51
Inizializzazione:
FLS4 = (12,13,14) , FLSi = (+,+,+),  i =1,…,3
Iterazione 1
 k=1
FLS1  F FLS2  l12
(+,+,+)  F (+,+,+)  (2,2,2)  non si aggiorna
 k=2
Non si aggiorna
 k=3
FLS2  F FLS4  l24
(+,+,+)  F (12,13,14)  (3,4,5)
(+,+,+)  F (7,9,11)  FLS2 = (7,9,11)
 k=4
Non si aggiorna
 k=5
FLS3  F FLS2  l32
(+,+,+)  F (7,9,11)  (5,5,5)
(+,+,+)  F (2,4,6)  FLS3 = (2,4,6)
 k=6
FLS3  F FLS4  l34
(2,4,6)  F (12,13,14)  (2,3,5)
(2,4,6)  F (7,10,12)  non si aggiorna

52
Iterazione 2
 k=1
FLS1  F FLS2  l12
(+,+,+)  F (7,9,11)  (2,2,2)
(+,+,+)  F (5,7,9)  FLS1 = (5,7,9)
 k=2
FLS1  F FLS3  l13
(5,7,9)  F (2,4,6)  (4,4,4)
(5,7,9)  F (-2,0,2)  FLS1 = (-2,0,2)
 k=3
Non si aggiorna
 k=4
Non si aggiorna
 k=5
Non si aggiorna
 k=6
Non si aggiorna

Le iterazioni terminano e si passa al calcolo dello slittamento totale


fuzzy per ogni attività del progetto.
1. FTS1 = FLS1  FES1 = (-2,0,2)  (0,0,0) = (-2,0,2)
2. FTS2 = FLS2  FES2 = (7,9,11)  (9,9,9) = (-2,0,2)
3. FTS3 = FLS3  FES3 = (2,4,6)  (4,4,4) = (-2,0,2)
4. FTS4 = FLS4  FES4 = (12,13,14)  (12,13,14) = (0,0,0)

Si individuano tutti i possibili cammini della rete si calcola il tempo


totale fuzzy di slittamento per ogni cammino.

53
P = {(1,2,4), (1,3,2,4), (1,3,4)}
1. P1 = (1,2,4)
FCPM (P1) = FTS1  FTS2  FTS4 = (-2,0,2)  (-2,0,2) 
(0,0,0) = (-4,0,4)
2. P2 = (1,3,2,4)
FCPM (P2) = FTS1  FTS3  FTS2  FTS4 = (-6,0,6)
3. P3 = (1,3,4)
FCPM (P3) = FTS1  FTS3  FTS4 = (-4,0,4)

Si trova il cammino critico fuzzy nella rete di progetto.


FCPM (PC) = min {FCPM(P1), FCPM(P2), FCPM(P3)} =
= min {(-4,0,4), (-6,0,6), (-4,0,4)} = (-6,0,6)
Il cammino critico fuzzy è P3 e il tempo di completamento del
progetto è approssimativamente 13, da FES 4 =(12,13,14).

54
CONCLUSIONI
Con il lavoro svolto si è perseguito l’obiettivo di sviluppare un
metodo per la gestione e l’ottimizzazione dei progetti, che potesse
costituire una valida alternativa alle metodologie classiche attualmente
in uso.
L’algoritmo per il calcolo del Makespan, basato sulla logica fuzzy,
può essere applicato da coloro che si apprestano ad analizzare un
progetto particolare, ossia dove siano presenti tra le varie attività
vincoli di precedenza più generali, che necessitano di uno studio più
approfondito e impegnativo, a fronte del vantaggio di flessibilità e di
approssimazione alla realtà che offrono.
La fase di messa a punto e di applicazione dell’algoritmo ad un
esempio di progetto è stata eseguita utilizzando i dati di una rete di
attività con relazioni di precedenza generalizzate, le cui durate sono
certe e deterministiche.
Risolvendo tale rete con l’applicazione dell’algoritmo di Bellman-
Ford modificato, si è giunti a risultati che se confrontati con quelli
ottenuti dall’algoritmo fuzzy proposto, si può facilmente verificare
come quest’ultimi risultano essere attendibili sia per quel che riguarda
il Makespan della rete del progetto e sia per il cammino critico
individuato.
In particolare, il valore medio del numero fuzzy triangolare
rappresentante il Makespan ottenuto con l’algoritmo fuzzy,
corrisponde al valore del tempo di completamento minimo ottenuto
dall’applicazione dell’algoritmo classico.
Questa equivalenza nei risultati deriva dal fatto che i time-lag delle
relazioni di precedenze generalizzate tra le attività, nell’applicazione
dell’algoritmo esposta in questo lavoro, sono stati rappresentati da un

55
numero fuzzy triangolare avendo i valori di inf, mean e sup uguali tra
loro, costituendo in pratica un numero crisp.
Questa scelta è stata fatta intenzionalmente per poter confrontare i
risultati ottenuti dai due algoritmi e le rispettive equivalenze.
La logica fuzzy non ha la precisione caratteristica degli strumenti
analitici, e non risulta perciò conveniente se il modello matematico di
un processo è noto con precisione e sicurezza. Quando i fattori che
generano incertezza aumentano, amplificando la complessità del
problema, i modelli analitici iniziano a mostrare i loro limiti e i
sistemi fuzzy si rivelano molto spesso più adatti. In questi casi, le
capacità di adattamento e di semplificazione dei problemi, tipiche
della logica fuzzy, divengono predominanti.
Quindi, se le caratteristiche e i dati del progetto lo richiedono, i valori
che rappresentano gli istanti di tempo delle relazioni di precedenza
generali possono essere costituiti da veri e propri numeri fuzzy
triangolari, con i valori di inf, mean e sup diversi tra loro e l’algoritmo
per il calcolo del Makespan fuzzy può essere applicato senza
problemi.

56
BIBLIOGRAFIA

[1] Chanas S., Zielinski P., Critical path analysis in the network with fuzzy
activity time, Fuzzy Sets and Systems 122 (2001) 195-204.
[2] Nasution S.H., Fuzzy critical path method, IEEE Trans. Systems Man
Cybernet 24 (1994) 48-57.
[3] Elmaghraby S.E., Kamburowski J., The analysis of activity networks under
generalized precedence relations, Management Science 38 (1992)1245-1263.
[4] Facchinetti G., Ricci R., Muzzioli S., Note on Ranking Fuzzy Triangular
Numbers, International Journal of Intelligent Systems 13 (1998) 613-622.
[5] Zielinski P., On computing the latest starting times and floats of activities in a
network with imprecise durations, Fuzzy Sets and Systems 150 (2005) 53-76
[6] Fortin J., Zielinski P., Dubois D., Fargier H., Minimizing a Makespan Under
Uncertainty, International Joint Conferences on Artificial Intelligence, 2005.
[7] Liang G.S., Han T.C., Fuzzy Critical Path for Project Network, Information
and Management Sciences, Vol. 15, No 4 (2004) 29-40.
[8] Amato R., Chiappi R., Pianificazione e controllo dei progetti, Angeli, 1990.
[9] Nepi A., Introduzione al Project Management, Guerini e Associati, 1997
[10] Mannino C., Ottimizzazione nella gestione dei progetti, Presentazioni
Power Point, 2006.
[11] Damiani M., Lo Valvo P.P., Pipitone I., Le dimensioni de Project
Management:Organizzazione, metodi, relazioni, Edizioni Il sole 24 ore,2004.
[12] Cammarata S., Sistemi a logica fuzzy. Come rendere intelligenti le macchine,
Etaslibri, 1997 Milano.
[13] Kosko B., Il fuzzy pensiero. Teoria e applicazioni della logica fuzzy, Baldini
e Castoldi, 2002.
[14] Sangalli A., L’importanza di essere fuzzy. Matematica e computer, Ballati
Boringheri, 2000 Torino.
[15] Pizzaleo A.G., Fuzzy logic. Come insegnare alle macchine a ragionare,
Castelvecchi, 2000 Roma.

57

Potrebbero piacerti anche