POLITECNICO DI BARI
FACOLTA’ DI INGEGNERIA
CORSO DI LAUREA IN INGEGNERIA CIVILE
DIPARTIMENTO DI INGEGNERIA DELLE ACQUE
_________________________________________________________________________________________
TESI DI LAUREA IN
MISURE E CONTROLLI IDRAULICI
CALCOLO
DELLE RETI IDRAULICHE IN PRESSIONE
MEDIANTE UNA TECNICA MISTA
ALGORITMI GENETICI / METODO
GAUSS-NEWTON
Relatore:
Chiar.mo Prof. Ing. MICHELE MASTRORILLI
Correlatore:
Dott. Ing. ORAZIO GIUSTOLISI
Laureando:
ENRICO MASINI
________________________________________________________________
ANNO ACCADEMICO 1998-99
INDICE
PREMESSA
pag.3
Capitolo I – Reti di distribuzione: il problema ingegneristico
Premessa
pag.6
1.1 Ipotesi ingegneristiche
pag.6
1.2 Definizione del comprensorio
pag.9
1.3 Ipotesi sul tracciato della rete
pag.10
1.4 Profondità e modalità di posa in opera della condotta
pag.11
1.5 Studio demografico e urbanistico del comprensorio
pag.12
1.6 Tracciamento planimetrico della rete
pag.12
1.7 Verifiche di pressione
pag.14
1.8 Scelta dei diametri
pag.16
1.9 Scabrezza di progetto
pag.17
Capitolo II – Reti di distribuzione: l’impostazione analitica
Premessa
pag.18
2.1 Definizione delle variabili analitiche
pag.18
2.2 Determinazione del tracciato planimetrico
pag.19
2.3 Determinazione del tracciato altimetrico
pag.24
2.4 Determinazione delle portate distribuite uniformemente lungo
ogni tronco
pag.25
2.5 Verifiche di pressione
pag.27
2.6 Vincoli per i diametri
pag.29
Capitolo III – Il sistema matriciale di equazioni delle reti in pressione
Premessa
pag.31
3.1 Equazioni fondamentali delle reti in pressione
pag.31
3.2 L’impostazione matriciale
pag.33
3.2.1 Matrice di connessione dei tronchi
pag.33
3.2.2 Equazioni di continuità dei nodi
pag.35
3.2.3 Le due forme delle equazioni del moto lungo i lati
pag.36
3.2.4 Equazioni del moto riferite alle maglie. Matrice di
connessione maglie-tronchi
pag.38
3.2.5 Sistema completo delle equazioni della rete
pag.39
3.2.6 Sistema ridotto nelle portate incognite
pag.41
3.2.7 Sistema ridotto nelle quote piezometriche incognite
pag.41
Capitolo IV – Sistemi non lineari di equazioni e problemi di
ottimizzazione non vincolata
Premessa
pag.43
4.1 Sistemi non lineari di equazioni trasformati in problemi di
ottimizzazione
pag.44
4.2 Ipersuperficie d’errore
pag.50
4.3 Algoritmi risolutori di problemi di ottimizzazione non
vincolata
pag.52
Capitolo V – Algoritmi genetici
Premessa
pag.56
5.1 Cenni sulla Teoria dell’Evoluzione
pag.56
5.2 Introduzione agli algoritmi genetici
pag.58
5.3 Come funzionano gli algoritmi genetici
pag.59
5.4 Alcune definizioni preliminari
pag.62
5.5 Il problema della codifica e della rappresentazione
pag.63
5.5.1 Rappresentazione binaria
pag.63
5.5.2 Rappresentazione floating-point
pag.66
5.6 Funzione di adattività
pag.69
5.7 Selezione
pag.69
5.8 Riproduzione
pag.74
5.8.1 Operatori genetici nella rappresentazione binaria
pag.75
5.8.1.1 Crossover binario
pag.75
5.8.1.2 Mutazione binaria
pag.77
5.8.2 Operatori genetici nella rappresentazione floating-point
5.8.2.1 Crossover floating-point
pag.78
pag.78
5.8.2.2 Mutazione floating-point
5.9 Parametri degli algoritmi genetici
Conclusione
pag.80
pag.82
pag.86
Capitolo VI – Metodi classici di ottimizzazione non vincolata:
algoritmi di Newton, quasi-Newton e Gauss-Newton
Premessa
pag.88
6.1 Metodi classici di ottimizzazione
pag.89
6.2 Metodo di Cauchy (o metodo “steepest-descent”)
pag.90
6.3 Metodo di Newton
pag.94
6.4 Metodi quasi-Newton
pag.98
6.4.1 Metodo di Broyden, Fletcher, Goldfarb
e Shanno (BFGS)
6.4.2 Metodo di Davidon, Fletcher e Powell (DFP)
6.5 Ricerca di linea
pag.99
pag.102
pag.104
6.5.1 Interpolazione quadratica
pag.105
6.5.2 Interpolazione cubica
pag.106
6.6 Problema di ottimizzazione dei “minimi quadrati”
pag.107
6.6.1 Metodo di Gauss-Newton
pag.111
6.6.2 Metodo Levenberg-Marquadt
pag.112
6.7 Metodo di Newton-Raphson
Conclusione
pag.114
pag.116
Capitolo VII – Implementazione di una tecnica mista:
algoritmi genetici / metodo di Gauss-Newton
Premessa
pag.117
7.1 Scelta del linguaggio di implementazione: Matlab ver.5.3
pag.119
7.2 Descrizione del programma
pag.120
7.2.1 Implementazione degli algoritmi genetici: scelta
dei parametri
7.2.2 Implementazione del metodo di Gauss-Newton
pag.120
pag.127
7.3 Determinazione delle portate concentrate equivalenti
alle portate distribuite mediante iterazione del metodo
di Gauss-Newton
pag.129
7.4 Calcolo delle perdite di carico con le formule pratiche
o con la formula di Colebrook
7.5 Ulteriori considerazioni sulla scelta del punto iniziale
pag.141
pag.146
7.6 Scelta di alcune reti “test” e raffronto dei risultati col
metodo delle VPH
pag.148
7.7 Convergenza degli algoritmi genetici applicati alle reti
“test” e problema dello “slow -finish”
Riferimenti bibliografici
pag.155
pag.161
Appendici
pag.163
Appendice A – Listato delle funzioni principali del programma
Appendice B – Caratteristiche delle reti usate per “testare” il programma
Appendice C – Risultati ottenuti applicando il programma ed il metodo VPH
alle reti “test”
PREMESSA
Premesse e finalità della tesi
Lo scopo del presente lavoro è quello di porre in evidenza come la progettazione
delle reti idrauliche in pressione con l’ausilio dell’elaboratore elettronico sia fortemente
condizionata dal problema numerico.
Difatti lo studio ingegneristico della rete, ovvero la determinazione delle condizioni
al contorno che la rete deve rispettare, sfocia quasi sempre nella risoluzione di un
sistema matematico non lineare condizionato.
Diventa allora quanto mai importante focalizzare l’attenzione, a livello di ricerca,
non
solo sull’impostazione matematica del problema ingegneristico, cioè sulla
definizione del sistema di equazioni che governano la rete, ma anche sugli algoritmi
risolutori del sistema stesso.
A questi ultimi è legato il tempo di elaborazione ma soprattutto la possibilità stessa
di risolvere il problema.
I sistemi non lineari presentano infatti più soluzioni “locali” per cui risulta spesso
difficile, relativamente agli algoritmi risolutori, determinare l’unica soluzione “globale”
del sistema.
In effetti le metodologie risolutive più frequentemente adoperate restituiscono una
soluzione finale del sistema in funzione di un punto iniziale assegnato.
La scelta del punto iniziale è quindi determinante al fine di garantire la “globalità”
3
della soluzione.
Si propone quindi, per ovviare alle suddette difficoltà, l’utilizzo degli “algoritmi
genetici” per la risoluzione di tali sistemi di equazioni non lineari.
Si tratta di una metodologia sviluppata negli anni ’80 per risolvere svariati
problemi matematici caratterizzati da una spiccata non linearità, in grado di
prescindere totalmente dall’assegnazione di un punto iniziale di ricerca.
In particolare, dopo aver esaminato nei primi due capitoli il problema generale
della progettazione delle reti idrauliche in pressione, si concentra l’attenzione, nel
resto di questo lavoro, sul problema specifico della verifica delle reti in pressione,
evidenziando come il sistema di equazioni su cui si basa la verifica della rete sia
anch’essa affetta dalle problematiche accennate di non linearità con le annesse
complicanze numeriche.
Si applicano allora gli algoritmi genetici alla risoluzione del problema di verifica
delle reti idrauliche in pressione, dall’implementazione dei quali emerge tuttavia un
evidente rallentamento progressivo della velocità di convergenza a fronte, comunque,
dei vantaggi legati alla capacità di determinare la soluzione “globale”.
Si decide pertanto di optare per una tecnica mista algoritmi genetici/metodo di
Gauss-Newton in modo da poter usufruire allo stesso tempo dei vantaggi degli algoritmi
genetici, capaci di determinare soluzioni “globali”, e dei vantaggi dei tradizionali
metodi di Newton, notoriamente molto efficienti.
Nell’algoritmo si sono implementate, inoltre, la possibilità di erogare portate
uniformemente distribuite lungo i tronchi e la possibilità di calcolare le perdite di
4
carico con la formula di Colebrook allargando il campo d’investigazione del moto
anche al regime turbolento di transizione.
Il programma è infine testato su alcune reti, già risolte con altri metodi
“accreditati”, per confrontare i risultati.
5
CAPITOLO I
Reti di distribuzione: il problema ingegneristico
Premessa
Si premette, innanzitutto, che la rete di distribuzione non è che una delle parti che
compongono un acquedotto di acqua potabile.
L’acquedotto è costituito schematicamente da un’opera di presa, una condotta di
adduzione esterna, un serbatoio, una rete di distribuzione interna e impianti privati di
consegna.
In questa tesi, come da premessa, ci si occuperà solo della rete di distribuzione
dell’acquedotto.
1.1 Ipotesi ingegneristiche
La prima ipotesi ingegneristica sulla rete di distribuzione è che sia una rete in
pressione.
Tale è ipotesi ha le seguenti motivazioni:
1) consentire la regolazione da valle delle portate ovvero far sì che le portate che
attraversano la rete siano funzione univoca della richiesta d’acqua istantanea delle
utenze (cioè del numero di rubinetti contemporaneamente in un certo istante),
6
regolazione altrimenti attuabile solo in regime di corrente lenta.
2) consentire una maggiore flessibilità per il tracciato altimetrico in modo da poter
seguire il profilo delle strade attraversate, senza necessità di ulteriori scavi o rinterri con
i relativi costi, quando non risulti addirittura impossibile servire alcuni tratti della rete
con condotte a pelo libero per motivi altimetrici (eventualità che si verifica in special
modo in aree poco pianeggianti).
3) assicurare la potabilità dell’acqua in quanto l’acqua del terreno o l’acqua delle
eventuali condotte fognarie, essendo a pressione inferiore, non può infiltrarsi nelle
tubazioni.
4) proteggere la rete da manomissioni e attacchi esterni (per esempio avvelenamenti) in
quanto eventuali immissioni dovrebbero vincere la pressione interna dell’acqua
5) rendere più agevoli e snelle le opere di presa che non sarebbero più condizionate dai
livelli idrici della condotta.
Tale ipotesi consente già di definire il profilo altimetrico della rete in quanto esso
può ritenersi quasi sempre coincidente con il profilo altimetrico del terreno attraversato a
meno di una grandezza costante che è rappresentata dalla profondità di posa in opera
delle condotte.
La seconda ipotesi riguarda invece il tracciato planimetrico della rete che verrà per
lo più sovrapposto al tracciato della rete stradale già esistente per le seguenti ragioni:
1) evitare l’attraversamento di proprietà private (suoli o eventuali fabbricati) con i
conseguenti oneri di espropriazione fortemente incidenti sul costo totale dell’opera
7
2) facilitare le operazioni di scavo e posa in opera essendo la strada il luogo più
facilmente raggiungibile dai mezzi di scavo e di trasporto delle tubazioni.
3) agevolare l’allacciamento alla rete da parte delle utenze private grazie alla facile
esecuzione degli scavi
sul bordo stradale, nonché per le distanze modeste che
usualmente corrono dal punto di allacciamento all’erogazione vera e propria potendo
la rete anche seguire strade secondarie (reti di distribuzione III ordine).
Per quanto concerne la tipologia di rete si avranno due possibilità: reti ramificate e
reti a maglie chiuse o magliate.
Nelle reti ramificate, ogniqualvolta si verifichi un’interruzione per guasto o per
manutenzione in un punto qualsiasi della rete, resta senza fornitura d’acqua il tronco di
rete a valle del punto stesso con i gravi disagi che ciò comporta.
A questo grave inconveniente si può porre rimedio adottando il secondo tipo di reti:
a maglie chiuse.
La maglia chiusa permette all’acqua di raggiungere qualsiasi punto della rete
mediante più percorsi e quindi by-passando il punto di interruzione.
Difatti ciascun tronco della rete può essere percorso in due sensi creando così una
molteplicità di possibili percorsi ed elevando
consequenzialmente l’elasticità e
l’affidabilità del sistema.
L’ultima delle ipotesi sulla rete di distribuzione concerne l’introduzione di una
nuova grandezza: la portata distribuita uniformemente lungo il percorso.
8
Essa è chiaramente un’astrazione teorica in quanto nella realtà le portate
consegnate ai singoli utenti della rete sono prelievi concentrati
nei punti di
allacciamento.
Per l’enorme difficoltà di poter prevedere a priori sia l’esatta localizzazione dei
punti di allacciamento sia le rispettive portate di consegna, si è introdotta la portata
uniformemente distribuita che si calcola assommando le singole portate consegnate in
tratto di condotta e quindi ipotizzando di distribuire tale portata in modo uniforme lungo
lo stesso tratto di condotta.
L’approssimazione che si compie nell’ipotizzare questo tipo di distribuzione è
ovviamente duplice.
In primo luogo, infatti, si approssima una serie discreta di distribuzioni con una
distribuzione continua. In secondo luogo si ipotizza che tale distribuzione continua sia
anche costante e pari alla distribuzione media delle distribuzioni puntuali nel tratto
corrispondente.
1.2 Definizione del comprensorio
Il passo successivo, nell’ambito delle ipotesi generali fin qui schematicamente
enunciate, è la definizione del comprensorio che la rete dovrà servire.
Si ipotizza in questa sede (al fine di poter meglio schematizzare la progettazione
dell’acquedotto) che si sia già stabilito, al momento della progettazione della rete, il
numero e l’ubicazione dei serbatoi, e quindi non si entrerà nel merito della scelta, né del
numero, né dell’ubicazione degli stessi, supponendo già risolta tale questione.
9
1.3 Ipotesi sul tracciato della rete
Il passo successivo è il tracciamento della rete. Questa la si suppone suddivisa
gerarchicamente su più livelli o ordini.
La rete di I ordine corrisponde alle condotte di distribuzione principale del
comprensorio.
E’ questa la porzione di rete che segue le strade principali e che trasporta i più
elevati volumi d’acqua; viene usualmente progettata a maglie chiuse in quanto ad essa
si relega il compito di consegnare l’acqua alle reti di II e III ordine collegate in cascata
(la rete magliata assicura maggiormente la consegna delle portate in caso di guasti
localizzati)
La rete di II e III ordine hanno invece, usualmente, una struttura ramificata che
segue le strade di importanza minore, per giungere il più vicino possibile alle utenze
finali dell’acquedotto.
Si opta normalmente per una struttura ramificata per ovvi motivi di costo.
Difatti, eventuali rotture creerebbero disagi di entità molto più modesta (il bacino di
utenza a valle della rottura sarebbe alquanto limitato) e a cui sarebbe molto più semplice
porre rimedio (si tratta infatti di tubazioni di modesto diametro).
Da questo momento quindi si rivolgerà l’attenzione sulla rete principale (cioè di I
ordine) in quanto è per essa che si vengono a creare i maggiori problemi legati alla
progettazione essendo la sua struttura a maglie chiuse; mentre non crea particolari
difficoltà la progettazione delle rete secondaria e terziaria trattandosi, come appena
detto, di una struttura ramificata.
10
1.4 Profondità e modalità di posa in opera della condotta
Terminata l’enumerazione delle ipotesi principali, il passo successivo consiste nello
stabilire il tracciato planimetrico e altimetrico della condotta.
Restando fedeli alle ipotesi fatte sinora, si fanno passare le condotte principali
dell’acquedotto lungo le arterie stradali principali della località in esame in modo che
esse formino un reticolo composto di maglie chiuse.
La profondità di scavo deriva invece da un’attenta analisi costi-benefici che metta a
confronto il costo dello scavo con i vantaggi derivanti da una maggiore profondità di
posa in opera quali: un miglior isolamento termico dell’acqua, una maggiore protezione
delle tubazioni dai sovraccarichi stradali e dalle possibili manomissioni esterne.
Inoltre la profondità sarà legata alla presenza concomitante di una fogna (nera).
Qualora sulla stessa strada si debba far passare sia la condotta dell’acquedotto sia
quella della fogna le norme raccomandano di porle in opera in due scavi diversi e
distanti tra loro ponendo la condotta della fogna ad una profondità maggiore rispetto
all’altra di modo che eventuali perdite della fogna (a pelo libero) non raggiungano
l’acquedotto.
Ove ciò non sia possibile, per motivi di spazio e di costo, è consentita la posa in
opera nello stesso scavo a condizione che la fogna si trovi sempre a quota inferiore
rispetto all’acquedotto e che le due condotte siano poste ad una certa distanza di
sicurezza.
11
1.5 Studio demografico e urbanistico del comprensorio
Preliminarmente si effettua un attento studio demografico ed urbanistico della
località per poter determinare la popolazione residente, turistica e pendolare nonché
l’effettiva dislocazione sul territorio, nel periodo di vita dell’acquedotto.
Occorre conoscere la distribuzione degli abitanti di ciascun isolato; ove tali dati
non siano direttamente accessibili o esistenti, e stante l’importanza dell’opera, un studio
in tal senso può essere commissionato a parte.
Come ultima possibilità si possono utilizzare gli indici di fabbricabilità delle
singole zone del piano regolatore come stimatori, per quanto approssimati, della
popolazione residente.
Quindi si deve stabilire la vita dell’opera che si va a progettare. Si ipotizza che un
acquedotto abbia una vita media di 50 anni.
Occorre pertanto fare delle previsioni sia demografiche, al fine di determinare la
popolazione e quindi le portate da distribuire fino al termine della vita dell’opera, sia
urbanistiche, per poter stabilire come la popolazione futura sarà distribuita nelle aree di
espansione (a tal uopo è necessario consultare il piano regolatore della località).
1.6 Tracciato planimetrico della rete
Una volta nota l’effettiva distribuzione della domanda d’acqua sul territorio,
all’inizio ed al termine della vita dell’opera, occorre stabilire l’effettivo tracciato
planimetrico della rete. Questo passo della progettazione è probabilmente il più delicato.
Si premette che una rete magliata si compone di maglie chiuse, di nodi e di tronchi.
12
Un nodo è un punto di confluenza di più condotte della rete; un tronco è un tratto di
rete che unisce due nodi adiacenti; le maglie sono costituite da più tronchi consecutivi
che formano un percorso chiuso.
Le maglie della rete andranno tracciate sul reticolo stradale avendo cura che tutti i
punti di consegna dell’acquedotto siano coperti dalle maglie ovvero che le distanze tra i
punti e la rete principale (da coprire mediante la rete di II e III ordine) non siano
eccessive.
Distanze elevate comporterebbero perdite di carico eccessive rispetto alla rete
principale rischiando di consegnare l’acqua con pressione troppo bassa o non riuscire a
consegnarla affatto.
La rete dovrebbe essere pertanto distribuita in modo uniforme sul territorio con una
densità del reticolo direttamente proporzionale al numero di utenze da servire nella
stessa zona ed indipendente dalle portate.
Queste ultime condizionano i diametri finali delle condotte mentre il numero di
allacciamenti per unità di area (sempre che essi siano distribuiti in modo all’incirca
uniforme nell’area in questione) condiziona la densità del reticolo.
Sarebbe inoltre opportuno che, trattandosi della rete principale (con portate e quindi
diametri rilevanti), essa percorra le strade principali sia per ragioni di spazio sia perché
le strade principali seguono usualmente percorsi poco tortuosi e sono ben collegate tra
loro.
Lo spazio è necessario per interrare i maggiori diametri, i pezzi speciali di
intersezione, intercettazione e derivazione per le reti di importanza inferiore, poiché gli
13
allacciamenti alla rete degli utenti che si affacciano su tali strade non avvengono sulla
rete principale (per le difficoltà e gli inconvenienti che ciò comporterebbe), ma sulle
condotte della rete secondaria poste parallelamente alle condotte principali sulle stesse
strade e connesse ad esse solo in alcuni punti.
La strada deve poter quindi alloggiare entrambe le tubazioni più l’eventuale rete
fognaria. Esiste quindi un limite massimo per i diametri delle condotte connesso
all’ampiezza della strada, a sua volta funzione dell’importanza della stessa.
Per quanto concerne la dimensione ed il numero di maglie della rete principale si
evince che sarebbe opportuno, per motivi di affidabilità, progettare una rete con maglie
molto fitte (ossia piccole e numerose) assicurando a quanti più punti è possibile una
fornitura d’acqua senza interruzioni per guasti o manutenzioni.
Ciò evidentemente si scontra con l’esigenza di contenere i costi in quanto una rete
fittamente magliata è altamente ridondante e questo implica ovviamente costi maggiori
dovuti ai tronchi di tubazione aggiunti alla rete ramificata, cioè a maglie aperte, per
“chiudere” le maglie.
Come accennato in precedenza, le necessità economiche implicano che le maglie
siano abbastanza larghe (la magliatura si opera solo al livello di rete principale) e che il
resto della rete (condotte di secondo e terzo ordine) resti conformata ad albero.
1.7 Verifiche di pressione
A questo punto si introduce il problema della pressione dell’acqua nell’acquedotto.
Innanzitutto occorre verificare, per tutta la rete, non solo che le piezometriche non
14
taglino mai le condotte, ma anche che esse non scendano mai sotto i 5 metri sopra il
piano stradale al fine di garantire che la condotta sia sempre in pressione e scongiurare
così la formazione di sacche d’aria nelle condotte e l’eventuale ingresso di sostanze
inquinanti dall’esterno.
Il progettista deve inoltre preoccuparsi che le portate consegnate all’utenza abbiano
valori di pressione soddisfacenti, ove per “valore soddisfacente” non si intende uno
specifico valore bensì un range entro cui la pressione possa variare.
Gli estremi del range dipendono dal tipo di utenza cioè dall’uso che si deve fare
dell’acqua, sebbene particolari esigenze di pressione siano da considerarsi a carico
dell’utente e non del fornitore nel senso che sarà cura dell’utente stesso, mediante
impianto privato di sollevamento, ottenere la pressione desiderata.
E’ il caso, ad esempio, delle elevate pressioni necessarie per un grattacielo o per un
impianto di irrigazione a pioggia (sempre che la rete in esame sia adibita anche ad uso
agricolo).
Il progettista dovrà curarsi invece dei casi più comuni, quali la consegna dell’acqua
a condomini di pochi piani.
Difatti, per i centri abitati, si richiede che la pressione di consegna, nelle ore di
punta, non scenda sotto i 5 metri dal rubinetto più alto del fabbricato idraulicamente più
distante dal serbatoio, al fine di poter assicurare acqua con sufficiente pressione anche
all’ultimo piano di tale edificio (per quanto riguarda l’altezza del fabbricato si fa
riferimento di solito alla tipologia media dei fabbricati del centro abitato).
Si richiede inoltre che nelle ore notturne, di minimo prelievo, le pressioni di
15
consegna non superino i 70 metri dal livello stradale onde non provocare danni agli
apparecchi di erogazione (ad esempio la rottura delle guarnizioni) posti nei piani più
bassi dei fabbricati.
Infine, sempre nei centri abitati, è richiesta dai vigili del fuoco la verifica sulle
bocchette antincendio.
Si richiede che concomitantemente al prelievo normale di acqua (prelievo medio
nel giorno di massimo consumo)
la pressione sulla bocchetta antincendio
idraulicamente più lontana sia di almeno 20 metri sul livello stradale.
1.8 Scelta dei diametri
Un ulteriore vincolo imposto alla progettazione riguarda la scelta dei diametri e
degli spessori delle tubazioni. E’ ovvio che le aziende produttrici non possono fornire
tutti i diametri possibili.
Del range di diametri compatibile con il materiale e con le sollecitazioni a cui la
tubazione andrà sottoposta, saranno disponibili al progettista solo i diametri
fondamentali:
usualmente i valori disponibili sono multipli di 100,50,25 mm e
raramente di 10 mm (le graduazioni inferiori valgono ovviamente solo per i diametri
minori).
Il progettista è quindi vincolato ad impiegare per le tubazioni della rete solo i
diametri commerciali al momento reperibili sul mercato.
Inoltre, per i motivi accennati nel paragrafo 1.6, il diametro massimo utilizzabile
per ogni tronco di condotta è legato alla larghezza della strada su cui si vuole far passare
16
la tubazione.
1.9 Scabrezza di progetto
Resta infine da considerare la problematica relativa alla scabrezza delle condotte. Il
coefficiente di scabrezza fornito dalla ditta è riferito alla tubazione nuova in quanto, con
l’usura, la scabrezza aumenta.
Ciò complica ovviamente la progettazione in quanto vincola la rete a dover
soddisfare tutte le condizioni di vincolo per la pressione, che si sono poc’anzi elencate,
durante tutta la vita dell’opera e quindi sia nella condizione di “tubi nuovi” sia in quella
di “tubi usati”.
17
CAPITOLO II
Reti di distribuzione: l’impostazione analitica
Premessa
Nel presente capitolo verrà esaminato il problema della rete di distribuzione dal
punto di vista analitico ossia si proverà a tradurre in forma analitica i concetti espressi in
modo discorsivo nel precedente capitolo.
2.1 Definizione delle variabili analitiche
Trattandosi di rete in pressione le grandezze da definire analiticamente saranno
innanzitutto le quote piezometriche H nella rete e nei serbatoi (le prime incognite e le
ultime note).
E’ inoltre indispensabile conoscere le quote altimetriche h assolute oppure relative
ad un punto noto (ciò che infatti interessa sono i dislivelli tra i vari punti) di tutta la rete.
Di ogni singolo tronco j-esimo di rete è inoltre necessario conoscere il diametro Dj, che
si suppone costante all’interno del tronco.
Il tracciato planimetrico della condotta resterà definito mediante la conoscenza
delle coordinate X , Y di tutti i punti della rete ed in particolare dei nodi Xi e Yi. Dalla
conoscenza del tracciato seguirà facilmente il calcolo delle lunghezza Lj dei singoli
tronchi di rete.
18
2.2 Determinazione del tracciato planimetrico
Scelto preliminarmente il comprensorio da servire occorre delineare il tracciato
planimetrico della rete.
A tal fine, per quanto si è detto nel precedente capitolo, occorre conoscere
l’andamento planimetrico delle arterie stradali principali esistenti, sulle quali si adagerà
la rete principale. Si è ipotizzato infatti che le condotte principali dell’acquedotto siano
poste in opera lungo le strade principali del comprensorio.
In tal maniera si considera la planimetria della rete acquedottistica come un
sottoinsieme della planimetria stradale.
I metodi per giungere alla conoscenza analitica del reticolo di arterie stradali
principali (per conoscenza analitica si intende in questo caso la conoscenza delle
coordinate X,Y dei punti del reticolo rispetto ad un sistema di riferimento opportuno)
possono essere molteplici: si possono effettuare rilievi in loco così come si possono
importare tali informazioni direttamente da elaborati grafici preesistenti (manualmente o
in modo automatico con ausilio di elaboratori elettronici collegati a dispositivi per
l’acquisizione digitale di immagini).
Una volta acquisiti analiticamente gli elementi dell’insieme principale “planimetria
stradale”, restano da definire i criteri per determinare gli elementi di questo che
andranno a far parte del sottoinsieme “planimetria acquedottistica”.
Tali criteri sono stati enunciati in forma discorsiva nel precedente capitolo.
Essi sono:
1) densità del reticolo uniforme e proporzionale al numero di utenze da servire
19
2) distanza tra le utenze e la rete non eccessiva
3) magliatura del reticolo omogenea ma non troppo fitta
Si esamineranno ora i tre punti singolarmente con l’intento di assegnare una forma
analitica a ciascuno di essi:
1) Si introduce la grandezza scalare densità del reticolo DR relativa all’area A
definendola nel seguente modo:
DR = ∑i Li / A
dove Li = lunghezza del singolo tronco di rete contenuto in A
Il vincolo sull’uniformità della distribuzione può essere posto delimitando il range
di variabilità per la densità del reticolo, cioè imponendo che:
DRmin < DR < DRmax
∀ A ⊂ comprensorio con A > Amin
(2.1)
dove Amin rappresenta l’area minima per cui ha ancora significato parlare di densità,
mentre DRmin e DRmax dipendono, in maniera direttamente proporzionale, dal numero di
utenze da servire distribuite sulla stessa area ovvero dalla densità di utenza DU,
quest’ultima definibile come:
DU = N / A
dove N è il numero complessivo di allacciamenti nell’area A
20
DRmin e DRmax risultano quindi esprimibili mediante la seguente formulazione:
DRmin = a DUα
DRmax = b DUβ
dove a,b,α,β sono costanti che devono verificare: a < b
e α,β>0
In definitiva, dunque, la relazione (2.1) diventa:
a DUα < DR < b DUβ
∀ A ⊂ comprensorio con A > Amin (2.1a)
a sua volta esprimibile in funzione di N, ∑i Li ed A:
a (N/A)α < (∑i Li / A) < b (N/A)β ∀ A ⊂ comprensorio con A > Amin (2.1b)
2) Poiché la distanza tra i punti da servire ed il reticolo è legata linearmente alle
perdite di carico tra la condotta principale ed il punto di consegna (le quali, se eccessive,
farebbero scendere la pressione di consegna sotto i valori minimi richiesti) è opportuno
che tale distanza non sia troppo grande.
Si noti che la distanza andrebbe a rigore valutata lungo l’effettivo percorso
dell’acquedotto, ma in fase progettuale non ci è dato di conoscere preventivamente né il
percorso, né i diametri della rete secondaria e terziaria, per cui risulta più opportuno
approssimarla alla distanza in linea d’aria, aggiungendo dei fattori correttivi.
21
Formalmente ciò può esprimersi come segue:
Min[(X − X i ) 2 + (Y − Yi ) 2 ] ≤ dmax
(2.2)
dove:
dmax è una costante
X,Y sono le coordinate dei punti della rete principale
Xi ,Yi sono le coordinate dei singoli punti di allacciamento delle utenze.
3) Imporre che la magliatura non sia eccessivamente fitta equivale a porre un limite
superiore alla densità reticolare in quanto si è ipotizzato in precedenza che la rete
principale (la sola di cui ci si occupa in questa sede) fosse magliata.
La densità delle maglie coincide quindi con la densità del reticolo e porre dei
vincoli all’uno è equivalente al porli all’altro.
Ma la densità del reticolo è stata già vincolata al punto 1) per cui risulta vincolata
anche la densità delle maglie.
Resta allora da determinarsi la forma matematica più appropriata per imporre
innanzitutto che il reticolo della rete principale sia magliato e quindi che tale magliatura
risulti omogenea.
Per imporre la magliatura del reticolo si verificherà che i tronchi del reticolo siano
disposti sempre ad anello, ossia che formino sempre percorsi chiusi.
Sono ovviamente possibili eccezioni quali, ad esempio, la condotta maestra che
connette il serbatoio (o i serbatoi) al resto della rete ovvero altre situazioni particolari
22
lasciate alla discrezione del progettista.
Per tali tronchi è allora cura del progettista immetterne preventivamente le
coordinate X,Y lasciando come incognita progettuale la porzione restante di rete. Solo a
quest’ultima si imporrà quindi la magliatura, verificando che:
∀ (Pi ,Pj) ∈RETE con i ≠ j ∃ 2 percorsi distinti che uniscono Pi a Pj (2.3)
E’ sufficiente che la verifica sia soddisfatta fissando il punto Pi e facendo variare
Pj. Inoltre, una volta determinati i nodi (coincidenti con i punti di intersezione di più
percorsi) ed i tronchi (tratti di rete tra 2 nodi adiacenti) del tracciato in esame, è possibile
restringere ulteriormente la verifica ad un punto solo per ogni tronco (il punto può essere
scelto casualmente ma deve essere interno al tronco).
Per vincolare l’omogeneità della distribuzione delle maglie si può imporre che le
dimensioni delle maglie elementari (intese come maglie che non contengono altre
maglie) siano inversamente proporzionale al numero degli allacciamenti per unità di
area (grandezza già definita come densità di utenza DU).
Come dimensione della maglia si adotta il diametro equivalente, ovvero il diametro
del cerchio avente pari area. Si può porre quindi:
DEmin < DE < DEmax
∀ maglia ∈ RETE
dove:
DE = diametro equivalente della maglia = (Area ⋅ 4/π)1/2
Area = area della singola maglia elementare
DEmin e DEmax sono quindi esprimibili nella seguente forma:
23
(2.4)
DEmin = c DUγ
DEmax = d DUδ
dove c,d,γ,δ sono costanti che devono verificare: c < d
e γ,δ <0
in definitiva dunque la relazione (2.4) diventa:
c DEγ < DR < d DEδ
∀ maglia ∈ RETE
(2.4a)
2.3 Determinazione del tracciato altimetrico
Per esso si opera analogamente al tracciato planimetrico. Occorre importare
l’altimetria del tracciato stradale operando come per l’acquisizione della planimetria,
cioè mediante rilievo diretto in loco oppure indirettamente, avvalendosi della cartografia
esistente.
In tal modo avremo una conoscenza non solo planimetrica, ma anche spaziale, del
reale sviluppo stradale; ovvero saranno conosciute tutte e tre le coordinate X,Y,Z dei
punti della rete.
Per poter definirne anche l’andamento altimetrico della rete è necessario solo
definire a che profondità la condotta sarà collocata rispetto alla quota del piano stradale.
Come descritto nel primo capitolo, la profondità sarà da determinarsi mediante
un’analisi costi-benefici che esula dagli obiettivi di questo studio e pertanto si
considererà una costante nota.
In definitiva quindi, per ogni punto della rete, deve risultare :
h=Z–p+ D/2
(2.5)
24
dove:
h = quota dell’asse-condotta (riferita ad un punto stabilito)
Z = quota del piano stradale (relativa allo stesso riferimento scelto per la condotta)
p = profondità del letto di posa della tubazione (rispetto al piano stradale)
D = diametro della tubazione
2.4 Determinazione delle portate distribuite uniformemente lungo ogni tronco
Il tracciamento planimetrico della rete di distribuzione necessita la conoscenza
dell’esatta ubicazione dei punti di domanda nel comprensorio di competenza
dell’acquedotto.
Per poter giungere alla determinazione dei diametri è necessario conoscere anche
le portate massime richieste dai singoli utenti, riferite all’ora di punta del giorno di
massimo consumo. Note queste ultime, è possibile determinare le portate distribuite da
ogni tronco della rete operando in due modi distinti.
1) Il primo metodo è applicabile qualora, oltre alla dislocazione dei punti di
domanda, sia noto anche il punto esatto di allacciamento di ciascuna utenza.
Allora la portata massima distribuita lungo il tronco j-esimo si calcola come segue:
qj dist = ∑i qij
(2.6)
dove
qj dist = portata distribuita massima lungo il tronco j-esimo
qij sono le singole portate massime prelevate lungo il tronco j-esimo
25
2) Qualora sia nota preventivamente solo l’ubicazione delle utenze e non quella dei
punti di allacciamento alla rete, si deve operare in modo più approssimato.
Per ogni maglia elementare della rete si calcola la domanda totale (calcolo che si
può agevolmente fare moltiplicando la popolazione totale risiedente all’interno di ogni
maglia per la dotazione idrica giornaliera pro capite e per un opportuno coefficiente di
punta).
Quindi si ipotizza di distribuire tale portata in modo uniforme lungo tutta la maglia.
Per ultimo si vedranno quali tronchi appartengono a due maglie elementari adiacenti in
quanto essi dovranno distribuire le portate relative ad entrambe le maglie.
In definitiva la portata distribuita lungo il tronco j-esimo si calcolerà:
qj dist = L j tronco ⋅ ∑i (Qi
maglia
/ Li maglia)
(2.7)
con
Qi maglia = Pi maglia ⋅ DI ⋅ Cp / 86400
(2.8)
dove:
i sono le maglie adiacenti al tronco j
Qi maglia = domanda totale all’interno della i-esima maglia
Pi maglia = popolazione residente all’interno della i-esima maglia
Li maglia = lunghezza della i-esima maglia
DI = dotazione idrica giornaliera pro capite
Cp = coefficiente di punta
26
2.5 Verifiche di pressione
Le verifiche di pressione da compiere sono le seguenti:
1) pressione superiore alla minima nelle condotte, nel caso di massima erogazione
2) pressione superiore alla minima nel rubinetto più alto del fabbricato idraulicamente
più distante, sempre nel caso di massima erogazione
3) pressione inferiore alla massima nel rubinetto più basso del fabbricato idraulicamente
più vicino, nel caso di minima erogazione
4) pressione superiore ai 20 m nelle bocchette antincendio nel caso di erogazione
normale (uguale alla erogazione media del giorno di massimo consumo)
1) La prima verifica consiste nell’assicurarsi che la piezometrica non sia mai
inferiore a 5 metri sopra il piano stradale durante l’ora di punta (l’orario di punta del
prelievo di acqua usualmente si aggira intorno alle 7 del mattino) del giorno di massimo
consumo (condizione che comporta le massime perdite di carico) , e cioè:
H – ( h + p – D / 2) < 5 m
(2.9)
dove:
h, p e D sono stati definiti in precedenza
H = quota piezometrica della condotta (cioè dell’asse-tubazione) valutata rispetto allo
stesso riferimento adottato per le quote altimetriche
2) Nelle stesse condizioni di erogazione relative al caso 1) va verificato che la
27
piezometrica, nel rubinetto più alto del fabbricato idraulicamente più lontano dal
serbatoio, non scenda sotto i 5 m.
Ovvero, nell’ipotesi in cui le portate distribuite siano quelle massime previste (cioè
quelle calcolate con le metodologie poc’anzi descritte), deve risultare:
Min ( H - h) > (Hf - Hr) + 5
(2.10)
dove:
H, h sono state definite in precedenza
Hf = altezza media del fabbricato tipologicamente più diffuso
Hr = dislivello tra il punto più alto (rispetto al quale si è misurata l’altezza Hf) del
fabbricato tipologicamente più diffuso e la quota del rubinetto del piano più alto
3) Occorre verificare che la pressione, nel rubinetto più basso del fabbricato
idraulicamente più prossimo al serbatoio, non superi i 70 m di colonna d’acqua nelle
condizioni di minimo consumo.
Quindi, ipotizzando che in tali condizioni di consumo le portate siano un’aliquota
di quelle massime calcolate per il giorno di massimo consumo, deve valere:
Max ( H - h) – Ht < 70
(2.11)
Con
Qi min = g Qi max
∀ tronco i-esimo
(2.12)
dove:
Ht = quota del rubinetto più basso del fabbricato tipologicamente più diffuso, rispetto al
28
piano stradale
Qi
max
e Qi
min
sono rispettivamente le portate distribuite massime e minime lungo il
tronco i-esimo
g = aliquota costante < 1
4) L’ultima verifica di pressione va effettuata sulle bocchette antincendio
supponendo che si sia in condizioni di prelievo normale, pari al prelievo medio del
giorno di massimo consumo.
Quindi, per portate uniformemente distribuite calcolate mediante la (2.8) a meno
del coefficiente di punta Cp, dovrà valere:
( Hi - hi ) > 20
∀ i-esima bocchetta antincendio
(2.13)
2.6 Vincoli per i diametri
Occorre definire l’insieme discreto di diametri commerciali effettivamente
disponibili. Sia tale insieme:
I.D. = { D1,D2,D3, … , Dn}
(2.14)
Si imporrà quindi che il diametro di ogni tubazione soddisfi la verifica:
D ∈ I.D.
(2.15)
L’ulteriore vincolo per il diametro di ogni tronco è dato dalla larghezza della strada
in cui passa la condotta, ossia:
Di < e (LSi) ε
∀ tronco i-esimo
(2.16)
29
dove:
Di = diametro del tronco i-esimo
LSi = larghezza strada del tronco i-esimo
e ed ε sono coefficienti che devono verificare:
30
e,ε>0
CAPITOLO III
Il sistema matriciale di equazioni delle reti in pressione
Premessa
Nei primi due capitoli si sono analizzate le equazioni di vincolo per un eventuale
processo automatico di progettazione delle reti di distribuzione.
In questo lavoro ci si limiterà a sviluppare un programma di calcolo per la verifica
delle reti di distribuzione, essendo questo uno stadio indispensabile per poter effettuare
qualsiasi tipo di progettazione.
Un programma di calcolo che comprenda l’intero processo progettuale supera,
d’altra parte, anche le odierne capacità dei normali personal computers, sia in termini di
memoria sia in termini di velocità.
Si ritiene utile, comunque, l’aver in qualche modo gettalo le basi, mediante la
formalizzazione delle condizioni di vincolo per la progettazione proposta nei precedenti
capitoli ed il programma di verifica delle reti idrauliche di cui si tratterà nel seguito di
questa tesi, per una futura implementazione di un processo completamente automatico di
progettazione delle reti idrauliche in pressione.
Per quello che è invece lo scopo di questo lavoro si supporrà, a partire da questo
momento, che la rete, manualmente o tramite tale ipotetico processo automatico, sia
stata preliminarmente tracciata, per cui resta da risolvere il problema di verificarne il
funzionamento idraulico.
31
A tal fine si prenderà in esame il sistema classico di equazioni che governa le reti
idrauliche in pressione ed in particolare la forma matriciale proposta in [Curto, G. et al.]
da due autori dell’Istituto di Idarulica di Palermo, G. Curto e A. Tumbiolo.
Essa si è infatti mostrata di grande ausilio sia per la chiarezza formale sia per una
efficiente stesura del codice del programma per la risoluzione di tale sistema, in quanto,
(come si vedrà nei capitoli successivi) si è adoperato un linguaggio particolarmente
dedicato al calcolo matriciale.
3.1 Equazioni fondamentali delle reti in pressione
Le equazioni fondamentali per una rete idraulica in pressione sono di due tipi:
equazioni di continuità nei nodi ed equazioni delle perdite di carico lungo i tronchi.
1) equazioni di continuità:
∑i Qi + ∑j Qj = 0
∀ nodo
(3.1)
dove Qi e Qj sono rispettivamente le portate entranti ed uscenti dal nodo, assumendo
convenzionalmente segno positivo se entranti e negativo se uscenti.
2) equazioni della perdita di carico:
hj – hj+1 = Li ki Qi2 Di-ni = βi Qi2
∀ tronco i-esimo
(3.2)
dove:
hj e hj+1 sono le quote piezometriche agli estremi del tronco i-esimo
Li = lunghezza del tronco i-esimo
ki e ni costanti che caratterizzano il tipo di tubazione impiegato nel tronco i-esimo
32
βi = Li ki Di-ni costante che ingloba in sé più costanti caratterizzando il tronco i-esimo
3.2 L’impostazione matriciale
3.2.1 Matrice di connessione dei tronchi
Si definiscono: S il numero dei serbatoi ed L il numero di tronchi della rete. Quindi si
fissano, in modo arbitrario, i versi di percorrenza dei tronchi individuando così, per
ciascuno di essi, il nodo di monte ed il nodo di valle.
Il dislivello piezometrico Hi nel tronco i-esimo è dato dalla differenza tra la quota
piezometrica hmi dell’estremo di monte e quella hvi dell’estremo di valle:
Hi = hmi - hvi
(3.3)
Tale relazione può essere scritta nella forma più generale:
N +S
Hi = - ∑ (a ijh j )
(3.4)
j=1
Introducendo i coefficienti aij definiti nel seguente modo:
aij = 1 se il nodo j-esimo è l’estremità di valle del tronco i-esimo;
aij = -1 se il nodo j-esimo è l’estremità di monte del tronco i-esimo;
aij = 0 se il nodo j-esimo non appartiene al tronco i-esimo;
Evidentemente, poiché ciascun tronco ha due estremità, per ogni valore dell’indice
i i coefficienti aij, che compaiono nella sommatoria a secondo membro della (3.4),
risultano tutti nulli ad eccezione di due: quello che si riferisce al nodo di valle e (aij=1) e
quello che si riferisce al nodo di monte (aij=-1).
Il sistema delle equazioni (3.4), in forma compatta si scrive:
H=-Axh
(3.5)
33
dove:
H = [H1,H2,………,HL] = vettore di dimensioni [L x 1] dei dislivelli piezometrici Hi
negli L tronchi della rete;
h = [h1,h2,…….,hN,hN+1,hN+S] = vettore di dimensioni [(N+S) x 1] delle quote
piezometriche hj negli (N+S) nodi della rete
A = […aij…] = matrice [L x (N+S)] di connessione tronchi-nodi i cui elementi sono i
coefficienti aij
Al fine di separare i termini noti dalle incognite, è opportuno decomporre il vettore
h in due vettori hn [N x 1] e hs [S x 1] cui componenti sono rispettivamente le N quote
piezometriche (incognite) dei nodi interni, e le S quote piezometriche (note) dei serbatoi:
h = [hN , hS]
(3.6)
Analogamente è opportuno decomporre la matrice di connessione tronchi-nodi A in
due matrici AN [L x N] ed AS [L x S] i cui termini sono, rispettivamente, i coefficienti aij
relativi ai nodi interni e quelli relativi ai serbatoi:
A = [AN , AS]
(3.7)
Tenendo conto delle decomposizioni del vettore h e della matrice A, la (3.5)
diviene:
H = - (AN hN + AS hS)
(3.8)
34
Si fa notare che il prodotto AN hN rappresenta un vettore [L x 1] le cui componenti
dipendono dalle quote piezometriche (incognite) dei nodi interni; mentre AS hS è un
vettore [L x 1] le cui componenti dipendono dalle quote piezometriche (note) dei
serbatoi.
3.2.2 Equazioni di continuità dei nodi
Considerando il fluido incomprimibile, le equazioni di continuità esprimono per
ogni nodo interno alla rete (ovvero per ogni nodo distinto dai serbatoi) il bilancio delle
portate in entrata ed in uscita.
Avendo fissato a priori il verso di percorrenza di ciascun tronco ed assumendo la
convenzione che le portate sono positive se entranti nel nodo e negative se uscenti,
l’equazione di continuità per il generico nodo j-esimo si scrive:
L
∑ (a , q ) + Q
i =1
ji
i
j
=0
(3.9)
dove a’ji sono dei coefficienti definiti nel seguente modo:
a’ji = 1 se il tronco i-esimo ha verso di percorrenza entrante nel nodo j-esimo;
a’ji =-1 se il tronco i-esimo ha verso di percorrenza uscente dal nodo j-esimo;
a’ji = 1 se il tronco i-esimo non è connesso con il nodo j-esimo;
Le equazioni di continuità (3.9) costituiscono un sistema di N equazioni lineari
indipendenti.
In forma compatta il sistema (3.9) diventa:
35
A’N q + Q = 0
(3.10)
dove:
q = [q1 , q2 , …….. , qL ] = vettore [L x 1] delle portate qi (incognite);
Q = [Q1 ,Q2 , …….. , QN] = vettore [N x 1] delle portate Qj (note);
A’N = […….a’ji ………] = matrice [N x L] di connessione nodi interni-tronchi i cui
elementi sono i coefficienti a’ji .
Si noti che la matrice di connessione nodi interni-tronchi A’N si ottiene dalla
matrice di connessione tronchi-nodi interni AN, introdotta nel paragrafo precedente,
scambiando le righe con le colonne, cioè A’N è la matrice trasposta di AN.
Indicando quest’ultima con ANT, la (3.10) si scrive:
ANT q + Q = 0
(3.11)
3.2.3 Le due forme delle equazioni del moto lungo i lati
Le equazioni del moto forniscono il legame tra i dislivelli piezometrici nei tronchi e
le portate.
Per il generico tronco i-esimo, si scrive:
Hi = ri qiα
(3.12)
dove ri è la perdita di carico per portata unitaria che dipende, nel regime di moto
assolutamente turbolento (di prevalente interesse tecnico), dal diametro, dalla scabrezza
e dalla lunghezza del tronco; mentre l’esponente α della portata, nelle situazioni di
pratico interesse, assume valori compresi tra 1,8 e 2.
36
L’equazione del moto (3.12) può anche essere espressa in un’altra forma
apparentemente lineare rispetto alla portata qi :
Hi = di qi
(3.13)
dove il coefficiente
di = ri | qi | α -1
(3.14)
dipendente dalla portata qi , assume valori positivi o nulli.
Si osserva, dalla (3.13) e dalla (3.14), che il dislivello piezometrico Hi ha lo stesso
segno della portata qi.
In forma matriciale compatta, il sistema delle equazioni del moto si scrive:
H=D q
(3.15)
dove D è la matrice diagonale [L x L], i cui termini sono i coefficienti di già definiti.
L’equazione del moto (3.12) può anche essere posta in una seconda forma:
Hi = gi qi
(3.16)
dove il coefficiente
gi = ri 1 / α | Hi | 1 – 1 / α
(3.17)
dipende questa volta dal dislivello piezometrico Hi.
Anche per le equazioni del moto nella forma (3.16) si osserva che il dislivello
piezometrico Hi ha lo stesso segno della portata qi.
Il sistema delle equazioni (3.16) si scrive in forma compatta:
H=Gq
(3.18)
dove G è la matrice diagonale [L x L] i cui elementi diagonali sono i termini gi.
37
Riepilogando, il sistema delle equazioni del moto lungo i lati, si può scrivere in una
prima forma (3.15) o in una seconda forma (3.18).
Tali espressioni si differenziano per la struttura delle due matrici diagonali D e G
che dipendono: la prima dalle portate qi e la seconda dai dislivelli piezometrici Hi.
Tendendo conto dell’equazione (3.8), le due forme del sistema delle equazioni del
moto lungo i tronchi si scrivono, infine, nel seguente modo:
D q = - (AN hN + AS hS)
(3.19)
G q = -(AN hN + AS hS)
(3.20)
3.2.4 Equazioni del moto riferite alle maglie. Matrice di connessione maglietronchi
Per una maglia effettiva, la somma algebrica dei dislivelli piezometrici lungo i
tronchi deve essere nulla; per una maglia virtuale (si ricorda che per maglia virtuale si
intende una maglia che si chiude su due serbatoi contigui tramite un tronco di rete
fittizio) tale somma deve invece eguagliare la differenza tra le due quote dei nodi esterni
che delimitano la maglia stessa.
Pertanto per ciascuna maglia effettiva può scriversi una relazione del tipo:
L
∑δ
i =1
ki
Hi = 0
(3.21)
mentre per ciascuna maglia virtuale si ha:
L
L
N +S
i =1
i =1
j= N +1
∑δ ki H i = − ∑δ ki
∑ (a
ij
hj )
(3.22)
38
I coefficienti δki sono definiti nel seguente modo:
δki = 1 se il tronco i-esimo ha verso concorde con la maglia k-esima;
δki =-1 se il tronco i-esimo ha verso discorde con la maglia k-esima;
δki = 1 se il tronco i-esimo non appartiene alla maglia k-esima;
Le sommatorie a primo membro delle equazioni (3.21) e (3.22) rappresentano
ovviamente le somme algebriche dei dislivelli piezometrici lungo i tronchi di ciascuna
maglia; mentre il secondo membro della (3.22) rappresenta la differenza tra le quote
piezometriche dei serbatoi che delimitano la maglia virtuale.
In forma compatta tale sistema si scrive nella forma:
C H = - C AS hS
(3.23)
in cui compare la matrice C, di dimensioni [(M+S-1) x L], detta matrice di
connessione maglie-tronchi, i cui termini sono i coefficienti δki prima definiti.
Se si esprime il vettore H mediante la (3.13), la (3.23) si trasforma infine nella:
C D q + C AS hS = 0
(3.24)
che rappresenta il sistema delle M+S-1 equazioni del moto riferite alle maglie.
3.2.5 Sistema completo delle equazioni della rete
Nel problema di verifica di una rete bisogna dunque risolvere il sistema formato
dalle N equazioni di continuità (3.11) e dalle L equazioni del moto lungo i tronchi.
Poiché per queste ultime sono state dedotte due forme, la (3.19) e la (3.20), il
39
sistema completo delle equazioni della rete, a seconda che si sceglie l’una o l’altra,
assume la forma:
ANT q + Q = 0
D q = - (AN hN + AS hS)
(3.25)
oppure la forma:
ANT q + Q = 0
G q = -(AN hN + AS hS)
(3.26)
Le due formulazioni si differenziano soltanto per le matrici D e G, attraverso le
quali si esprime in forma apparentemente lineare la legge di resistenza, e che dipendono
rispettivamente dalle portate circolanti nei tronchi e dalle quote piezometriche nei nodi.
Pertanto, in realtà, il sistema (3.25) è non lineare rispetto alle portate qi, mentre il
sistema (3.26) è non lineare rispetto alle quote piezometriche hj.
In entrambi i casi, è necessario risolvere un sistema misto di L+N equazioni in
altrettante incognite (le N quote piezometriche hj e le L portate qi).
Tuttavia, la particolare struttura dei due sistemi consente di eliminare alcuni gruppi
di incognite riducendo il numero delle equazioni da risolvere.
Più esplicitamente è possibile, operando sul sistema (3.25), eliminare le incognite
relative alle quote piezometriche nei nodi interni hj, per cui il problema viene ricondotto
alla soluzioni di un sistema di sole L equazioni, alcune lineari ed altre non lineari, nelle
L incognite qi.
Operando sul sistema (3.26), invece, si riesce ad eliminare le incognite relative alle
40
portate qi, riconducendosi ad un sistema di sole N equazioni non lineari nelle N
incognite hj.
3.2.6 Sistema ridotto nelle portate incognite
Considerando nel sistema (3.25) le equazioni del moto riferite alle maglie al posto
di quelle riferite ai tronchi, si eliminano le incognite quote piezometriche, e si ottiene un
sistema ridotto di sole L equazioni nelle L incognite qi, che si scrive:
ANT q + Q = 0
C D q + C AS hS = 0
(3.27)
Tale sistema è costituito da N equazioni lineari e da M+S –1 equzioni non lineari
nelle L portate qi.
3.2.7 Sistema ridotto nelle quote piezometriche incognite
Nell’ipotesi che la matrice G sia invertibile (G è invertibile se tutti i coefficienti
gi(Hi)≠0, ovvero se i dislivelli piezometrici Hi sono non nulli) dall’equazione (3.20) può
ricavarsi il vettore q:
q = -(G-1 AN hN + G-1 AS hS)
(3.28)
Sostituendo questa espressione nelle (3.11) si ottiene infine:
ANT G-1 AN hN + ANT G-1 AS hS – Q = 0
41
(3.29)
Tale sistema è costituito da N equazioni non lineari nelle N incognite quote
piezometriche hj.
Infatti si ricorda che i termini della matrice G dipendono dai dislivelli piezometrici
e quindi dalle quote hj stesse.
42
CAPITOLO IV
Sistemi non lineari di equazioni e
problemi di ottimizzazione non vincolata
Premessa
Nel precedente capitolo si è analizzata la forma matriciale del sistema di equazioni
che governa le reti idrauliche in pressione.
Delle varie formulazioni proposte in [Curto, G. et al.] dagli autori Curto e
Tumbiolo, si è scelto, per gli scopi di questo studio, di utilizzare il sistema “completo”:
ANT q + Q = 0
D q = − (AN hN + AS hS)
(3.25)
seppure leggermente modificato come di seguito:
ANT q + Q = 0
R abs(q) q + (AN hN + AS hS) = 0
(4.1)
dove:
R è sempre una matrice diagonale [L x L] ed i suoi elementi ri = ui Li
abs(q) = vettore valore assoluto di q (ossia è quel vettore le cui componenti sono uguali
ai valori assoluti delle componenti di q)
Da tale forma si evince meglio la non linearità della seconda parte del sistema di
equazioni (si tratta infatti di un sistema “misto”) che, pertanto, pur ammettendo
43
soluzione, questa non risulta di immediata determinazione.
Ad essa si può giungere soltanto per approssimazioni successive adoperando
opportuni algoritmi iterativi poiché non esiste una “forma chiusa” per determinare le
soluzioni come, per esempio, nei sistemi lineari del tipo:
Ax+B=0
dove, nell’ipotesi che A sia non singolare e prescindendo da eventuali problemi di
condizionamento, si ha che:
-1
x = −A B
Si fa presente che, per la trattazione di questi argomenti, si è fatto riferimento alle
pubblicazioni [Comincioli] e [Branch et al.].
4.1 Sistemi non lineari di equazioni trasformati in problemi di ottimizzazione
Non esistendo “forme chiuse” per la soluzione di un sistema non lineare di
equazioni (4.1) (d’ora innanzi il sistema “misto” (4.1) sarà considerato più generalmente
“non lineare”) occorre rifarsi ad un algoritmo iterativo in grado di giungere alla
soluzione per approssimazioni successive.
Si tratterà in definitiva (come si farà vedere nel seguito di questo capitolo) di
risolvere, per via numerica, un problema di ottimizzazione non vincolata, cioè di
determinare il minimo “ globale” non vincolato di una data funzione obiettivo (dove
tale funzione rappresenterà proprio l’errore della generica soluzione di tentativo e sarà
quindi denominata funzione d’errore).
Per prima cosa, quindi, introduciamo la funzione che si intenderà minimizzare.
44
Trattasi di una funzione vettoriale di variabile vettoriale dove il “vettore variabile”
è il vettore X avente come elementi le incognite del nostro sistema:
X = [q1 q2 … qL hn1 hn2 … hN] = [q hN]
(4.2)
di dimensioni [N+L x 1],
dove (come si è già visto in precedenza):
L = numero dei tronchi della rete
N = numero dei nodi interni (cioè i nodi distinti dai serbatoi)
Mentre il “vettore funzione” è definito dal vettore:
F (X) = [ANT q + Q] ∪ [R abs(q) q + (AN hN + AS hS)]
(4.3)
sempre di dimensioni [N+L x 1] in quanto unione dei due vettori [ANT q + Q] e
[R abs(q) q + (AN hN + AS hS)] aventi dimensioni rispettivamente [N x 1] ed [L x 1].
Risolvere il sistema (4.1) diviene in tal modo equivalente a ricercare quel vettore X
tale da annullare il vettore F.
Impostato così il problema non è ancora, a rigore, un problema di ottimizzazione
non vincolata, in quanto non esiste una relazione d’ordine totale (≤) per F, non essendo
una grandezza scalare.
Si tratta in effetti di un problema di ottimizzazione non vincolata più complesso,
detto anche problema di ottimizzazione non vincolata multi-obiettivo.
In tal caso infatti la funzione obiettivo è la funzione vettoriale denominata funzione
errore, definita come segue:
45
errore (X)= ( |F1| |F2| |F3| … |FN+L| )
(4.4)
Si evince immediatamente la impossibilità di minimizzare “globalmente” tale
funzione vettoriale non esistendo per esso una relazione di ordine totale (≤) che permetta
di stabilire se, per due distinti valori del vettore variabile X1 e X2, valga:
errore1 ≤ errore2 oppure errore2 ≤ errore1
Ciò non è possibile in quanto è noto che l’insieme ℜN+L non è dotato della
relazione d’ordine totale, per cui non è possibile determinare se, ad esempio, il vettore
[1, 2] sia maggiore o minore rispetto al vettore [10,11].
Difatti in ℜN+L esiste solo una relazione di uguaglianza tra gli elementi, cioè si
può solo dire se due vettori sono uguali (il che avviene se le componenti dei due vettori
sono ordinatamente uguali) oppure no.
In tale prospettiva, non potendo confrontare due distinte soluzioni di tentativo, le
uniche ricerche iterative possibili sono la ricerca casuale e la ricerca “a tappeto”.
Entrambi i metodi esplorano lo spazio delle soluzioni ℜN+L in tutta la sua
estensione, il primo in maniera random ed il secondo con step di ricerca costante.
Tali modalità di ricerca assicurano ovviamente la determinazione della soluzione
ma con tempi lunghissimi di elaborazione che, per problemi con elevato numero di
incognite, possono diventare tempi “storici” anche per le macchine più veloci.
Tra l’altro, la precisione della soluzione finale è funzione dello step della ricerca,
il che pone anche dei grossi limiti alla precisione della soluzione finale, non potendosi
46
diminuire eccessivamente lo step per i motivi di carattere temporale di cui sopra.
Tornando alla ottimizzazione non vincolata multi-obiettivo, per ovviare agli
inconvenienti precedentemente discussi, è necessario “scalarizzare” la funzione
obiettivo in quanto è solo per le grandezze scalari, cioè per gli elementi di ℜ, che esiste
una relazione d’ordine totale (≤).
Per far ciò esistono nel campo dell’analisi numerica varie metodologie, tra cui una
delle più usate è quella denominata metodo dei minimi quadrati, che consiste
nell’adottare come funzione obiettivo scalare una nuova funzione errore, definita come
segue:
errore(X) = F2 =
N+L
∑F
2
i
(4.5)
i =1
dove Fi è l’ i-esima componente del vettore F.
Il metodo è detto dei minimi quadrati in quanto, il problema di ricercare il vettore
X che annulli il vettore F, si trasforma nella ricerca del vettore X che minimizzi (o al più
annulli, se esiste una soluzione esatta) la funzione scalare errore definita come
sommatoria dei quadrati delle componenti del vettore errore.
La risoluzione del sistema di equazioni (4.2)
diventa, pertanto, un problema
classico di ottimizzazione non vincolata ovvero un problema di ottimizzazione monoobiettivo, dove la funzione obiettivo da “ottimizzare” (in questo caso da “minimizzare”)
è appunto la funzione errore definita in (4.5).
E’ inoltre evidente come la funzione errore sia dotata di almeno un minimo
47
globale, uguale a zero, in corrispondenza della soluzione del sistema.
Infatti il modulo di F è per definizione sempre positivo e si annulla solo quando il
vettore F coincide con il vettore nullo (il che, per come si è definito F, si avvera solo per
la soluzione del sistema). Lo stesso vale anche per il modulo di F elevato al quadrato.
In definitiva il sistema iniziale di equazioni (4.1) :
ANT q + Q = 0
R abs(q) q + (AN hN + AS hS) = 0
è stato trasformato nel seguente problema di ottimizzazione:
min
errore(X) = F2 =
N+L
∑F
2
i
(4.6)
i =1
X ∈ ℜN+L
dove :
X = [q1 q2 … qL hN1 hN2 … hNN] = [q hN]
F (X) = [ANT q + Q] ∪ [R abs(q) q + (AN hN + AS hS)]
mentre per le matrici AN AS R ed il vettore Q si vedano le definizioni del capitolo III.
Esiste anche un altro metodo molto utilizzato per “scalarizzare” la funzione
vettoriale obiettivo definita in (4.4) (e quindi rendere mono-obiettivo il problema di
ottimizzazione non vincolato che altrimenti risulterebbe multi-obiettivo).
Si tratta del metodo delle somme pesate, che è in un certo modo analogo al
metodo dei minimi quadrati, anzi si vedrà come quest’ultimo non sia che un caso
particolare del metodo delle somme pesate.
48
Per tale metodo la funzione errore scalare è definita come segue:
N+L
errore(X) =
∑w
i
Fi2
(4.7)
i =1
dove:
wi sono N+L coefficienti scalari detti pesi
Fi sono le componenti del vettore F
Con tale metodo è possibile attribuire un peso diverso alle singole equazioni del
sistema di equazioni (4.2).
Fi è infatti proprio l’errore della soluzione di tentativo riferito all’i-esima equazione
del sistema.
Moltiplicando Fi per wi si può così calibrare l’importanza relativa delle singole
equazioni del sistema ed ovviare ad eventuali discriminazioni indesiderate di tipo
numerico, dovute per esempio a particolari unità di misura che potrebbero privilegiare
alcune grandezze anziché altre in quanto non è detto che le incognite di un sistema siano
grandezze omogenee.
Nella fattispecie del sistema (4.2) in studio, infatti, le incognite non sono
grandezze omogenee, in quanto le prime N incognite sono portate mentre le restanti L
incognite sono quote piezometriche.
L’adozione di un particolare tipo di unità di misura potrebbe pertanto penalizzare la
ricerca delle portate rispetto alle altezze piezometriche o viceversa in quanto gli errori Fi
delle singole equazioni non sono né grandezze adimensionali né grandezze omogenee
49
tra loro e quindi non sono direttamente sommabili indiscriminatamente.
L’introduzione dei pesi wi serve appunto a risolvere questo problema.
Con questo secondo metodo (che degenera nel precedente qualora i pesi wi siano
uguali) il problema di ottimizzazione non vincolata diviene:
N+L
min
2
errore(X) = ∑ w i Fi
(4.8)
i =1
X ∈ ℜN+L
Nel seguito di questo studio saranno utilizzate entrambe le metodologie fin qui
esposte.
4.2 Ipersuperficie d’errore
A questo punto il problema è identificare il miglior metodo di ottimizzazione non
vincolata per risolvere il problema (4.6) o il problema (4.8) a seconda del metodo di
scalarizzazione scelto.
E’ ovvio che il metodo più idoneo dipende dal tipo di problema che si vuole
affrontare.
Per ogni problema è diverso infatti il tipo di ipersuperficie di errore
nell’iperspazio delle soluzioni possibili (si utilizza il prefisso iper per indicare spazi e
superfici di ℜN quando N>3).
Dove, sia ℜN+L l’iperspazio delle soluzioni possibili (ovvero il dominio di F(X)
o ancora l’insieme dei possibili X), l’ipersuperficie d’errore si definisce come quel
sottospazio di ℜN+L+1 avente la proprietà seguente:
50
IS-errore ={(x1 x2 … xN+L+1) ∈ ℜN+L+1 xN+L+1 = errore(x1 x2 … xN+L)}
quindi come l’insieme dei vettori di
ℜN+L+1 che
(4.9)
hanno la componente lungo la
dimensione N+L+1-esima uguale al valore della funzione errore calcolata rispetto al
vettore delle prime N+L componenti.
Nel caso in cui si ha X = vettore ∈ ℜ 2, l’iperspazio delle soluzioni possibili
coincide con il piano x-y mentre l’ipersuperficie d’errore degenera in una superficie
dello spazio avente le stesse coordinate planimetriche x,y del punto e altezza z = errore
(x,y); di qui le denominazioni Ipersuperficie d’errore e Iperspazio delle possibili
soluzioni.
Come accennato, l’ipersuperficie d’errore può essere di diversi tipi a seconda del
problema in studio.
Si cercherà pertanto di individuare le caratteristiche dell’ipersuperficie d’errore che
caratterizza il problema di ottimizzazione in esame.
Si può subito dire, innanzitutto, che si tratta di una superficie continua in quanto i
termini che compaiono in ogni singola equazione del sistema di equazioni (4.2) sono
funzioni continue e pertanto sono continue anche le funzioni Fi componenti della
funzione vettoriale F in quanto somme e differenze di funzioni elementari continue.
E’ quindi continua anche la funzione errore definita in (4.5), o in (4.7), essendo una
combinazione lineare di quadrati di funzioni continue. Di conseguenza è continua anche
l’ipersuperficie d’errore per come essa è definita.
In modo analogo può
dimostrarsi che la funzione errore (e di conseguenza
51
l’ipersuperficie d’errore) è continua anche rispetto alle derivate prime e seconde.
Si può quindi assumere che l’ipersuperficie d’errore è una funzione di classe C(2).
4.3 Algoritmi risolutori di problemi di ottimizzazione non vincolata
A questo punto occorre identificare un buon metodo e pertanto un buon algoritmo
per la risoluzione del problema di ottimizzazione non vincolata, in funzione del tipo di
ipersuperficie d’errore.
Come in precedenza visto, tra gli innumerevoli algoritmi afferenti la disciplina
dell’analisi numerica finalizzati alla risoluzione di problemi di ottimizzazione, è
possibile distinguere quelli che utilizzano il calcolo delle derivate di ordine n-esimo da
quelli che non lo usano affatto.
Ai primi appartengono il metodo di Cauchy o steepest descent, i metodi di
Newton, quasi-Newton, Gauss-Newton e tanti altri ancora.
I secondi sono in genere di più recente ideazione, e molti sono ancora in fase di
“validazione” da parte della comunità scientifica.
A questi ultimi appartengono gli algoritmi genetici, dei quali si è fatto menzione
nella premessa e dei quali si tratterà estensivamente nel capitolo successivo.
Difatti uno dei principali obiettivi di questo lavoro consisterebbe proprio nel fornire
un piccolo contributo scientifico a tale “validazione” mediante l’applicazione di questa
metodologia, congiuntamente ad altre più classiche per i motivi di cui si dirà nel seguito
di questo capitolo, alla risoluzione del problema di ottimizzazione in esame.
Si cercherà ora di analizzare l’enorme differenza concettuale e applicativa esistente
52
tra gli algoritmi di tipo derivativo (cioè che utilizzano le derivate di ordine n-esimo) e
quelli di tipo non derivativo quali gli algoritmi genetici.
Gli algoritmi derivativi utilizzano infatti l’informazione derivativa per spostarsi,
per ogni ciclo dell’iterazione, da un punto generico dell’iperspazio delle soluzioni
possibili ad un punto più prossimo alla soluzione (ossia al valore che ottimizza la
funzione obiettivo).
Per far ciò l’algoritmo deve determinare sia la “direzione” sia il “modulo” dello
“step di avanzamento”.
L’informazione derivativa serve all’algoritmo per conoscere l’andamento della
ipersuperficie d’errore (ad esempio calcolando la pendenza mediante le derivate prime e
la curvatura mediante le derivate seconde) nell’intorno del punto dato.
In tal modo l’algoritmo determina la
direzione di “massima pendenza”
dell’ipersuperficie mediante il vettore “gradiente” e stima la distanza dal punto di
minimo attraverso la conoscenza delle derivate di ordine superiore (attraverso la
matrice “hessiana” nel caso delle derivate del second’ordine).
Si può ad esempio determinare il valore da assegnare allo step di ricerca sfruttando
l’osservazione che la curvatura usualmente aumenta con l’approssimarsi del punto di
ricerca al punto di minimo.
Questo tipo di algoritmi è molto “efficiente” in termini di velocità e robustezza
nel ricercare la soluzione del problema, ma ha il grave “handicap” qualora
l’ipersuperficie d’errore assuma una configurazione tale da presentare più punti di
minimo locali, cioè qualora l’ipersuperficie abbia un minimo globale e più minimi
53
locali.
La soluzione finale dipende allora dal punto iniziale di ricerca in quanto, come
appena detto, i metodi derivativi sono degli “algoritmi di discesa”, ossia in grado di
“discendere il pendio” dell’ipersuperficie d’errore fino al fondo (dove restano
“catturati”) ma non hanno la possibilità di poter stabilire se il “pendio” che stanno
discendendo è il pendio del minimo globale oppure quello di un minimo locale.
L’unico modo per essere sicuri di raggiungere il minimo globale sarebbe quello di
fornire all’algoritmo un punto iniziale di ricerca situato all’interno della concavità del
minimo globale.
L’efficienza e la velocità di questi algoritmi si scontra, in definitiva, con la grossa
limitazione di fornire una soluzione finale dipendente dal punto iniziale di ricerca.
Al contrario gli algoritmi che non usano l’informazione derivativa sono molto più
lenti nel convergere verso il minimo della funzione obiettivo, ma sono al contempo
esenti dalle limitazioni appena viste ingenerate proprio dall’uso dell’informazione
derivativa.
Si tratta di una classe di algoritmi di recente sviluppo tra cui spiccano, per novità e
per efficienza, gli algoritmi genetici (l’efficienza è tuttavia, come accennato, in fase di
“validazione”).
Data la non linearità del sistema di equazioni (4.1) l’ipersuperficie d’errore (4.9)
relativa al problema (4.6) o (4.8) può presentare più punti di minimo locale.
Per la determinazione del minimo globale con i classici algoritmi derivativi è
pertanto necessaria la determinazione di un punto iniziale di ricerca all’interno della
54
concavità del minimo globale.
La risoluzione del problema (4.6) o (4.8) si scinde pertanto nella risoluzione di due
sotto-problemi distinti:
1) scegliere un punto iniziale di ricerca interno alla concavità del minimo globale
2) determinare il minimo globale a partire dal punto iniziale
Nel capitolo VII verrà mostrato come si possa risolvere il primo sotto-problema
mediante gli algoritmi genetici ed il secondo mediante una metodologia derivativa
particolarmente efficiente denominata metodo di Gauss-Newton.
Nei capitoli 5 e 6 saranno illustrate invece le rispettive metodologie nel dettaglio.
55
CAPITOLO V
Algoritmi genetici
Premessa
In questo capitolo si descrivono gli algoritmi genetici ed il loro funzionamento.
Parte delle informazioni sono tratte da [Schneider, O. et al.] e da [Poyhonen, H.O. et al.].
5.1 Cenni sulla Teoria dell’Evoluzione
Gli algoritmi genetici si ispirano alla moderna teoria dell’evoluzione. Essa si fonda
sulla teoria darwiniana dell’evoluzione ideata da Charles Darwin e divulgata dallo
stesso nel 1859 nella pubblicazione dal titolo “On the Origin of Species by Means of
Natural Selection”.
In quest’opera egli enunciò una teoria evoluzionistica sull’origine delle specie
viventi basata sui seguenti presupposti:
1) Tutti gli organismi generano più discendenti di quanti in realtà ne possano
sopravvivere.
2) Il gran numero di individui è causa di una continua lotta fra loro per l’esistenza.
3) Gli organismi appartenenti ad una data specie presentano una certa variabilità.
4) Di ogni specie, sopravvivono gli individui migliori o quelli che meglio si
adattano.
5) Gli organismi che sopravvivono trasmettono le loro variazioni ai discendenti.
56
Darwin aveva quindi contemplato la variabilità e l’ereditarietà dei caratteri
della specie fra i presupposti per l’evoluzione, ma non poteva conoscere a fondo i fattori
che le determinavano e i meccanismi in esse implicati in quanto non erano ancora stati
scoperti.
Nel 1901 il botanico olandese Hugo De Vries propose una teoria del processo
evolutivo basato sulle mutazioni ribadendo i concetti di Darwin sulla variabilità degli
individui e sulla sopravvivenza del più adatto, e spiegando l’insorgenza delle variazioni
con le mutazioni e con altre variazioni del patrimonio genetico.
Oggi la biologia è andata oltre nella spiegazione dei meccanismi che governano
l’evoluzione traendo profitto dai recenti progressi scientifici della genetica e della
biochimica per spiegare la variazioni e la trasmissione del patrimonio genetico.
Si può oggi ritenere che la variabilità degli individui si attui attraverso i seguenti
meccanismi:
-mutazioni geniche
-mutazioni cromosomiche
-ricombinazione di geni
Le mutazioni geniche e cromosomiche, insieme alle ricombinazioni geniche,
costituiscono dunque le basi della variazione negli organismi, ma è sempre l’ambiente
(come nella teoria di Darwin) a governare il processo selettivo determinando quali
variazioni siano favorevoli o sfavorevoli alla sopravvivenza dell’individuo.
57
Di conseguenza è l’ambiente a determinare il senso cui si svolge l’evoluzione. La
variabilità dei caratteri, da sola, non è in grado di garantire il processo evolutivo senza la
contemporanea “pressione selettiva” che l’ambiente esercita sulle specie mediante la
“selezione naturale”.
In definitiva quindi l’evoluzione della specie sarebbe frutto, secondo la moderna
teoria evoluzionistica, della contemporanea azione di tre fattori:
1) mutazioni geniche e cromosomiche
2) ricombinazione dei geni
3) selezione naturale
5.2 Introduzione agli algoritmi genetici
Le fondamenta teoriche degli algoritmi genetici sono state gettate da J.H. Holland
in [Holland, J.H.] ed approfondite successivamente da D.E. Goldberg in [Goldberg,
D.E.] e da Z. Michalewicz con [Michalewicz, Z.].
Gli algoritmi genetici (detti anche in modo abbreviato GA dall’anglosassone
genetic algorithms) sono stati sviluppati per risolvere problemi di ottimizzazione non
risolvibili con le tecniche tradizionali (algoritmi derivativi ecc.).
Gli algoritmi genetici si sono dimostrati validi soprattutto per risolvere problemi
caratterizzati da una spiccata “non linearità” che presentano pertanto una ipersuperficie
d’errore con numerosi punti di minimo locale.
A partire da una popolazione iniziale di individui (la popolazione è un insieme di
soluzioni possibili) usualmente scelta in modo casuale nell’iperspazio delle soluzioni
58
possibili, gli algoritmi genetici, mutuando il meccanismo evolutivo delle specie
teorizzato da Charles Darwin (si veda il precedente paragrafo a proposito), generano
popolazioni sempre più evolute, ossia soluzioni sempre più prossime alla soluzione di
ottimo (cioè quella che risolve il problema di ottimizzazione).
5.3 Come funzionano gli algoritmi genetici
Il meccanismo evolutivo è simulato tramite un processo iterativo in cui ogni
iterazione rappresenta una singola generazione della popolazione a partire dalla
popolazione immediatamente precedente.
Ogni generazione, a sua volta, si compone essenzialmente di due fasi denominate:
selezione e riproduzione.
La selezione, il cui nome deriva dalla selezione naturale della teoria darwiniana, è
il meccanismo selettivo che ad ogni successiva generazione determina gli individui più
adatti (in inglese “fittest individuals”) mediante una funzione di adattività (in inglese
“fitness function”) che coincide con la “funzione obiettivo” del problema di
ottimizzazione (si noti sin d’ora che la funzione obiettivo non influenza la struttura
dell’algoritmo genetico).
Gli individui più adatti sono pertanto quelle soluzioni a cui corrisponde un valore
maggiore della funzione obiettivo. Questi individui saranno quelli a cui è concesso di
riprodursi, trasferendo ai figli parte della loro informazione genetica (si vedrà meglio in
seguito come), mentre gli altri saranno scartati.
Utilizzando invece il “gap generazionale”, un numero prestabilito di individui
59
viene trasferito alla generazione successiva senza alterazioni di sorta, ipotizzando quindi
la sopravvivenza di alcuni individui particolarmente “adatti”.
La riproduzione avviene mediante due distinti meccanismi: il crossover (termine
traducibile in “incrocio” ma ormai entrato pienamente in uso anche nella vulgata
italiana) e la mutazione.
Il primo simula la riproduzione “sessuata” di due individui in cui mediante
l’incrocio (crossover) dei cromosomi dei due genitori si ottengono i cromosomi dei figli.
In tal modo, generazione dopo generazione, la popolazione “evolve” verso la “soluzione
ottimale”.
Il secondo invece rappresenta, come facilmente intuibile dal nome stesso, l’evento
aleatorio per il quale si attua l’alterazione di un gene a caso del cromosoma soggetto a
mutazione.
La mutazione è importante almeno quanto e, come si vedrà in seguito, forse più del
crossover perché è grazie alla mutazione che l’algoritmo è in grado di esplorare tutto
l’iperspazio delle soluzioni possibili senza venire intrappolato in un minimo locale come
succedeva invece alle procedure derivative tradizionali esaminate nel capitolo IV.
La probabilità della mutazione è quindi uno dei parametri più influenti ed
interessanti sul funzionamento degli algoritmi genetici.
Un valore troppo potrebbe non consentire all’algoritmo di esplorare in modo
adeguato tutto l’iperspazio delle soluzioni possibili e quindi di determinare minimo
globale.
60
START
Crea popolazione iniziale
Valuta l’adattività
Selezione
per ciascun
cromosoma
Crossover
riproduzione
Mutazione
Sostituisci vecchia generazione
con generazione nuova
no
Condizione
terminale ?
si
END
Fig.5.1 – struttura dell’algoritmo
61
Viceversa, un valore troppo alto della probabilità di mutazione tramuterebbe
l’algoritmo genetico in una mera ricerca casuale con la conseguente perdita di
efficienza.
In figura 5.1 è rappresentata la struttura fondamentale dell’algoritmo genetico
5.4 Alcune definizioni preliminari
Come si è visto innanzi, gli algoritmi lavorano con una popolazione di individui,
ciascuno rappresentante una possibile soluzione.
Il termine “individuo” potrebbe essere causa di fraintesi in quanto gli algoritmi genetici
operano sui cromosomi piuttosto che sugli esseri viventi che i cromosomi codificano.
Pertanto si preferisce parlare di cromosomi invece che di individui. Ogni
cromosoma porta le informazioni per costruire un essere vivente, cioè la soluzione del
problema in questione. Pertanto il cromosoma identifica il genotipo mentre la soluzione
rappresenta il fenotipo.
Un cromosoma è un insieme di elementi, i cosiddetti geni, posti in un certo ordine.
Il posto che ciascun gene occupa all’interno del cromosoma è denominato loci, e lo stato
del gene è detto allele.
In natura ogni gene definisce una o molteplici caratteristiche dell’essere vivente (ad
esempio il sesso o il gruppo sanguigno). Allo stesso modo, negli algoritmi genetici, i
geni definiscono le caratteristiche del fenotipo quale potenziale soluzione del problema
da risolvere.
62
5.5 Il problema della codifica e della rappresentazione
Per assicurare che ogni potenziale soluzione sia presa in considerazione, occorre
un’appropriata “codifica del problema” ed una adeguata “rappresentazione dei
parametri”.
Per codifica del problema si intende la determinazione del set di parametri
capaci di descrivere ogni possibile soluzione del problema in questione.
Ciò risulta abbastanza semplice quando si tratta di risolvere un problema di
ottimizzazione non vincolata, ove il set di parametri coincide semplicemente con le
componenti del vettore X, incognita del problema di ottimizzazione (4.6) o (4.8), ossia
con le incognite scalari del sistema (4.1).
Esiste anche una rappresentazione “floating point” (cioè in virgola mobile) di più
recente implementazione che si è rivelata “numericamente più efficiente”.
Nel seguito si esamineranno più in dettaglio entrambe le rappresentazioni.
5.5.1 Rappresentazione binaria
La rappresentazione dei parametri nella forma originaria degli algoritmi
genetici, proposta da Holland nel 1975, è la rappresentazione binaria.
In tal caso i geni sono costituiti proprio dai bit della stringa binaria che
rappresenta il set di parametri, mentre la stringa binaria completa costituisce il
cromosoma.
Nel caso in studio occorre effettuare la decodifica binaria del vettore variabile X,
nel quale le componenti sono le incognite del sistema (4.1), come si è visto nel paragrafo
63
precedente analizzando il problema di rappresentazione.
Dopo aver risolto il problema della codifica, il primo passo per effettuare la
rappresentazione binaria consiste nell’assegnare un certo numero mi di bit della
stringa binaria “cromosoma” alla decodifica di ciascuna componente xi del vettore X
come in figura 5.2 .
Fig. 5.2 – Assegnazione dei bit
Poiché ogni stringa binaria di n bit individua 2n possibili combinazioni, ne consegue che
la stessa stringa rappresenta biunivocamente un numero intero compreso tra 0 e 2n –1 .
Per poter decodificare la stringa binaria nel vettore X è necessario quindi, dopo
aver assegnato a ciascuna componente xi un numero di bit mi, convertire previamente xi
in un numero intero compreso tra 0 e 2mi – 1.
Per passare poi dai valori interi ai valori effetivi (cioè in virgola mobile) delle xi
occorre definire per ciascuna di esse un intervallo di variabilità.
Detti xi,min e xi,max rispettivamente gli estremi inferiori e superiori dell’intervallo di
variabilità di ciascuna xi, la decodifica del segmento di stringa binaria (di mi bit) relativa
alla i-esima componente sarà data dalle espressioni:
64
mi
vi =
∑b
j =1
(i)
j
xi = xi,min +
⋅ 2 j−1
(5.1)
vi
⋅ (xi,max − xi,min)
2m i − 1
(5.2)
dove:
(i)
bj è il j-esimo bit dell’i-esima componente
vi rappresenta la decodifica intera del segmento di stringa binaria e la forma usata per la
decodifica è quella più comune detta “decodifica con ordine normale”.
Esiste infatti anche un’altra forma denominata “decodifica con ordine inverso”:
mi
vi =
∑b
j =1
(i )
j
⋅ 2 mi − j−1
(5.3)
che ha l’intento di assicurare che i bit più significativi di due parametri adiacenti siano
vicini fra loro (ciò è ovviamente possibile quando i parametri sono due) come
rappresentato in figura 5.3 .
Fig. 5.3 – decodifica binaria con ordine inverso
E’ chiaro quindi che la precisione massima con cui è possibile rappresentare xi è
direttamente proporzionale al numero di bit mi assegnato a ciascuna componente e
65
inversamente proporzionale all’ampiezza dell’intervallo di variabilità (ximax - ximin).
Difatti la precisione è ottenibile mediante la seguente relazione:
ε = (xi,max − xi,min) / 2mi
(5.4)
In definitiva il numero totale di bit componenti il cromosoma (ovvero la stringa
binaria “complessiva”) risulta essere:
N+L
lunghezza cromosoma =
∑m
i =1
(5.5)
i
Di fatto la rappresentazione binaria non è altro che una discretizzazione del
dominio così come lo step di ricerca delle procedure tradizionali, per cui, se si desidera
un’elevata precisione per la soluzione, occorre “infittire” la discretizzazione e viceversa.
5.5.2 Rappresentazione floating point
A partire dalla formulazione originaria degli algoritmi genetici di Holland il
problema della rappresentazione è stato oggetto di molta investigazione.
Michalewicz ha infatti mostrato, in [Michalewicz, Z.], come rappresentazioni più
“naturali” del problema siano più efficienti e producano soluzioni migliori.
L’attenzione di Michalewicz si è concentrata soprattutto sulla rappresentazione
cosiddetta floating point (ossia in virgola mobile) dove i geni di ciascun cromosoma,
anziché bit, sono numeri in virgola mobile vi.
In tal modo le componenti xi del vettore variabile X non necessitano di alcuna
66
decodifica ma rappresentano esse stesse i geni vi del cromosoma:
xi = vi
(5.6)
Un’altra possibilità, al posto di porre direttamente xi = vi , è quella di definire un
intervallo di variabilità per i parametri xi e vi (analogamente a quanto visto per la
rappresentazione binaria), imponendo che xi,min ≤ xi ≤ xi,max e vi,min ≤ vi ≤ vi,max,
dopodiché si definisce la seguente relazione:
xi = xi,min +
vi
⋅ ( xi,max − xi,min)
vi , max − vi , min
(5.7)
Il vantaggio di quest’ultimo modo di determinare xi sta nel fatto che l’algoritmo
genetico non abbisogna più della conoscenza degli estremi dell’intervallo di variabilità
xi,min e xi,max e pertanto, invece di dover maneggiare due vettori contenenti i limiti
inferiori e superiori di tutte le componenti xi, l’algoritmo usa solo due costanti vi,min e
vi,max poste pari a 0 e 1 rispettivamente.
Per ogni parametro xi è necessario quindi un gene vi; pertanto il cromosoma
consiste in un vettore di numeri in virgola mobile V = [ v1 …..vN+L] delle stesse
dimensioni di X.
La precisione non dipende più quindi dal numero di bit, ma dalla precisione interna
del computer in uso, oltre che, nel caso della rappresentazione (5.7), dall’ampiezza
dell’intervallo di variabilità delle xi (in modo inversamente proporzionale).
Per ottenere con la rappresentazione binaria una precisione equivalente a quella
67
della rappresentazione floating-point (riferita agli elaboratori comunemente in uso)
occorre un numero m di geni (pari alla lunghezza delle stringhe binarie) superiore a
30 che diventano N⋅m nel caso di problemi pluridimensionali (quello in corso di studio è
un problema ad N+L dimensioni) con grossi problemi di velocità e di occupazione di
memoria.
Mentre, come si è appena visto, nella rappresentazione floating-point il numero di
geni è pari semplicemente al numero N di dimensioni del problema.
Sempre Michalewicz ha effettuato estensive sperimentazioni confrontando le
prestazioni degli algoritmi genetici basati sui due tipi di rappresentazione fin qui
descritti, ed ha mostrato come quelli operanti con la rappresentazione floating-point
siano di un ordine di grandezza più efficienti, in termini di tempi macchina, rispetto a
quelli operanti con rappresentazione binaria.
Ci si sente di aggiungere, anche se di questo se ne parlerà più estensivamente nel
capitolo VII, che il problema della velocità e dei tempi di esecuzione è, per gli algoritmi
genetici, fortemente condizionante (a differenza di quanto avviene usualmente con altri
tipi di algoritmi per i quali la velocità è solo un problema secondario).
Alla luce di quanto sperimentato durante questo lavoro, si è riscontrato infatti che, a
fronte di una indubbia efficienza di calcolo e versatilità d’impiego, tali algoritmi
risultano particolarmente lenti, con tempi di calcolo che, per problemi complessi,
facilmente possono diventare giorni, settimane e mesi.
Non è pertanto d’importanza secondaria la scelta del tipo di rappresentazione,
sebbene sui tempi di elaborazione incidano anche altri fattori non meno rilevanti quali il
68
linguaggio scelto per implementare il codice, il tipo di CPU e così via...
5.6 Funzione di adattività
La funzione di adattività (dall’inglese “fitness function”), come già visto nel
paragrafo 5.3, è il motore del processo selettivo dell’algoritmo genetico in quanto è in
base ad essa che vengono selezionati gli individui, cioè i cromosomi più adatti.
Nei problemi di ottimizzazione come il nostro essa coincide con la funzione
obiettivo dell’ottimizzazione a meno del segno in quanto l’algoritmo genetico, per sua
natura, evolve verso i cromosomi (gli individui) più “adatti”, cioè quelli che
massimizzano la funzione di adattività.
Pertanto l’algoritmo genetico è in grado di risolvere solo problemi di
massimizzazione.
Il segno della funzione di adattività è quindi lo stesso della funzione obiettivo per i
problemi di massimizzazione; viceversa, per risolvere problemi di minimizzazione,
come appunto il caso del problema in studio (4.6) o (4.8), la funzione obiettivo andrà
cambiata di segno prima di “passarla” all’algoritmo genetico come funzione di
adattività.
5.7 Selezione
Come si è accennato nel paragrafo 5.3 non a tutti i cromosmi (individui) di una
generazione è concessa la facoltà di riprodursi.
Solo un certo numero
prestabilito di cromosomi viene selezionato per la
69
riproduzione, mutuando così la teoria darwiniana della selezione naturale, ovvero della
sopravvivenza del più adatto.
Per ogni generazione, infatti, i cromosomi che
si riprodurranno vengono
selezionati dall’algoritmo in modo casuale con una probabilità di scelta che è funzione
della “adattività del cromosoma” (questa determinabile mediante la funzione di
adattività di cui si è detto poc’anzi).
In realtà sono stati proposti numerosi metodi per assegnare la probabilità di scelta
in funzione della adattività del cromosoma, detti anche “metodi selettivi”, ma due sono
i metodi sinora più utilizzati, e quindi più “collaudati” dalla sperimentazione.
Si tratta dei metodi denominati rispettivamente: standard roulette e fitness
ranking.
Il metodo della standard roulette, introdotto ed approfondito da Michalewicz,
vuole simulare, come il nome stesso suggerisce, una “roulette virtuale” che abbia un
numero di “slot” pari al numero complessivo di cromosomi (ossia quelli su cui si
effettua la selezione).
L’ampiezza degli slot della “roulette virtuale” non è costante, bensì è legata in
modo direttamente proporzionale alla adattività del cromosoma.
I cromosomi che si riprodurranno vengono quindi selezionati effettuando N “giri di
roulette”, dove N rappresenta il numero prestabilito di “cromosomi genitori”
(ovviamente N deve essere un numero pari in quanto, come si vedrà meglio nel seguito
del capitolo, la riproduzione è di tipo “sessuata”).
Si tratta in definitiva di un metodo che assegna alla probabilità di scelta di ogni
70
cromosoma un valore direttamente proporzionale alla sua adattività, ovvero:
pi =
F(X i )
(5.8)
Npop
∑ F(X )
i =1
i
dove:
X è il cromosoma
F è la funzione di adattività
Npop è il numero complessivo di cromomi
Questo metodo, sebbene sia il più utilizzato, presenta talvolta l’inconveniente della
cosiddetta “convergenza prematura”.
Succede infatti che cromosomi “particolarmente adatti” provochino l’esclusione
degli altri dominando, in tal modo, il processo di generazione e causando la convergenza
dell’algoritmo ad un minimo locale (sebbene si sia sottolineato che gli algoritmi
genetici risolvono esclusivamente problemi di massimizzazione, d’ora innanzi, poiché si
è cambiato il segno della funzione obiettivo, si considereranno anch’essi solutori del
problema di minimizzazione (4.6) o (4.8) ).
Per sopperire a questo problema è stato introdotto il metodo del fitness ranking
(traducibile approssimativamente in “graduazione in base all’adattività”).
Per prima cosa si effettua un riordinamento dei cromosomi della generazione
attuale in base alla loro adattività determinando in tal modo un rank (cioè “grado” o
“posizione in graduatoria”) per ciascuno di essi.
71
Dopodiché in base al rank assunto dai cromosomi, cioè alla loro “posizione in
graduatoria”, si ricalcola per essi un nuovo valore di adattività indipendente dalla
funzione obiettivo.
In base ai nuovi valori di adattività saranno selezionati quindi i cromosomi più
adatti con il metodo, precedentemente illustrato, della standard roulette.
Riassegnando l’adattività dei singoli cromosomi solamente in funzione del rank, è
possibile sopprimere eventuali “eccessi di adattività” con i conseguenti problemi di
“convergenza prematura” succitati.
Una formulazione per la determinazione della probabilità Pi di estrarre ciascun
individuo dopo aver effettuato la graduatoria (ranking), è quella proposta in [Joines, J.A.
et al.], detto anche metodo del “ranking a normalizzazione geometrica” in quanto
basato sulla distribuzione geometrica normalizzata, per cui risulta:
Pi = q′ (1 − q)
r–1
(5.9)
dove:
r = rank dell’individuo (1 è il migliore)
q = probabilità di selezionare l’individuo migliore
P = dimensione della popolazione (cioè il numero di individui)
q′ =
q
1 - (1 - q) P
In alternativa alla riassegnazione delle probabilità e successiva selezione con la
standard roulette esiste la possibilità di selezionare direttamente i cromosomi “ordinati”
mediante le funzioni di selezione che, in sostanza, assolvono entrambi i compiti.
72
Qui di seguito si riporta la funzione di selezione denominata biased ranking, che è
parsa la più interessante dal punto di vista teorico e applicativo nonché la più flessibile e
versatile:
i =
b - b 2 − 4 ⋅ (b − 1) ⋅ random
Npop ⋅
2 ⋅ ( b −1)
(5.10)
dove:
i è il rank del cromosoma selezionato (ipotizzando di aver fatto un ranking o graduatoria
in cui i primi elementi sono i più adatti e gli ultimi i meno adatti)
b è il parametro di bias ( 1< b ≤ 2 ) che rappresenta il grado di “vantaggio” dei
cromosomi più adatti rispetto a quelli meno adatti
Fig. 5.3 – funzione selezione “biased ranking”
73
random è un numero casuale compreso tra 0 e 1 con probabilità uniformemente
distribuita nell’intervallo
La funzione di selezione è detta “biased” (traducibile in “non omogenea” ) in
quanto la probabilità di selezione diminuisce per i cromosomi meno adatti a vantaggio
dei più adatti mediante, appunto, l’introduzione del parametro di “bias” (cioè di
“disomogeneità”).
Per valori di bias prossimi a 1 la funzione di selezione degenera in una selezione
casuale con stessa probabilità di scelta per tutti i cromosomi; mentre per valori di b
prossimi a 2 è molto improbabile che i cromosomi meno adatti vengano selezionati.
In definitiva la selezione, permettendo di riprodursi solo agli individui più adatti, fa
sì che, ad ogni generazione, aumenti il valore medio dell’adattività dei cromosomi e
quindi diminuisca il valore della funzione obiettivo del problema (4.6) o (4.8) (essendo
uguale in modulo, ma di segno opposto alla funzione di adattività), per cui si può
assimilare il processo evolutivo ad una discesa dei cromosomi sulla ipersuperficie di
errore analogamente a quanto visto per le procedure derivative.
5.8 Riproduzione
Come si è già introdotto nel paragrafo 5.3, la fase della riproduzione è quella in cui
l’informazione genetica di una generazione viene trasmessa alla generazione successiva.
Si entrerà ora nel merito del funzionamento dei due meccanismi selettivi (anche
denominati “operatori genetici”) alla base della riproduzione: il crossover e la
74
mutazione.
Poiché i due operatori genetici differiscono molto a seconda che si adotti la
rappresentazione binaria o floating point, si è deciso di descriverli separatamente nei due
tipi di rappresentazione.
5.8.1 Operatori genetici nella rappresentazione binaria
5.8.1.1 Crossover binario
Compito dell’operatore crossover è quello di “simulare” la riproduzione sessuale
di due individui nella quale, a partire dai cromosomi dei genitori si ottengono i
cromosomi del figli attraverso un particolare “mescolamento” con successiva
“ricomposizione” delle coppie di cromosomi originali detta meiosi.
In realtà il crossover non è che uno dei vari meccanismi di incrocio cromosomico
che avvengono in natura durante il processo meiotico, tuttavia è stato l’unico mutuato
dagli algoritmi genetici in quanto, tra i vari meccanismi possibili, è quello più
responsabile della ”variabilità” del codice genetico, ossia è quello che causa maggiori
alterazioni cromosomiche.
Il crossover difatti consiste nella rottura in un punto a caso delle due catene
cromosomiche originarie (nella fattispecie della rappresentazione binaria le catene
costituenti i cromosomi sono stringhe binarie) che si spezzano così in quattro segmenti.
I segmenti iniziali, dei due cromosomi originari spezzati, si ricombinano ciascuno
con il segmento finale dell’altro cromosoma dando luce così a due nuovi cromosomi
“figli” del tutto distinti da quelli originari “genitori”.
75
cromosoma genitore 1
cromosoma genitore 2
1
0
1
0
0
1
0
1
0
0
1
1
1
0
1
0
1
0
1
1
1
0
1
0
0
0
1
0
0
1
0
1
cromosoma figlio 1
cromosoma figlio2
Fig. 5.4 – Crossover binario (puntuale)
La figura 5.4, riferita ai cromosomi intesi come stringhe binarie, può aiutare a
chiarire il funzionamento del crossover nella rappresentazione binaria.
Come si è appena visto il crossover opera su coppie di cromosomi, pertanto
occorrerà aver cura che dal processo di selezione esca sempre un numero pari di
individui adatti per la riproduzione, in modo da poter suddividerli in coppie.
Quello appena descritto è il crossover binario “classico”, denominato anche
crossover puntuale (dall’anglosassone “single point crossover”) per distinguerlo dal
crossover uniforme, di più recente ideazione.
Il crossover uniforme nasce dall’idea di rendere ininfluente l’ordinamento dei
geni all’interno del cromosoma (problema di cui si è accennato parlando della
decodifica binaria con ordine inverso), rendendo in questo modo più “robusto” l’intero
algoritmo.
76
cromosoma genitore 1
cromosoma figlio 1
1
0
0
1
0
0
1
1
1
0
1
1
0
0
1
0
0
0
1
1
1
1
1
0
0
0
0
1
0
1
1
1
cromosoma genitore 2
cromosoma figlio2
Fig. 5.5 – Crossover binario uniforme
Per ogni coppia di cromosomi “genitori” viene scelta una “maschera di geni” in
modo aleatorio, ossia vengono scelte casualmente le posizioni dei geni che saranno
“scambiati” tra i due cromosomi genitori dando origine ai due nuovi cromosomi figli (si
veda in proposito la fig.5.5).
Il numero di geni da scambiare può essere anch’esso una variabile aleatoria oppure
un parametro predeterminato.
5.8.1.2 Mutazione binaria
Compito dell’operatore “mutazione” è invece, come lo stesso termine fa intendere,
quello di simulare la mutazione genica di un cromosoma, cioè la mutazione casuale di
un gene.
Poiché nella rappresentazione binaria i geni dei cromosomi sono costituiti dai bit
della stringa binaria, ne consegue che la mutazione binaria consiste nella variazione di
un bit a caso della stringa (si veda fig.5.6).
77
cromosoma genitore
1
0
1
0
0
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
cromosoma figlio
Fig. 5.5 – Mutazione binaria
5.8.2 Operatori genetici nella rappresentazione floating-point
5.8.2.1 Crossover floating-point
Michalewicz ha proposto, sempre in [Michalewicz, Z.], tre differenti operatori
crossover per la rappresentazione floating-point (ideata da lui stesso).
Si tratta del crossover semplice, aritmetico ed euristico.
Il crossover semplice è analogo al crossover puntuale della rappresentazione
binaria con la sola restrizione che il punto in cui si spezzano i cromosomi genitori sia
compreso tra i geni vi (che sono stavolta, come si ricorderà, numeri in virgola mobile),
cioè che i singoli geni vi vengano ricombinati dal crossover ma non modificati nel loro
valore.
Il crossover aritmetico combina i due cromosomi genitori mediante una
interpolazione
dei cromosomi
genitori (si ricordi che
i cromosomi
nella
rappresentazione floating-point sono vettori che coincidono con i vettori soluzioni
possibili del problema di ottimizzazione X), ossia di una particolare combinazione
lineare degli stessi.
78
Detti p1 e p2 i vettori cromosomi “genitori”, i vettori cromosomi “figli” c1 e c2 sono
determinati nel modo seguente:
c1 = a ⋅ p2 + (1 − a) ⋅ p1
(5.11)
c2 = a ⋅ p1 + (1 − a) ⋅ p2
(5.12)
dove a è un valore casuale compreso in [0,1].
Trattandosi di una interpolazione si può essere sicuri che se i geni vi dei cromosomi
genitori appartengono agli intervalli di variabilità [vi,min , vi,max] apparterranno
sicuramente a tali intervalli anche i geni dei cromosomi figli.
Il crossover euristico è invece una estrapolazione dei cromosomi genitori nella
direzione del genitore più adatto (è difatti l’unico tra i gli operatori genetici a far uso
dell’informazione “adattiva”).
I cromosomi “figli” c1 e c2 sono determinati come segue:
c1 = best + a ⋅ (best − worst)
(5.13)
c2 = best
(5.14)
dove :
a è un valore casuale compreso in [0,1]
best e worst sono rispettivamente il più adatto ed il meno adatto tra i due cromosomi
“genitori”
L’operatore crossover euristico ha però l’inconveniente di non poter assicurare, a
differenza del crossover aritmetico, che i geni vi del cromosoma figlio c1 appartengano
agli intervalli di variabilità [vi,min , vi,max].
Pertanto è necessario porre un ciclo di controllo di “validità” del cromosoma figlio
79
in serie all’operatore genetico.
5.8.2.2 Mutazione floating-point
In modo analogo alla mutazione binaria l’operatore mutazione floating-point
seleziona casualmente un gene e lo altera.
Differentemente dalla mutazione binaria però, in cui l’unica alterazione possibile
del bit consiste nel modificarlo da 1 a 0 o da 0 a 1, per l’alterazione di un numero in
virgola mobile esistono infinite possibilità.
Fig. 5.6 – funzione ∆(t, y) per tre diversi valori di t/T con b = 1.5
80
Sono stati introdotti quindi da Michalewicz gli operatori: mutazione uniforme,
mutazione non uniforme, mutazione multi-non uniforme e mutazione di confine.
La mutazione uniforme sceglie il nuovo valore vi’, del gene selezionato per la
mutazione vi, in modo casuale all’interno dell’intervallo di variabilità [vi,min , vi,max] dello
stesso
gene,
con probabilità
di scelta
uniformemente
distribuita
all’interno
dell’intervallo.
Diversamente, la mutazione non uniforme, usa un meccanismo più intelligente
per determinare il nuovo valore del gene vi’, ossia:
vi’ = vi + ∆(t, vi,max – vi)
se r1 < 0,5
(5.15)
vi’ = vi + ∆(t, vi – vi,min)
se r2 ≥ 0,5
(5.16)
con
 t 
 1− 

 T

1
r
2
−
∆(t, y) = y ⋅ 

b



(5.17)
dove:
t è il numero della corrente generazione
T è il massimo numero di generazioni previste per l’algoritmo
b è un parametro di “bias”, cioè il grado di non uniformità
r1 e r2 sono due numeri casuali compresi in [0,1] , con probabilità uniformemente
distribuita nell’intervallo
In figura 5.6 è mostrata la funzione ∆(t, y) per tre diversi valori di t/T con b = 1.5.
Una variante della mutazione non uniforme è l’operatore mutazione multi-non
uniforme che applica contemporaneamente la mutazione non uniforme a tutti i geni del
81
cromosoma.
La mutazione di confine seleziona invece il gene da mutare vi e ne altera il valore
in vi’ nel modo seguente:
vi’ = vi,min
se r < 0,5
(5.18)
vi’ = vi,max
se r ≥ 0,5
(5.19)
dove r è un numero casuale compreso in [0,1] , con probabilità uniformemente
distribuita nell’intervallo
5.9 Parametri degli algoritmi genetici
I seguenti parametri caratterizzano la “performance” degli algoritmi genetici:
• Dimensione della popolazione:
La dimensione della popolazione è il numero di individui che compone la
popolazione. Una piccola popolazione di individui può creare problemi di convergenza
prematura poiché è probabile che essa converga più velocemente.
Al contrario, una grande popolazione richiede maggiore sforzo computazionale in
quanto aumentano il numero di operazioni che l’algoritmo deve effettuare ogni
generazione su ciascun cromosoma della popolazione.
• Lunghezza del cromosoma:
La lunghezza del cromosoma rappresenta il numero di geni.
Per la
rappresentazione floating-point esso è pari semplicemente al numero di componenti del
82
vettore soluzione, ossia al numero totale di incognite scalari del problema di
ottimizzazione (4.6) o (4.8).
Mentre, utilizzando la rappresentazione binaria, il numero di geni è in funzione
della precisione richiesta per la soluzione finale tramite la relazione (5.4).
• Gap generazionale:
Il gap generazionale rappresenta la percentuale dei cromosomi che sono trasferiti
alla generazione successiva senza alcuna modifica.
In tal modo, ad uno o a più individui scelti tra i più “adatti” di ogni generazione si
da la possibilità non solo di riprodursi, ma anche di continuare a “sopravvivere” nella
generazione successiva, in modo da conservare intatte le informazioni genetiche degli
cromosomi più adatti.
Con un gap generazionale del 100% la riproduzione è sospesa e solo la selezione
causa un miglioramento della adattività media della generazione.
In tal modo, nessuna nuova informazione viene introdotta e l’algoritmo potrebbe
trovare una soluzione solo qualora questa fosse già presente nella popolazione iniziale (il
che è altamente improbabile).
Per questo motivo si sceglie di solito un piccolo gap generazionale.
• Elitismo:
L’elitismo (dall’anglosassone “elitism”) è un’opzione dell’algoritmo genetico
mediante il quale, nella riproduzione dei cromosomi, soltanto i “figli” che abbiano una
“adattività” maggiore dei “genitori” passano alla generazione successiva.
Se, per esempio, uno dei due “figli” è meno ”adatto” di entrambi i “genitori”, allora
83
passa alla
generazione successiva l’altro “figlio” insieme al più “adatto” dei due
“genitori”.
L’elitismo assicura inoltre che i membri migliori della generazione corrente
sopravvivano nella generazione successiva svolgendo, in questo modo, una funzione
analoga al gap generazionale.
• Probabilità del crossover:
La probabilità del crossover rappresenta la probabilità che a ciascuna coppia di
cromosomi selezionati venga applicato l’operatore crossover.
Con una probabilità di crossover pari a 0% l’operatore crossover è sospeso e
pertanto la riproduzione è affidata al solo operatore mutazione, mentre con una
probabilità del 100% il crossover viene applicato a tutte le coppie di cromosomi
selezionati.
• Probabilità della mutazione:
La probabilità della mutazione rappresenta, invece, la probabilità che un singolo
cromosoma sia alterato dall’operatore mutazione.
Questo parametro, come si è già accennato all’inizio del presente capitolo, è di
fondamentale importanza, forse più di tutti gli altri, per il buon esito dell’algoritmo
genetico in quanto ne condiziona fortemente la convergenza.
In proposito si veda anche la conclusione del presente capitolo.
• Condizione terminale:
Dopo ogni generazione l’algoritmo verifica se la condizione terminale sia stata
raggiunta o meno, ed in caso che la verifica abbia dato esito negativo l’evoluzione
84
genetica procede con la generazione successiva, altrimenti l’algoritmo si interrompe.
La condizione terminale consta in effetti di due verifiche distinte. La prima verifica
effettua semplicemente un confronto tra l’attuale numero di generazioni ed il massimo
numero di generazioni.
La seconda, invece, è una verifica di convergenza vera e propria, ossia si valuta la
convergenza come somma delle deviazioni tra gli individui della popolazione, in
quanto nell’algoritmo genetico la popolazione, mentre evolve verso la soluzione
ottimale, tende ad uniformarsi sempre più.
Un’altra verifica di convergenza possibile è il mancato miglioramento della
soluzione per un certo numero di generazioni.
La convergenza può essere infine valutata in modo esplicito qualora sia noto a
priori il valore che la funzione obiettivo (cioè la funzione di adattività dell’algoritmo
genetico) assume nel punto di massimo.
In tal caso si valuta lo scarto tra detto valore massimo ed il valore dell’adattività
del cromosoma “più adatto” della popolazione attuale.
Il problema di ottimizzazione (4.6) o (4.8) oggetto del presente studio è proprio uno
di quei problemi di ottimizzazione per i quali è dato di conoscere a priori il valore del
massimo, che è uguale a zero sia per il problema (4.6) sia per il problema (4.8).
Pertanto nel caso specifico il controllo sulla convergenza è stato effettuato
mediante la valutazione dello scarto, imponendo per questo un determinato valore di
soglia, mentre non si è ritenuto opportuno utilizzare la condizione del numero di
generazioni perché non garantisce in alcun modo la convergenza.
85
Conclusione
Ogni algoritmo di ottimizzazione ingloba in sé due opposte tecniche di ricerca della
soluzione, dosate in un certo rapporto, e definibili rispettivamente: esplorazione e
approfondimento.
L’esplorazione assicura che l’algoritmo investighi nuove aree dell’iperspazio delle
soluzioni possibili e non si concentri esclusivamente su una parte di questo.
L’approfondimento, invece, mette a frutto la conoscenza già acquisita per
progredire nella ricerca della soluzione.
I due casi estremi, nei quali viene adoperata solo una delle due tecniche, sono gli
algoritmi di ricerca casuale da una parte, che effettuano una ricerca di tipo
esclusivamente “esplorativo”, e gli algoritmi derivativi o di “discesa” dall’altra, che
viceversa operano solo una ricerca di “approfondimento” (entrambe le tipologie di
algoritmo sono state esaminate nel capitolo precedente).
Secondo l’opinione del loro ideatore J.H. Holland, gli algoritmi genetici avrebbero
proprio la caratteristica di combinare in modo ottimale entrambe le tecniche di ricerca.
Sia l’esplorazione sia l’approfondimento, negli algoritmi genetici, procedono
“contemporaneamente” e sono svolte rispettivamente dagli operatori mutazione e
crossover.
E’ per questo motivo che è così importante, ai fini di una convergenza ottimale, il
valore che si impone alla probabilità di mutazione.
E’ chiaro, infatti, che una probabilità di mutazione troppo bassa priverebbe
l’algoritmo della sua componente “esplorativa” forzando la popolazione a convergere
86
verso un minimo locale e non un minimo globale (questo tipo di convergenza è detto
appunto “convergenza prematura”).
Viceversa risulta altrettanto chiaro come una probabilità di mutazione troppo
elevata farebbe degenerare l’algoritmo genetico in una “ricerca casuale”, ovvero di tipo
puramente “esplorativo”, privandolo della capacità di “approfondimento”.
In tal caso l’algoritmo non sarebbe più in grado di “convergere” verso la soluzione
di massimo globale pur essendo in grado di “avvicinarvisi” mediante una estensiva
ricerca “esplorativa”.
La sperimentazione effettuata finora sugli algoritmi genetici ha portato a definire
dei valori ottimali per la probabilità di mutazione a seconda del tipo di problema da
risolvere.
In generale sono consigliati valori compresi nell’intervallo [0,02;0,10].
87
CAPITOLO VI
Metodi classici di ottimizzazione non vincolata:
algoritmi di Newton, quasi-Newton e Gauss-Newton
Premessa
Nel capitolo V si è riportata l’opinione di Holland circa la capacità degli algoritmi
genetici di dosare in maniera ottimale le due tecniche di ricerca esplorativa e di
approfondimento.
Purtuttavia, alla luce della sperimentazione numerica svolta durante questo lavoro
per applicare gli algoritmi genetici alla risoluzione del problema (4.6) o (4.8), ed in base
all’opinione riscontrata nelle pubblicazioni [Houck, C.R. et al.] e [Schneider, O. et al.], è
emerso un evidente fenomeno di rallentamento progressivo della convergenza,
definito problema di “slow finish”.
Il rallentamento risulta talmente sensibile da richiedere, per ottenere soluzioni
particolarmente accurate, tempi di elaborazione dell’ordine delle settimane e dei mesi.
Per risolvere in modo “efficiente” il problema (4.6) o (4.8) si è pertanto pensato di
collegare gli algoritmi genetici “in cascata” ad algoritmi di ottimizzazione
“tradizionali”, ai quali è stata fatta menzione nel capitolo IV, quali il metodo di Cauchy
o metodo steepest descent, il metodo di Newton, i metodi quasi-Newton e infine le
metodologie per risolvere i “minimi quadrati non lineari”: il metodo di GaussNewton ed il metodo di Levenberg-Marquardt.
88
Si tratta di algoritmi molto efficienti (ossia molto veloci) che hanno, però, il grosso
svantaggio di fornire una soluzione finale dipendente dal punto iniziale della ricerca.
Come è stato accennato alla fine del capitolo IV e si approfondirà nel capitolo VII,
agli algoritmi genetici si è riservato il compito di fornire un “buon” punto iniziale, cioè
un punto dell’ipersuperficie di errore interno alla concavità del minimo globale.
Spetta poi all’algoritmo “tradizionale” il compito di convergere “efficientemente”
dal punto dato al punto di minimo globale discendendo “rapidamente” il pendio
dell’ipersuperficie fino al “fondo”. E’ per questo motivo che questi metodi sono
denominati algoritmi di discesa.
In questo capitolo si illustrerà il funzionamento teorico di questi metodi cercando di
porre in risalto i pregi e i difetti di ciascuno, in relazione al tipo di problema che si
desidera risolvere.
A fine capitolo si è riportato anche il metodo di Newton-Rapshon, sebbene esso
non sia propriamente un metodo di ottimizzazione, per poter confrontarne le
caratteristiche con quelle degli altri metodi esposti.
Questo metodo è infatti uno dei più utilizzati, a livello internazionale, per risolvere
il sistema misto di equazioni (4.1) (si veda in proposito [[Curto, G. et al.]).
6.1 Metodi classici di ottimizzazione
Nel capitolo IV si è delineata la netta distinzione esistente tra i metodi di
ottimizzazione che utilizzano l’informazione derivativa (attraverso il calcolo delle
derivate di vario ordine) ed i metodi che non la utilizzano.
89
Si è detto che quest’ultima classe di metodologie è alquanto più recente della prima
per cui vi appartengono ancora un esiguo numero di algoritmi tra i quali gli algoritmi
genetici di cui si è ampiamente discusso nel capitolo precedente.
In questo capitolo si analizzeranno invece gli algoritmi del primo tipo, ossia quelli
che si avvantaggiano dell’informazione derivativa.
Tra tutti, si è scelto di focalizzare l’attenzione anzitutto sul metodo di Cauchy e
sul metodo di Newton, universalmente noti per la loro “efficienza”, “velocità” e
“robustezza”, e
quindi, proseguendo, sui cosiddetti metodi quasi-Newton, Gauss-
Newton e Levenberg-Marquardt che rappresentano differenti “stadi evolutivi”
dell’originario metodo di Newton.
Si fa presente che per la trattazione di questi argomenti è stato fatto riferimento alle
pubblicazioni [Comincioli] e [Branch et al.].
6.2 Metodo di Cauchy (o metodo “steepest-descent”)
Per prima cosa si ipotizza per semplicità che, d’ora innanzi, i problemi da risolvere
siano problemi di minimizzazione multidimensionale (nel caso della massimizzazione
basterà cambiare il segno della funzione obiettivo), ossia:
min
f(X)
(6.1)
X ∈ ℜN
Il metodo della discesa più ripida (“steepest descent”), proposto da Cauchy nel
1845, è un metodo del gradiente, in quanto tiene conto solo delle derivate di
prim’ordine.
90
Inoltre, come tutti i metodi che usano l’informazione derivativa, è un metodo
iterativo, nel senso che genera, a partire da una stima iniziale x1, una successione di
approssimazioni x2, x3,…, ognuna della quali è ottenuta mediante la risoluzione di un
problema di minimo unidimensionale.
Più precisamente, nel metodo steepest descent la successione { xk} è definita, per
k = 1,2,…, nel modo seguente:
xk+1 = xk+1 − λk* gk
(6.2)
dove:
gk è il gradiente ∇f (x) calcolato nel punto xk , che rappresenta la direzione della ricerca
(in realtà la direzione di ricerca, trattandosi di un problema di minimizzazione, ha verso
opposto rispetto al gradiente, per cui la vera direzione di ricerca è −gk)
λk* è la variabile reale che rappresenta il passo della ricerca e si determina risolvendo
separatamente un problema di minimo unidimensionale detto “ricerca di linea” (come
si vedrà in seguito questo aspetto è comune a tutte le metodologie che si affronterà e sarà
analizzato nel paragrafo 6.5, mentre, ciò che varia da caso a caso è il modo di
determinare la direzione di ricerca) determinando il minimo della
funzione:
λ → f (xk+1 − λk gk), ossia al minimo della funzione f (x) lungo la direzione −gk a partire
da xk.
Alternativamente si possono, più semplicemente, assegnare “euristicamente” a λk*
una successione di valori avente le seguenti caratteristiche:
91
λk* < 1
λk* < λk-1*
Nel metodo steepest descent, quindi, si assume come direzione di ricerca s quella
opposta al gradiente, la quale rappresenta “localmente”, cioè in un intorno opportuno del
punto xk, la direzione di “massima pendenza” della superficie, ossia la direzione lungo
la quale si ha la variazione massima della funzione.
Sotto opportune ipotesi sulla funzione f (xk), è possibile dimostrare che la
successione { xk} generata mediante la (6.2) converge ad un punto x* in cui si annulla il
gradiente, e quindi, ad un punto di minimo locale.
Fig. 6.1 – Rappresentazione tridimensionale della funzione di Rosenbrock
92
Tuttavia la convergenza del metodo è di tipo lineare e può risultare, in effetti,
estremamente inefficiente, nei casi in cui la funzione da minimizzare presenta degli
avvallamenti lunghi e stretti.
E’ questo il caso della funzione di Rosenbrock:
f (x) = 100 (x1 − x22 ) 2 + (1 − x1)2
comunemente denominata “funzione banana” per le sua forma caratteristica, essa è
molto utilizzata come funzione “test” per gli algoritmi di minimizzazione in virtù del
pendio particolarmente ripido.
Essa rappresenta infatti una valle con pareti molto ripide, il cui fondo, a forma di U,
segue approssimativamente la curva parabolica x2 = x12.
La funzione presenta un minimo nel punto x = [1,1] mentre il punto standard di
inizio della ricerca è x1 = [−1,9;2].
Un disegno tridimensionale della funzione è riportato in fig.6.1 mentre in fig.6.2 si
è riportato una “proiezione quotata” della funzione stessa insieme alla successione dei
punti di tentativo generati dall’implementazione del metodo steepest descent man mano
che esso converge verso il minimo.
L’ottimizzazione è stata terminata dopo 1000 iterazioni, ancora ad una distanza
considerevole dal minimo.
In corrispondenza delle aree più “scure” del percorso l’algoritmo progredisce
lentamente a “zig-zag” a causa della direzione di avanzamento che, ad ogni passo
successivo, è invariabilmente parallela al gradiente.
L’inefficienza è data inoltre dal fatto che il metodo steepest descent non tiene in
93
alcun conto delle derivate seconde della funzione f (x), cioè della curvatura della
funzione, che determina il comportamento della funzione vicino al minimo.
Questi aspetti negativi vengono superati nel metodo di Newton che sarà esaminato
nel paragrafo successivo.
Fig. 6.2 – Rappresentazione dei risultati ottenuti mediante il metodo steepest
descent applicato alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
6.3 Metodo di Newton
L’idea di base del metodo di Newton consiste nell’approssimare, ad ogni passo
della iterazione, la funzione f (x) mediante la funzione quadratica che si ottiene dallo
sviluppo in serie della funzione arrestato ai termini di secondo grado.
Nell’ipotesi che la funzione f (x) abbia derivate prime continue fino al secondo
ordine in un intorno opportuno del punto xk (cioè che la funzione sia di classe C(2) ), si
94
considera il minimo della seguente funzione:
qk = f (xk) + (x − xk)T gk +
1
(x − xk)T Gk (x − xk)
2
(6.3)
dove:
 ∂2 f 
 con i , j = 1,…,n
Gk è la matrice hessiana 
 ∂xi ∂x j 
gk è il vettore gradiente ∇f (x) calcolato nel punto xk
nel caso
Supposto che qk(x) abbia un punto di minimo in x*, si ha ∇qk (x*) = 0, cioè:
Gk (x* − xk) + gk = 0
⇒
x* = xk − Gk-1 gk
(6.4)
Il valore x* è assunto come nuova stima del punto di minimo di f (x), da cui la seguente
formula iterativa:
xk+1 = xk − Gk-1 gk
per k = 1,2,…
(6.5)
Una variante della formula (6.5) è la seguente:
xk+1 = xk − λk*Gk-1 gk
per k = 1,2,…
(6.6)
dove λk* è determinata mediante la “ricerca lineare”, ossia per mezzo di una
minimizzazione unidimensionale a partire da xk nella direzione −Gk-1 gk , analogamente
a quanto visto per il metodo steepest descent.
−Gk-1 gk
xk
95
Il calcolo del vettore xk+1 richiede quindi, ad ogni passo, l’inversione della matrice
hessiana Gk.
Nel caso in cui la matrice Gk risulti “malcondizionata”, il condizionamento può
essere migliorato mediante una opportuna operazione di scalatura sulle variabili.
Il metodo di Newton coincide con il metodo steepest descent quando Gk = I
(dove I è la matrice unitaria cioè la matrice diagonale con elementi pari ad 1), in tal
caso, infatti, la direzione di ricerca è parallela ed opposta al gradiente gk.
La matrice unitaria è d’altra parte la matrice meglio condizionata per definizione, e
ciò spiega, pertanto, l’ottima stabilità del metodo steepest descent (pur con i limiti di
efficienza riportati).
In generale, invece, la direzione −Gk-1 gk non è parallela al gradiente gk ed è una
direzione di discesa solo quando:
−Gk-1 gk
gkT Gk-1 gk > 0
xk
gk
ossia quando la matrice Gk è definita positiva.
Esistono pertanto casi in cui la matrice hessiana non è definita positiva per cui la
direzione può essere ortogonale o addirittura discorde al gradiente (si veda in proposito
il caso unidimensionale riportato in fig. 6.3 nel quale la matrice hessiana degenera nella
derivata seconda).
96
errore
G>0
G<0
DISCESA
(l’algoritmo
converge)
SALITA
(l’algoritmo non
converge)
X
O
Fig. 6.3 – Esempio unidimensionale di convergenza e non convergenza del
metodo di Newton in funzione del segno della derivata seconda G
Difatti in talune situazioni il metodo di Newton può anche non convergere per cui
si tratta di un metodo “meno robusto” rispetto al metodo steepest descent che garantiva
la convergenza in ogni caso (non si dimentichi che si in tratta sempre, per questi metodi
derivativi, di convergenza al minimo locale).
Tuttavia, la minor robustezza è compensata dal notevole aumento di efficienza
dell’algoritmo.
In proposito si vedano in fig.6.4 i risultati ottenuti mediante il metodo di Newton
applicato alla funzione di Rosenbrock. Si può facilmente constatare come il punto di
minimo locale sia stato raggiunto con sole 210 iterazioni mentre per il metodo steepest
descent erano necessarie più di un migliaio di iterazioni.
97
3
2.5
2
Start Point
1.5
1
Solution
0.5
0
-0.5
-1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Fig. 6.4 – Rappresentazione dei risultati ottenuti mediante il metodo di Newton
applicato alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
6.4 Metodi quasi-Newton
I principali aspetti negativi del metodo di Newton derivano da una parte dalla
difficoltà di calcolare la matrice hessiana G e, dall’altra, dalla necessità di doverla
invertire ad ogni passo.
-1
Dover calcolare ad ogni passo la matrice hessiana G e la sua inversa G richiede un
notevole sforzo computazionale dal momento che le derivate sono calcolate per
differenziazione numerica.
Per ovviare a quest’inconveniente sono stati introdotti dei metodi nei quali la
98
-1
matrice hessiana G, o direttamente la sua inversa G , è sostituita da una opportuna
matrice definita positiva H, aggiornata ad ogni passo solamente sulla base dei risultati
ottenuti nel passo precedente.
Si tratta dei metodi quasi-Newton anche detti metodi a metrica variabile ed
hanno la seguente forma:
-1
xk+1 = xk − λk*Hk gk
per k = 1,2,…
(6.7)
con x1 e H1 assegnati.
-1
Il valore λ* corrisponde al minimo della f (x) lungo la direzione −Hk gk a partire
dal punto xk ossia tramite la “ricerca di linea”, analogamente ai metodi già visti.
Vi sono, naturalmente, diverse possibilità di scelta per la metodologia di
aggiornamento delle matrici hessiane, si farà pertanto riferimento ai due metodi
comunemente più usati: il metodo di Broyden, Fletcher, Goldfarb e Shanno (BFGS)
ed il metodo di Davidon, Fletcher e Powell (DFP).
6.4.1 Metodo di Broyden, Fletcher, Goldfarb e Shanno (BFGS)
Il metodo parte, come il metodo di Newton, dall’approssimazione della funzione
f(x) con il suo sviluppo in serie arrestato alle derivate di secondo ordine:
T
qk = f (xk) + (x − xk) gk +
T
1
(x − xk) Gk (x − xk)
2
(6.3)
In tal modo il problema di minimizzazione incondizionata della funzione originaria
diviene il problema di minimizzazione della forma quadratica qk esprimibile nella forma:
99
T
1 T
x Hx + b x +c
2
min
x
(6.8)
dove:
x rappresenta il vettore x − xk della (6.3)
H è la matrice simmetrica definita positiva che approssima la matrice hessiana
b è un vettore costante pari a gk
c è una costante scalare pari a f (xk)
La soluzione si ha nel punto ove si annulla il gradiente della forma quadratica:
∇f (x*) = H x* + b = 0
⇒
-1
x* = − H b
(6.9)
La k-esima iterazione del metodo consiste nei seguenti 7 passi:
1) Si pone la direzione di ricerca dk del punto xk+1 a partire dal punto corrente xk pari a:
-1
-1
dk = −H b = −H gk
(6.10)
-1
con H1 = H1 = I (matrice unitaria).
Pertanto per k=1 il metodo coincide con il metodo di discesa ripida.
2) Si determina il passo della ricerca λk* minimizzando la funzione ad una variabile:
λ → f (xk+1 − λk gk) e sia quindi λk* (>0) il valore corrispondente al punto di minimo.
3) Si pone:
xk+1 = xk + λk*dk
(6.11)
4) Si calcolano f (xk+1) e gk+1 (gradiente nel punto xk+1 ). Nel punto xk+1 il vettore dk è
tangente alla superficie di livello f (x) = f (xk+1), e pertanto è ortogonale a gk+1, ossia:
100
T
dk gk+1 = 0
5) Si pongono:
sk = xk+1 − xk = λk*dk
qk = gk+1 − gk ,
(6.12)
6) Si definisce:
Hk+1 = Hk + Ak + Bk
(6.13)
dove:
T
Ak =
qk qk
T
qk sk
T
,
Bk = −
T
Hk sk sk H k
T
sk Hk sk
(6.14)
7) Si effettua l’inversione della matrice Hk+1 ottenendo H-1k+1 ed infine, tramite la (6.10)
e la (6.11), si determina xk+1 a partire da xk.
8) Si reitera il procedimento a partire dal punto 1).
Il metodo si arresta quando sono verificati opportuni test sulle variazioni xk+1 − xk,
f(xk+1) − f (xk) e sulla lunghezza del vettore gk.
E’ inoltre dimostrabile che le matrici Hk sono simmetriche definite positive per
ogni k, da cui scaturisce che il metodo è “stabile”, nel senso che il valore di f (x) è
ridotto ad ogni iterazione.
In fig. 6.5 è mostrato il “percorso di convergenza” del metodo BFGS applicato alla
funzione di Rosenbrock.
Si nota chiaramente come il metodo sia in grado di seguire l’andamento della valle
in modo del tutto simile al metodo di Newton, tuttavia per convergere al minimo è stato
101
3
2.5
2
Start Point
1.5
1
Solution
0.5
0
-0.5
-1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Fig. 6.5 – Rappresentazione dei risultati ottenuti mediante il metodo BFGS applicato
alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
sufficiente calcolare il valore della funzione in 140 punti, con il conseguente risparmio
computazionale.
6.4.2 Metodo di Davidon, Fletcher e Powell (DFP)
Il metodo è analogo al precedente con sola differenza che, a venir calcolata
iterativamente, non è più la matrice hessiana H bensì la sua inversa H-1.
In tal modo si risparmia il tempo computazionale necessario ad effettuare
l’inversione di H.
I punti dall’1) al 5) sono identici al metodo BFGS, mentre i punti successivi sono:
6) Si definisce:
102
H-1 k+1 = H-1k + Ak + Bk
(6.13)
dove:
Ak =
T
k
s qk
(H ) q
−1 T
T
sk sk
,
Bk = −
k
T
−1
T
q Hk
k k
(6.15)
−1
qk H k qk
7) Si determina xk+1 a partire da xk tramite la (6.10) e la (6.11).
8) si ripete il procedimento a partire dal punto 1)
In fig. 6.6 è mostrato il “percorso di convergenza” del metodo BFGS applicato alla
funzione di Rosenbrock.
Minimization of the Banana function
3
2.5
2
Start Point
1.5
2
x
1
Solution
0.5
0
-0.5
-1
-2
-1.5
-1
-0.5
0
x1
0.5
1
1.5
2
Fig. 6.6 – Rappresentazione dei risultati ottenuti mediante il metodo DFP
applicato alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
103
6.5 Ricerca di linea
Si è visto nei paragrafi precedenti come i metodi di ottimizzazione
multidimensionale descritti siano tutti scindibili in due distinti sottoproblemi:
1) la determinazione della direzione di ricerca
2) la determinazione del passo di ricerca mediante risoluzione di un problema di
minimo unidimensionale lungo tale direzione
Ossia, generalizzando le espressioni (6.2) e (6.5) nella forma seguente:
xk+1 = xk + λk*dk
(6.11)
è immediato notare come i metodi descritti differiscano solo nella determinazione
della direzione di ricerca dk che rappresenta il primo sottoproblema, mentre hanno in
comune il secondo sottoproblema della ricerca di minimo unidimensionale lungo la
direzione scelta, cioè la ricerca del minimo λk* della funzione λ → f (xk+1 − λk dk) con λ
ovviamente >0.
La risoluzione di questo problema, detto anche “ricerca di linea”, è demandata ad
algoritmi di ottimizzazione unidimensionale quali il metodo di Fibonacci, il metodo
della sezione aurea e i metodi di interpolazione polinomiale di vario ordine.
Oppure, più semplicemente (come si è già detto trattando del metodo steepest
descent), si può determinare euristicamente una successione di valori λk* avente
caratteristiche:
λk* < 1
λk* < λk-1*
104
Tra questi, i metodi maggiormente adottati per la “ricerca di linea” sono quelli di
interpolazione polinomiale di secondo e terzo ordine detti rispettivamente:
interpolazione quadratica e interpolazione cubica.
Questi metodi determinano il polinomio (ad una variabile), quadratico o cubico,
“interpolante” un certo numero di punti noti della funzione lungo la direzione di ricerca
stabilita (pertanto anche la funzione diviene ad una sola variabile).
Nel seguito si esamineranno i metodi di interpolazione quadratica e cubica, che
come si è accennato, sono i più frequentemente utilizzati.
6.5.1 Interpolazione quadratica
L’interpolazione quadratica consiste nel determinare il polinomio di secondo grado
che “approssima” meglio i punti noti della funzione lungo la direzione nota di ricerca.
Il polinomio si presenta nella forma:
mq(λ) = a λ2 + b λ + c
(6.12)
pertanto un “punto estremale” per la funzione si trova ad un passo di lunghezza:
λ* = −
b
2a
(6.13)
Il punto risulta essere un minimo quando a è positivo.
La determinazione dei coefficienti a e b può effettuarsi utilizzando qualsiasi
combinazione di tre valori della funzione o del gradiente (quest’ultimo, in realtà,
essendo riferito alla direzione di ricerca, è più propriamente una derivata
“direzionale”), oppure, alternativamente, mediante due valori del gradiente.
105
Dopodiché i coefficienti sono ricavati tramite la formulazione e risoluzione di un
semplice sistema lineare di 3 (o 2) equazioni in 3 (o 2) incognite.
Varie semplificazioni del sistema sono possibili qualora vengano utilizzati punti
con caratteristiche particolari (ad esempio quando il primo punto abbia ascissa λ = 0 o,
ancora, quando i punti siano equidistanti tra loro).
In generale, dati 3 punti non necessariamente equidistanziati {x1,x2,x3} ed i
rispettivi valori della funzione {f(x1), f(x2), f(x3)}, il minimo risultante dalla
interpolazione quadratica è dato da:
x k +1 =
1 β 23 f ( x 1 ) + β 31 f (x 2 ) + β 12 f ( x 3 )
2 γ 23 f ( x 1 ) + γ 31f (x 2 ) + γ 12 f ( x 3 )
(6.14)
dove:
βi j = xi2 – xj2
γi j = xi – xj
(6.15)
6.5.2 Interpolazione cubica
Il polinomio di interpolazione cubica ha invece la forma seguente:
mq(λ) = a λ3 + b λ2 + c λ + d
(6.16)
mentre i “punti estremali” rinvengono dalle radici dell’equazione:
3a λ2 + 2b λ + c = 0
ossia:
- b ± b 2 - 3ac
*
λ =
3a
(6.17)
106
di cui, la radice corrispondente al minimo è quella per cui risulta:
6a λ + 2b > 0
(6.18)
Per determinare i coefficienti a, b e c si richiede la conoscenza di una
combinazione di quattro valori della funzione o del gradiente (contro i 3 della
interpolazione quadratica) o, alternativamente, di tre valori del gradiente (contro i 2
della interpolazione quadratica).
Anche in questo caso i coefficienti sono calcolati mediante la formulazione e
soluzione di un sistema lineare di 4 (3) equazioni in 4 (3) incognite.
Una formula generale, dati due punti {x1,x2}, ed i rispettivi valori della funzione
{f(x1), f(x2)} e del gradiente {∇f(x1), ∇f(x2)}, è data da:
x k +1 = x 2 − (x 2 − x1 )
∇f ( x 2 ) + β 2 − β1
∇f ( x 2 ) − ∇f (x1 ) + 2β 2
(6.19)
dove:
β1 = ∇f ( x1 ) + ∇f ( x 2 ) − 3
f (x1 ) − f ( x 2 )
x1 − x 2
β 2 = β12 − ∇f ( x1 )∇f ( x 2 )
(6.20)
L’interpolazione cubica da spesso soluzioni più precise della interpolazione
quadratica ma, come si è visto, è anche più dispendiosa in termini computazionali.
6.6 Problema di ottimizzazione dei “minimi quadrati”
I metodi analizzati finora, nel presente capitolo, sono finalizzati a minimizzare una
qualsiasi funzione scalare di variabile vettoriale (purché siano rispettate le ipotesi circa
107
la derivabilità e la continuità della funzione).
Sono, infatti, tutte metodologie finalizzate alla risoluzione del generico problema di
ottimizzazione non vincolata:
min
X∈ℜ
f(X)
(6.1)
N
D’altra parte, come si ricorderà dal capitolo IV, il problema di ottimizzazione
scaturito dalla risoluzione del sistema matriciale di equazioni (4.2) era un problema di
“minimi quadrati”, ossia un particolare problema di ottimizzazione non vincolata in cui
la funzione obiettivo da minimizzare era la funzione di errore, cioè:
min
2
errore(X) = F =
N+L
∑F
2
i
(4.6)
i =1
X ∈ ℜN+L
dove si ricorderà che Fi è l’errore relativo a X nella i-esima equazione del sistema (4.2).
Questo problema è sicuramente risolvibile con le tecniche finora enunciate in
quanto valide per qualsiasi problema di ottimizzazione non vincolata (per altro la
funzione soddisfa tutte le condizioni sulla continuità e derivabilità richieste dai vari
metodi).
Tuttavia, per il problema di ottimizzazione non vincolata dei “minimi quadrati”
esistono delle particolari metodologie per rendere ancora più “efficiente” la ricerca del
minimo.
Sia, infatti, S(x) la funzione “somma dei residui” definita come segue:
m
S(x) = F(x) = F(x) F(x) = ∑ Fi ( x)
2
T
i =1
108
2
(6.21)
dove Fi sono funzioni scalari da minimizzare dette “residui”, che nel caso in studio sono
le i-esime equazioni del sistema di equazioni (4.2)
Il problema dei minimi quadrati può scriversi nella forma:
min
X∈ℜ
T
S(X) = min
n
X∈ℜ
F(x) F(x)
(6.22)
n
Qualora il problema dei minimi quadrati scaturisca da un sistema in cui il numero
di equazioni è pari al numero di incognite (è proprio il caso in studio), è semplice
verificare che per ogni soluzione del sistema, ammesso che ve ne sia più d’una, risulta:
S(x) = 0
che rappresenta un’importante informazione circa l’esistenza, il numero ed il valore
(che, come si è visto, è pari a zero) dei minimi globali che si ricercano.
E’ possibile verificare che per S(x) valgono le seguenti proprietà:
T
∇S(x) = 2 J(x) F(x)
(6.23)
T
2
∇ S(x) = 2 J(x) J(x) + 2 Q(x) = H(x)
(6.24)
con:
m
Q(x) =
∑ F ( x) ⋅ H ( x )
i =1
i
(6.25)
i
dove:
J(x) = [ Ji j ] con Ji j =
∂ fi
, i =1,2,...,m j =1,2,…n ,è la matrice Jacobiana
∂xj
Hi = ∇ Fi(x) , cioè Hi sono le matrici hessiane di ciascuna componente scalare Fi(x) di
2
109
F(x)
La condizione necessaria per il punto di minimo della (6.22) è l’annullarsi del
gradiente di S(x), ossia:
∇S(x) = 0
⇒
T
J(x) F(x) = 0
(6.26)
Se per risolvere (6.26) si utilizza il metodo di Newton, si ottiene:
x1 arbitrario
xk+1 = xk + λk*dk
dove la direzione di ricerca dk si ottiene mediante la (6.4), risolvendo il seguente sistema
lineare :
2
2
∇ S(xk) dk + ∇S(xk) = 0 ⇒ dk = −(∇ S(xk))-1 ∇S(xk)
(6.27)
Posto in questa forma il metodo risulta però dispendioso in termini computazionali,
in quanto richiede il calcolo del termine Q(x).
D’altra parte si osserva che il contributo di questo termine è “trascurabile” vicino
alla soluzione in due situazioni: quando i “residui” Fi sono trascurabili in
corrispondenza della soluzione oppure quando i “residui” Fi sono funzioni “quasi
2
lineari”, ossia sono trascurabili i termini ∇ Fi(x).
In tali casi risulta ragionevole la seguente approssimazione della (6.24):
2
T
∇ S(x) ≈ 2 J(x) J(x)
(6.28)
110
6.6.1 Metodo di Gauss-Newton
Il metodo di Gauss-Newton, assumendo l’approssimazione (6.28), determina la
direzione di ricerca dk mediante la risoluzione del sistema lineare (6.27), cioè:
T
T
T
T
2 J(x) J(x) dk + 2 J(x) F(x) = 0 ⇒ J(x) J(x) dk = − J(x) F(x)
(6.29)
Si noti che per il caso in studio, trattandosi di un sistema di n equazioni in n
incognite, i residui si annullano in corrispondenza della soluzione ed è pertanto lecita
l’approssimazione (6.28).
Si può quindi applicare il metodo di Gauss-Newton per risolvere il problema di
ottimizzazione (4.6), ovvero il sistema matriciale (4.2) di n equazioni in n incognite
oggetto del presente studio.
Per la determinazione del passo di ricerca λk* si ricorre, anche in questo metodo,
alla “ricerca di linea” in modo da assicurare che ad ogni iterazione la funzione scalare
S(x) sia inferiore al valore precedente e conseguentemente il metodo converga.
Il metodo di Gauss-Newton è probabilmente il metodo di ottimizzazione più
“efficiente” tra quelli descritti.
In proposito si può vedere, in fig. 6.7, il “percorso di convergenza” del metodo
applicato alla funzione di Rosenbrock posta come un problema di minimi quadrati.
Il metodo converge al minimo dopo aver calcolato il valore della funzione solo 48
volte, contro le 140 iterazioni del metodo BFGS.
Il metodo di Guass-Newton presenta invece problemi di convergenza quando il
111
Minimization of the Banana function
3
2.5
2
Start Point
1.5
1
2
x
Solution
0.5
0
-0.5
-1
-2
-1.5
-1
-0.5
0
x1
0.5
1
1.5
2
Fig. 6.7 – Risultati ottenuti mediante il metodo di Gauss-Newton
applicato alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
termine Q(x) è significativo.
In tal caso è consigliabile utilizzare il metodo di Levenberg-Marquadt che, come si
vedrà tra breve, supera questa difficoltà.
6.6.2 Metodo di Levenberg-Marquadt
Il metodo di Levenberg-Marquadt determina la direzione di ricerca dk risolvendo
il seguente sistema lineare:
T
T
(J(x) J(x) + αkD) dk = − J(x) F(x)
dove:
D è una matrice definita positiva (spesso si prende D = I)
112
(6.30)
αk è uno scalare che controlla sia il modulo sia la direzione di dk, pertanto la ricerca
della direzione e del passo di avanzamento non sono più due problemi scindibili come
nei metodi visti finora.
Quando αk è uguale a zero, dk è identico a quello determinato con il metodo di
Gauss-Newton, mentre per αk che tende ad infinito, dk tende ad un vettore di modulo
nullo e direzione pari a quella del metodo steepest descent.
Il metodo steepest descent è infatti un metodo a “convergenza sicura” (cioè la
convergenza del metodo è matematicamente dimostrabile), il che implica l’esistenza di
un valore di αk sufficientemente grande da far sì che risulti “vera” la diseguaglianza S
(xk + dk) < S (xk), che rappresenta appunto la condizione di convergenza.
In tal modo il termine αk può essere controllato per assicurare la “discesa” (ossia
la convergenza) del metodo anche qualora l’entità di Q(x) risulti tale da inficiare
l’efficienza del metodo di Gauss-Newton.
Il metodo di Levenberg-Marquadt rappresenta pertanto un “compromesso” tra il
metodo di Gauss-Newton ed il metodo steepest descent.
Come si può notare dai risultati ottenuti sulla funzione di Rosenbrock in fig. 6.8, Il
metodo “perde” qualcosa in “efficienza”, rispetto al metodo di Gauss-Newton, ma
acquista molto in “robustezza” .
Difatti il minimo è raggiunto in 90 iterazioni contro le 48 del metodo di GaussNewton.
Per poter beneficiare, allora, sia dell’efficienza di un metodo sia della robustezza
113
Minimization of the Banana function
3
2.5
2
Start Point
1.5
2
x
1
Solution
0.5
0
-0.5
-1
-2
-1.5
-1
-0.5
0
x1
0.5
1
1.5
2
Fig. 6.8– Risultati ottenuti mediante il metodo Levenberg-Marquardt applicato
alla funzione di Rosenbrock con punto iniziale x1 = [−1,9;2]
dell’altro, alcune implementazioni del metodo di Gauss-Newton (è il caso della
implementazione effettuata dalla MathWorks per il pacchetto Matlab “Optimization”)
prevedono la eventualità di uno “switch” al metodo di Levenberg-Marquadt qualora
ricorrano delle particolari condizioni che denotino difficoltà di convergenza.
6.7 Metodo di Newton-Raphson
Il metodo di Newton-Raphson, come accennato nell’introduzione, non è
propriamente un metodo di ottimizzazione, bensì un metodo per risolvere sistemi di
equazioni non lineari, cioè un problema del tipo:
114
F (x) = [f1(x), f2(x), …. , fm(x)] = 0
con
x∈ℜ
n
(6.31)
L’idea “geometrica” del metodo è quella di sostituire alla funzione il suo sviluppo
in serie arrestato ai termini di primo grado (nell’ipotesi che le funzioni fi siano continue
e derivabili), ossia:
F (x) = F (xk+ dk) = F (xk) + J(xk) dk
(6.32)
dove:
J(x) = [ Ji j ] con Ji j =
∂ fi
, i =1,2,...,m j =1,2,…n ,è la matrice Jacobiana
∂xj
La risoluzione del sistema di equazioni
(6.31) diventa così un procedimento
iterativo in cui ad ogni passo bisogna risolvere il seguente sistema lineare:
-1
F (xk) + J(xk) dk = 0 ⇒ dk = − J (xk) F (xk)
(6.32)
Da cui si ricava il successivo punto di tentativo
xk+1 = xk + dk
(6.33)
Questo metodo è quindi “analogo” al metodo di Cauchy o steepest descent in
quanto entrambi i metodi, per determinare il successivo punto di tentativo, si basano
sulla sola conoscenza delle derivate di prim’ordine.
D’altra parte, come si è sottolineato più volte, basare la ricerca sulle sole derivate
prime, da una parte assicura la convergenza del metodo, dall’altra rende il metodo
115
“inefficiente” in quanto a numero di iterazioni e conseguente tempo computazionale.
Conclusione
Si noti bene, tuttavia, che ogniqualvolta si è parlato in questo capitolo di
convergenza sicura, veloce, efficiente ecc., si è sempre sottinteso che si trattasse di
convergenza ad un “minimo locale”.
Come si è avuto modo di vedere, infatti, tutte le metodologie esaminate seguono
dopotutto un “percorso di discesa” e questo percorso, pertanto, non può che terminare
nel “minimo locale” più prossimo.
Il punto di convergenza dipende quindi dal punto iniziale della ricerca e ciò, a
prescindere da ogni altra considerazione sull’efficienza, costituisce la più grave lacuna
di tutte le metodologie affrontate in questo capitolo.
Con questo lavoro, si è inteso evidenziare particolarmente quest’aspetto degli
“algoritmi classici” di ottimizzazione, in quanto si è notato che spesso, nel campo delle
costruzioni idrauliche, questi metodi, pur potenti, sono stati usati con “troppa
disinvoltura” al punto da trovare espressioni del tipo “preso un punto a caso il metodo
converge…” o simili, anche su pubblicazioni di un certo rilievo.
Si è ritenuto di dover sottolineare, e nel capitolo successivo lo si mostrerà in merito
ad alcuni casi concreti, come tale punto iniziale non vada affatto “preso a caso” bensì
scelto con cura al fine di determinare una soluzione “attendibile” del problema.
116
CAPITOLO VII
Implementazione di una tecnica mista:
algoritmi genetici / metodo di Gauss-Newton
Premessa
Nel capitolo III è stato impostato, in forma matriciale, il sistema di equazioni (4.2)
che governa una rete idraulica in pressione, mentre nel capitolo IV è stato mostrato
come la risoluzione del sistema dato sia equivalente alla risoluzione del problema di
ottimizzazione non vincolata (4.6) o (4.8), per risolvere il quale, nei capitoli V e VI,
sono state illustrate due distinte metodologie: gli algoritmi genetici ed il metodo di
Newton (con le annesse varianti).
Negli stessi capitoli sono messi in evidenza gli aspetti caratteristici di ciascun
metodo con particolare attenzione ai problemi di convergenza e dipendenza dal punto
iniziale di ricerca.
E’ emerso che i metodi di Newton risultano particolarmente efficienti, soprattutto
quelli specificatamente dedicati alla risoluzione dei minimi quadrati non lineari quali
il metodo di Gauss-Newton ed il metodo Levenberg-Marquardt.
Al tempo stesso, si è constatato che tali metodologie convergono ad un “minimo
locale” per cui la soluzione finale dipende dal punto iniziale di ricerca.
Si è visto, invece, che gli algoritmi genetici convergono al “minimo globale”.
Applicandoli tuttavia al problema di ottimizzazione in studio, si è rilevato che la velocità
117
di convergenza, pur abbastanza elevata inizialmente, decresce poi con le generazioni
successive in modo approssimativamente “asintotico” (si veda in proposito il paragrafo
7.7).
Questo problema, rilevato anche da altri autori [Poyhonen, H.O. et al.], è
denominato “slow finish” e, stando all’opinione degli stessi autori, sarebbe dovuto
all’esaurirsi delle informazioni “cromosomiche” della popolazione, per cui l’azione
del “crossover” risulterebbe trascurabile e l’evoluzione continuerebbe sotto la “spinta”
della sola “mutazione” (per gli algoritmi genetici si veda il capitolo V).
L’idea è stata, pertanto, quella di utilizzare entrambe le metodologie descritte:
algoritmi genetici e metodi di Newton, cercando di sfruttare le caratteristiche migliori
di ciascun metodo per compensare i rispettivi difetti dell’altro.
Si è deciso così di connettere i due metodi “in cascata” lasciando agli algoritmi
genetici il compito di determinare un “buon” punto iniziale di ricerca per il metodo
di Newton.
Dove per “buono”, come si è visto nel capitolo VI, si intende un punto iniziale
sufficientemente “prossimo” al minimo globale della ipersuperficie di errore (a
rigore, più che di prossimità, si tratta di appartenenza alla “concavità” del minimo
globale dal momento che i metodi di Newton sono algoritmi di “discesa” della
ipersuperficie di errore), da permettere al metodo di Newton di convergere al minimo
“giusto” ossia al “minimo globale”
Nei successivi paragrafi si entrerà quindi nel merito dell’implementazione degli
algoritmi succitati descrivendo il linguaggio scelto per scrivere il programma e
118
confrontando i risultati ottenuti risolvendo alcune reti idrauliche “test”
con quelli
ottenuti risolvendo le stesse reti con altri metodi.
Inoltre, vista l’efficienza del programma nel risolvere anche reti piuttosto
complesse, si è introdotta la possibilità di calcolare (in modo iterativo) le perdite di
carico con la formula di Colebrook, al posto delle tradizionali formule pratiche di moto
assolutamente turbolento usate di solito per risolvere le reti idrauliche in pressione, in
modo da non trascurare il campo delle portate appartenenti al “regime di transizione”.
7.1 Scelta del linguaggio di implementazione: Matlab ver. 5.3
Per l’implementazione dell’algoritmo di risoluzione delle reti idrauliche in
pressione mediante la tecnica mista algoritmi genetici/ metodo di Newton (si vedrà in
seguito quale tra i metodi di Newton sarà implementato e perché) si è preferito utilizzare
il Matlab ver. 5.3 (si tratta dell’ultima versione attualmente in commercio) della
MathWorks Inc.
Si ritiene, infatti, che il Matlab sia un linguaggio particolarmente adatto per le
applicazioni matematiche e scientifiche per quattro fondamentali ragioni:
1) è un linguaggio che permette di gestire le matrici come semplici variabili e di
eseguire tutte le operazioni tra matrici (incluso il calcolo dei determinanti e delle
matrici inverse) come semplici operazioni tra variabili (infatti il nome stesso
Matlab è un’abbreviazione di Matrix Laboratory).
2) è un linguaggio che opera indistintamente su numeri reali e su numeri
complessi, consentendo di gestire questi ultimi alla stregua di numeri reali (per
119
fare un esempio banale, in Matlab non è un errore fare la radice di –1).
3) è un linguaggio estremamente “versatile” in quanto esistono numerosissimi
pacchetti applicativi o toolbox, reperibili sul mercato e su Internet (è questo il
caso di uno dei pacchetti che si è utilizzato per il programma), che consistono in
gruppi di funzioni, scritte a loro volta in Matlab e quindi facilmente adattabili
alle varie esigenze, finalizzati alla risoluzione dei problemi più disparati.
4) è un linguaggio altamente “portabile”. Infatti, Il fatto di essere un interprete,
quindi non un compilatore, sebbene penalizzi un po’ la velocità, consente la
portabilità del codice da un tipo di macchina all’altra senza alcuna difficoltà e
questo rende molto agevole lo scambio di software ad esempio per finalità
scientifiche.
7.2 Descrizione del programma
In questo paragrafo si descriverà il funzionamento del programma, basato sulla
tecnica “mista” algoritmi genetici/metodi di Newton, per la risoluzione delle reti
idrauliche in pressione.
Per il listato delle principali funzioni del programma si rimanda invece
all’appendice A.
7.2.1 Implementazione degli algoritmi genetici: scelta dei parametri
Per l’implementazione degli algoritmi genetici si è scelto innanzitutto di utilizzare
120
la rappresentazione floating point in quanto si sapeva dalla teoria (si veda in proposito il
capitolo V), e si è riscontrato poi nella pratica, che questa è la rappresentazione più
“efficiente” dal punto di vista della convergenza.
Come funzione obiettivo si è scelta la funzione errore (4.7) anziché la funzione
errore (4.5) in quanto, come si più volte ribadito, quest’ultima forma rende più
omogenea la convergenza delle distinte componenti del vettore incognito, senza
privilegiare la convergenza delle portate su quella delle altezze piezometriche o
viceversa, in virtù del sistema di misura adottato.
La dimensione della popolazione è stata stabilita di 20 cromosomi (o individui)
che è un numero un po’ basso rispetto alle popolazioni di 100-200 individui
generalmente impiegate.
D’altra parte, il leggero incremento della velocità di convergenza ottenibile con una
popolazione maggiore è insufficiente a compensare l’aumento di sforzo computazionale
necessario a gestire popolazioni numerose soprattutto per reti grosse in cui ogni
cromosoma (o individuo) risulta composto da centinaia di geni (si ricorda che nella
rappresentazione floating-point ogni gene corrisponde ad una componente scalare del
vettore incognito) in quanto ogni gene rappresenta una singola portata, o altezza
piezometrica, incognita della rete.
Per quanto concerne la selezione, per evitare problemi di “convergenza prematura”,
si è impiegato il metodo del “ranking a normalizzazione geometrica” ponendo il
parametro q, cioè la probabilità di scegliere l’individuo migliore, pari al valore più
largamente usato che è 0,08 (si veda in proposito [Houck, C.R. et al.]).
121
E’ stata utilizzato anche il gap generazionale per un solo individuo, ossia si è
reinserito nella i−esima generazione l’individuo più “adatto” della generazione
precedente sostituendolo all’individuo meno “adatto” della generazione presente.
Per gli operatori genetici, avendo scelto la rappresentazione floating-point, sono
stati impiegati i diversi operatori disponibili per questo tipo di
rappresentazione,
introdotti nel capitolo V.
In particolare, per l’operatore crossover si è scelto di utilizzare il crossover
semplice, il crossover aritmetico ed il crossover euristico, da eseguire 2 volte
ciascuno
per ogni generazione (si è ricorso anche in questo caso ai valori più
“confermati” dalla sperimentazione, si veda sempre [Houck, C.R. et al.]) ed in
particolare si è posto un numero massimo di tentativi pari a 3 per il crossover euristico
(si ricorderà come il crossover euristico sia l’unico operatore a non garantire che i
cromosomi figli appartengano al range di variabilità imposto ai genitori per cui occorre
effettuare un controllo in serie all’operatore ed eventualmente ripetere il crossover).
Mentre, per l’operatore mutazione, si sono adoperati la mutazione uniforme, la
mutazione non uniforme, la mutazione multi-non uniforme e la mutazione di
confine, da eseguire rispettivamente 4, 6, 4 ,4 volte per ogni generazione avendo posto
inoltre il parametro di “bias” della mutazione non uniforme e multi-non uniforme pari a
3 (anche per questi parametri sono stati adoperati valori “consigliati” da [Houck, C.R. et
al.]).
Si noti che, invece di stabilire le probabilità con cui gli operatori genetici
selezionano ciascun gene per la riproduzione, si è fissato il numero complessivo di
122
“riproduzioni” per ciascun operatore genetico.
Tuttavia si può facilmente constatare come le due metodologie siano pressoché
equivalenti.
Per quanto riguarda la scelta di utilizzare un così consistente numero di operatori
riproduttivi, è abbastanza evidente come una tale “ricchezza” di operatori riproduttivi
non possa che facilitare la differenziazione della popolazione consentendo all’algoritmo
di esplorare più estensivamente l’iperspazio delle soluzioni possibili e rendere quindi più
“efficace” la ricerca del “minimo globale”.
Un discorso a parte merita, invece, la condizione terminale in quanto, a causa
della scelta di connettere una metodologia tradizionale di ottimizzazione in cascata agli
algoritmi genetici, non è conveniente impiegare gli stessi criteri di convergenza descritti
nel capitolo V.
Tali criteri, come si ricorderà, sono essenzialmente basati sul massimo numero di
generazioni (è un criterio alquanto empirico) oppure sulla somma delle deviazioni
arrestando la ricerca quando questa risulti inferiore ad un valore predeterminato, ossia
quando tutti i cromosomi della popolazione abbiano raggiunto un certo grado di
“uniformità” (è un criterio più rigoroso in quanto stavolta si ricorre ad una valutazione
della convergenza).
E’ evidente che il primo dei due criteri non è soddisfacente per l’algoritmo in
studio in quanto non effettua nessuna verifica circa la “bontà” della soluzione raggiunta
dopo il numero previsto di generazioni.
Tuttavia anche il secondo criterio sulla “uniformità” delle soluzioni non è adatto
123
allo scopo.
Difatti l’obiettivo dell’algoritmo genetico, nell’ambito della tecnica mista che si sta
implementando, è quello di fornire una soluzione che funga da punto iniziale per la
ricerca dei metodi di Newton, che, come si è visto nel capitolo precedente, sono dei
metodi numerici in grado di “discendere” l’ipersuperficie di errore a partire da un punto
assegnato.
Pertanto, non è necessario (e neanche sufficiente) che il punto iniziale sia
prossimo alla soluzione finale, ossia al minimo globale, bensì è sufficiente che si trovi
all’interno della “concavità” (la cui forma e dimensione non sono conosciute a priori)
del minimo globale in modo da potervi convergere con i metodi di “discesa”.
Si evince, allora, come l’uso di un criterio di convergenza, che in definitiva effettua
una valutazione sulla “prossimità” dei punti al minimo globale, non costituisca una
condizione terminale accettabile soprattutto alla luce della considerazione seguente.
Si è già detto, infatti, che gli algoritmi convergono molto lentamente alla soluzione
finale (proprio per questo motivo, d’altra parte, si è adoperata la tecnica “mista”), per cui
si sarebbe comunque dovuto accontentarsi di soluzioni neppure “troppo prossime” al
minimo globale.
Per di più, “spingendo” troppo la convergenza degli algoritmi genetici, non avrebbe
più senso applicare la tecnica mista, in quanto si sarebbe già determinata la soluzione.
Si è pensato quindi di ovviare alle difficoltà menzionate anticipando ”l’entrata in
gioco” del metodo di Newton.
124
Ovvero, dopo aver effettuato un numero prestabilito di generazioni, si “passano”
tutti i cromosomi della popolazione al metodo di Newton il quale determina, a partire da
ciascuno di essi, una soluzione finale, o meglio, un punto di “minimo locale”.
Ne consegue che, a partire da N individui della popolazione, verranno trovati N
punti di “minimo locale”.
A questo punto si effettua un controllo analogo al criterio di convergenza appena
visto per gli algoritmi genetici, ovvero si determina il “grado di uniformità” delle
soluzioni raggiunte, ad esempio mediante il calcolo della sommatoria della varianza di
ciascuna componente dei vettori soluzione.
Un alto grado di uniformità dei punti trovati dal metodo di Newton utilizzando i
cromosomi della popolazione come rispettivi punti iniziali di ricerca, comporterebbe, in
pratica, la coincidenza dei punti stessi, per cui sarebbe lecito affermare che tutti i punti
iniziali (cioè i cromosomi dell’ultima generazione degli algoritmi genetici) si trovano
nella “concavità” dello stesso minimo.
Questo rappresenta il penultimo stadio di convergenza degli algoritmi genetici, in
cui tutti gli elementi della popolazione hanno raggiunto la concavità del minimo globale,
e cominciano, da questo punto in poi, sempre più lentamente, a convergervi.
Difatti, a questo punto, si può considerare terminata la fase “esplorativa”
dell’algoritmo genetico, mentre
prosegue la fase
“approfonditiva” (per questa
distinzione, fatta dal padre stesso degli algoritmi genetici J.H. Holland si veda il
capitolo V), che è proprio la fase in cui gli algoritmi risultano meno “efficienti” (cioè
più lenti) e che si cerca di by-passare mediante l’uso della tecnica mista.
125
E’ lecito ritenere pertanto, in queste condizioni, che il punto di “minimo locale”
coincida proprio con il “minimo globale” ricercato e che i cromosomi della popolazione
finale (dell’ultima generazione) rappresentino tutti dei “buoni” punti iniziali per la
ricerca con il metodo di Newton.
In realtà, giunti a questo stadio, non è più neanche necessario passare un punto
iniziale al metodo di Newton, in quanto il metodo ha già effettuato fruttuosamente la sua
ricerca e trovato il punto finale (anzi i punti finali coincidenti tra loro) che, come si è
appena detto, rappresenta proprio il minimo globale del problema.
Viceversa, qualora il grado di uniformità dei punti finali non sia sufficientemente
alto da poter considerare i punti di “minimo locale” coincidenti tra loro, vorrà dire che i
cromosomi della popolazione non si sono ancora “evoluti” sufficientemente e quindi
qualcuno, o parecchi di loro, si trovano ancora lontani dal “minimo globale” o, se non
lontani, comunque ancora “intrappolati” nelle concavità di altri “minimi locali”.
In questo caso si restituisce la popolazione di cromosomi all’algoritmo genetico
affinché questo operi su di essa un altro numero predefinito di generazioni, dopodiché si
“passa” nuovamente la popolazione al metodo di Newton per determinare i “minimi
locali” nelle cui prossimità si trovano i cromosomi, quindi si effettua il controllo
sull’uniformità degli stessi e così via, iterando il procedimento fin quando la verifica non
risulti soddisfatta.
Un’altra condizione terminale possibile è quella di “passare” solo il cromosoma
“migliore” (ossia il più “adatto”) della popolazione al metodo di Newton
126
Difatti il problema di ottimizzazione in questione è un problema di minimi
quadrati non lineari, che deriva da un sistema non lineare di N equazioni in N
incognite per cui esiste una soluzione esatta.
Si ricorderà, dal capitolo IV, che in questo caso si possiede una informazione in
più rispetto ai normali problemi di minimizzazione.
L’informazione aggiuntiva consiste nella conoscenza del valore scalare della
funzione obiettivo in corrispondenza del punto di “minimo globale”. Difatti, sempre nel
capitolo IV, si è visto che tale valore è uguale a zero.
In questo caso (e in tutti quei casi in cui si conosce il valore scalare corrispondente
al punto di minimo globale) è pertanto possibile sapere se la soluzione ottenuta dal
metodo di Newton è un “minimo globale” o un “minimo locale” andando a valutare il
valore scalare della funzione obiettivo in corrispondenza del punto dato.
Se il valore è sufficientemente prossimo allo zero si sarà trovato il “minimo
globale” e quindi la soluzione del problema, altrimenti si reitera il procedimento dopo
aver effettuato un altro numero prestabilito di generazioni sulla popolazione e così via,
fin quando la verifica non risulti positiva.
Nel programma si sono implementate entrambe le condizioni terminali descritte,
lasciando all’utente la possibilità di scegliere quale delle due utilizzare (per il listato del
codice si veda l’appendice A).
7.2.2 Implementazione del metodo di Gauss-Newton
Fin qui si è parlato di metodo di Newton in generale, senza entrare nel merito della
127
scelta del particolare metodo di Newton da implementare per il programma.
Nel capitolo VI si è infatti avuto modo di vedere come siano state sviluppate
molteplici metodologie a partire dal metodo di Newton “originario”, con la finalità di
rendere il metodo sempre più “efficiente”, sebbene spesso il guadagno in “efficienza”
comporta una perdita in “robustezza” (cioè di garanzia di convergenza).
La metodologia implementata nel programma è quella di Gauss-Newton che è
probabilmente il metodo più “efficiente” tra i vari metodi di Newton.
Questo metodo è particolarmente adatto a risolvere il problema di ottimizzazione in
studio poiché, come si ricorderà dal capitolo VI, si tratta di un metodo finalizzato alla
risoluzione del problema di minimi quadrati non lineari, che è esattamente il caso del
problema (4.6), dove la funzione obiettivo è la funzione scalare errore definita come
sommatoria dei quadrati degli errori su ogni equazione del sistema (4.2).
Si ricorderà, inoltre, come la convergenza del metodo, ossia la sua “discesa”, sia
legata alla condizione che i “residui” della funzione “somma” S(x) risultino trascurabili
vicino alla soluzione, in modo da poter trascurare il termine Q(x) nella matrice
“hessiana”.
E’ evidente come tale condizione sia soddisfatta per il problema (4.6) in quanto, lo
si è ripetuto più volte, il “minimo globale” del problema coincide col punto per cui la
funzione obiettivo “errore”, somma dei quadrati degli errori su ogni equazione del
sistema (4.2), tende a zero.
Questo perché la soluzione del sistema non lineare (4.2) di N+L equazioni in N+L
incognite, ammette l’esistenza di soluzioni esatte per cui si annullano gli errori sulle
128
singole equazioni del sistema e conseguentemente i residui del problema di minimi
quadrati.
Come ulteriore accorgimento per aumentare la robustezza dell’algoritmo (e quindi
assicurarne la convergenza), l’implementazione prevede lo “switch” dal metodo di
Gauss-Newton al metodo di Levenberg-Marquadt qualora lo step di ricerca scenda
-15
sotto una valore di soglia stabilito pari a 10
o il numero di condizionamento della
10
matrice Jacobiana superi il valore di soglia 10 .
Dove il numero di condizionamento di una matrice è il rapporto tra il massimo e
minimo valore singolare della matrice stessa ed indica se la matrice è ben condizionata o
mal condizionata, difatti il miglior condizionamento si ha per la matrice unitaria per cui
il numero di condizionamento è uguale a uno, che è il valore minimo.
Il metodo Levenberg-Marquadt è infatti un po’ meno efficiente, ma al tempo
stesso molto più robusto del metodo di Gauss-Newton, in quanto rappresenta un
“compromesso” tra il metodo di Gauss-Newton ed il metodo steepest descent che, si
ricorderà, è un metodo a convergenza “garantita” (in proposito si veda il capitolo VI).
Per quanto concerne invece la ricerca di linea, la metodologia implementata è una
interpolazione polinomiale mista quadratica/cubica per la quale si rimanda al
capitolo VI, per informazioni sulla interpolazione quadratica e cubica, e a [Branch,
M.A.et al.] per i dettagli sull’implementazione della tecnica mista.
7.3 Determinazione delle portate concentrate equivalenti alle portate
129
distribuite mediante iterazione del metodo di Gauss-Newton
Il problema di determinare le portate concentrate nei nodi equivalenti alle portate
uniformemente distribuite lungo i tronchi si riconduce, come è noto dalla letteratura (si
veda ad esempio [Citrini D. et al.]), alla determinazione dei coefficienti di ripartizione
α delle portate distribuite.
Tali coefficienti consentono di “trasformare” le portate uniformemente distribuite
lungo l’i-esimo tronco in portate concentrate “equivalenti” nei nodi di monte e di valle
del tronco stesso.
Per determinarli si impone l’uguaglianza delle perdite di carico complessive lungo i
tronchi nel caso di portata uniformemente distribuita e nel caso di portata costante
“fittizia”.
Secondo [Citrini D. et al.] il valore dei coefficienti di ripartizione, nel caso generale
in cui la portata Q entrante nel tronco sia maggiore della portata complessiva P da
distribuire lungo lo stesso tronco, è dato dalla formula seguente:
α = δ - δ2 +
1
−δ
3
(7.1)
con:
δ=
Q
P
(7.2)
130
0.5
0.49
0.48
0.47
α
0.46
0.45
0.44
0.43
0.42
1
2
3
4
5
δ
6
7
8
9
10
Fig. 7.1 − andamento di α in funzione di δ per valori di δ ≥ 1
Questa relazione è rappresentata dal grafico di fig.7.1 dal quale si desume che α è
una funzione crescente di δ, e varia tra 0,4342 (per δ = 0) e 0,5 (per δ → ∞).
In questo modo la portate concentrate nei nodi di monte e di valle, “equivalenti”
alla portata distribuita, valgono rispettivamente: αP e (1−α) P.
Esiste inoltre il caso in cui portata Q entrante nel tronco dal nodo di monte sia
minore della portata complessiva P da distribuire lungo il tronco (cioè δ < 1), ovvero il
caso in cui la portata da distribuire entri nel tronco da entrambi i nodi di monte e di valle
(dove i nodi di monte e di valle sono definibili come i nodi di estremità del tronco aventi
rispettivamente quota piezometrica maggiore ed inferiore) per cui esiste una particolare
131
sezione del tronco in cui la portata è nulla, detto punto neutro del tronco.
Questa eventualità si presenta spesso nei tronchi finali della rete e pertanto non può
essere trascurata ai fini di una corretta risoluzione della rete.
Tuttavia, poiché [Citrini D. et al.] non tratta specificatamente la determinazione dei
coefficienti di ripartizione in questo caso, cioè per δ < 1, si è considerato opportuno farlo
in questa sede, per poter implementare correttamente un programma di risoluzione delle
reti idrauliche che tenga conto anche delle portate distribuite uniformemente lungo i
tronchi.
Q-q⋅ x
Q
P-Q
∆HTOT
x
H A − ∫ dH
∆H1
∆H2
0
Q
A
QA=αP
C
B
P-Q
QB=(1- α)P
q
L1
L2
L
Fig. 7.2 − Andamento delle portate e delle perdite di carico nel
caso in cui P/2 < Q < P ⇒ 0,5 < δ < 1
Il procedimento seguito per determinare α nel caso in cui δ < 1 è stato lo stesso
132
fatto da [Citrini D. et al.] per il caso δ ≥ 1.
Si è imposto che la perdita di carico complessiva attraverso il tronco di condotta,
nel caso di portata uniformemente distribuita, sia uguale alla perdita di carico
complessiva nel caso “equivalente” in cui la portata distribuita è concentrata nei nodi di
monte e di valle e la portata “fittizia” lungo il tronco è costante, cioè:
2
∆HTOT = K L (Q − αP)
(7.3)
dove:
∆HTOT = perdita di carico nel caso di portata uniformemente distribuita
K = coefficiente che tiene conto della scabrezza e del diametro della tubazione
L = lunghezza del tronco
Q = portata che entra nel tronco dal nodo di monte nel caso di portata uniformemente
distribuita
P = portata complessiva da distribuire lungo il tronco
αP = portata concentrata nel nodo di monte equivalente alla portata distribuita
Q−αP = portata “fittizia” costante che attraversa il tronco
A questo punto resta da determinare il valore di ∆HTOT in funzione di Q e P nelle
ipotesi appena viste, ossia per Q < P o anche δ < 1.
D’altra parte, però, avendo posto che Q sia la portata entrante nel tronco dal
nodo di monte, e avendo definito il nodo di monte come il nodo di estremità avente
133
quota piezometrica maggiore, ne consegue che, essendo le portate entranti dai due nodi
Q e P−Q, deve risultare che:
Q ≥ P −Q
⇒
Q≥
P
2
⇒ δ ≥ 0,5
Nel caso in cui dovesse invece essere:
Q<
P
2
⇒ δ < 0,5
allora evidentemente Q sarebbe la portata entrante dal nodo di valle, per cui si potrà
continuare a considerare validi i risultati ottenuti nell’ipotesi che: Q >
P
2
⇒ δ > 0,5
semplicemente assumendo Q pari al valore della portata entrante nel tronco dal nodo
opposto, cioè P−Q. In definitiva, quindi, si determinerà il valore di α per δ compreso tra
0,5 e 1.
In fig.7.2 si è riportato lo schema di un tronco di condotta con portata
uniformemente distribuita lungo il percorso, riferito sempre al caso in cui P/2 < Q < P
⇒ 0,5 < δ < 1. Nello schema si è indicato anche l’andamento qualitativo delle perdite
di carico e si può notare come la perdita di carico complessiva ∆HTOT sia uguale alla
differenza:
∆HTOT = ∆H1 − ∆H2
(7.4)
dove:
∆H1 = perdita di carico tra il nodo di monte A ed il punto “neutro” (a portata nulla) C
∆H2 = perdita di carico tra il nodo di valle B ed il punto “neutro” C
134
Operando in questa maniera si è scisso, in effetti, il tronco AB in due sotto-tronchi
AC e CB nei quali non si ha inversione di portata, per cui le rispettive perdite di carico
∆H1 e ∆H2 possono calcolarsi mediante le seguenti formule (tratte da [Citrini D. et al.]):


(qx)2
H x = H 0 − ∫ dH = K x Q 2 +
− Qqx 
3


0
x
(7.5)
dove:
K = un coefficiente che dipende dalla scabrezza e dal diametro della condotta
Q = portata d’ingresso nel nodo
x = distanza dal nodo d’ingresso del punti in cui si vuole calcolare la perdita di carico
q = portata uniformemente distribuita lungo il tronco =
P
L
per cui, applicando la (7.5) ai due sotto-tronchi si ottiene:
 2 (qL 1 ) 2

− QqL 1 
∆H1 = K L 1 Q +
3


(7.6)


(qL 2 ) 2
2
K
L
(P
Q)
+
−
(P
Q)qL
∆H2 =
2 
2
3


(7.7)
d’altra parte, con semplici ragionamenti di similitudine geometrica, si possono ricavare
L1 e L2 in funzione di Q, P ed L:
L1 =
Q
⋅L
P
,
L2 =
P-Q
⋅L
P
135
pertanto, ricordando che q =
P
, la (7.6) e la (7.7) diventano con pochi sviluppi:
L
∆H1 =
KL
⋅ Q3
3P
(7.8)
∆H2 =
KL
⋅ (P - Q) 3
3P
(7.9)
da cui, sostituendo la (7.8) e la (7.9) nella (7.4), si ricava in definitiva:
∆HTOT = ∆H1 − ∆H2 =
[
KL
⋅ Q 3 - (P - Q) 3
3P
]
(7.10)
A questo punto, per determinare α, basta sostituire la (7.10) nella (7.3), ottenendo:
2
K L (Q−αP) =
[
KL
⋅ Q 3 - (P - Q) 3
3P
]
0.5
0.48
0.46
0.44
α
0.42
0.4
0.38
0.36
0.5
0.55
0.6
0.65
0.7
δ
0.75
0.8
0.85
0.9
0.95
1
Fig. 7.3 − andamento di α in funzione di δ nell’intervallo 0,5 < δ < 1
136
che rappresenta, dati Q e P, una equazione di II grado in α, risolvendo la quale si ricava
(scartando la soluzione per cui risulta α > 1):
Q
Q 3 − (P − Q) 3
−
α=
P
3P 3
(7.11)
che, scritta in funzione di δ (ricordando che δ =
α= δ−
1
3
Q
) , diventa:
P
δ 3 − (1 − δ ) 3
(7.12)
valida, si ricorda, nell’intervallo 0,5 < δ < 1. In fig.7.3 è mostrato l’andamento di α in
funzione di δ secondo la funzione (7.12).
Una volta risolto il problema della formulazione teorica dei coefficienti α di
ripartizione delle portate concentrate, una rete in cui compaiano portate distribuite può
essere facilmente risolta in modo iterativo.
Infatti non è possibile risolvere tali reti in una volta sola in quanto nelle formule
(7.1) e (7.12) per la determinazione di α compaiono le portate Q entranti nei singoli
tronchi di condotta della rete.
D’altra parte, tali portate Q non sono note a priori in quanto, per poterle
determinare, è necessario risolvere la rete, ma quest’ultima, a sua volta, non può essere
risolta con precisione senza conoscere i coefficienti α che, come si è visto, ripartiscono
le portate distribuite, sotto forma di portate concentrate, nei vari nodi della rete.
Per ovviare al problema si è pensato di assegnare ai coefficienti α un valore iniziale
137
di tentativo pari a 0,5, che è comunque un valore abbastanza vicino al valore effettivo
soprattutto nei rami iniziali in cui le portate che entrano nei nodi sono molto maggiori
delle portate distribuite (si veda in proposito la fig.7.1).
In tal modo è possibile attribuire un valore alle portate concentrate nei nodi e
risolvere la rete con le metodologie esaminate nei paragrafi precedenti.
Le portate Q’ ottenute dalla risoluzione del sistema non rappresentano (ci si
riferisce sempre al caso in cui si siano adoperare le portate distribuite e quindi la
schematizzazione fin qui vista) le portate Q effettivamente entranti nei tronchi, bensì le
portate “fittizie” Q − αP , cioè quelle portate costanti tali da ingenerare nella rete delle
perdite di carico uguali a quelle che si sarebbero avute in caso di portate uniformemente
distribuite.
Per riottenere le portate Q entranti nei singoli tronchi della rete è sufficiente quindi
risommare a ciascuna portata “fittizia” Q’ la portata αP che si era ritenuta
“fittiziamente” concentrata nel nodo di monte mentre in realtà, all’ingresso del tronco,
appartiene ancora tutta a Q in quanto la “distribuzione” deve ancora iniziare.
A questo punto è possibile reiterare il procedimento dopo aver calcolato, però, i
nuovi valori di α in funzione degli ultimi valori delle portate entranti nei tronchi,
utilizzando per ogni tronco la formula (7.1) o (7.12) a seconda del valore di δ =
Q
.
P
Si noti che, a partire dalla seconda iterazione, è possibile utilizzare come punto
iniziale del metodo di Gauss-Newton la soluzione del sistema della iterazione
precedente in quanto le portate concentrate, e conseguentemente il sistema di equazioni,
138
non variano, da una iterazione all’altra, in modo così sensibile da far spostare il
“vecchio” punto di “minimo globale” nella concavità di un “minimo locale”.
A rigore, comunque, questa affermazione non è dimostrabile; tuttavia le reti, anche
complesse, usate come test per il programma hanno mostrato che per ogni singola
iterazione successiva alla prima (per la prima iterazione infatti il punto iniziale viene
sempre individuato con gli algoritmi genetici) il metodo di Gauss-Newton è sempre
riuscito a convergere al “minimo globale”.
Ciò non esclude comunque la possibilità, qualora si desideri un’ulteriore garanzia
di robustezza del programma, di poter adoperare gli algoritmi genetici per la
determinazione del punto iniziale in ciascuna iterazione.
In definitiva, ad ogni singola iterazione, si sarà determinato un vettore di
coefficienti α di ripartizione (un coefficiente per ogni tronco in cui si è supposto di
distribuire la portata in modo uniforme lungo il percorso) distinto dal vettore precedente
ma con scarto, di volta in volta, sempre più piccolo.
Si è deciso di interrompere l’iterazione quando la varianza del vettore “scarto”,
definito come vettore differenza tra l’ultimo vettore dei coefficienti α ed il penultimo,
-10
scende sotto un valore di soglia predefinito che si è posto, di default, pari a 10
.
In fig.7.4 si è mostrato il diagramma di flusso che schematizza il metodo iterativo
sin qui illustrato.
139
START
pone i coefficienti di ripartizione
α iniziali uguali a 0,5
determina le portate
concentrate equivalenti
risolve la rete
valuta i nuovi coefficienti
di ripartizione α in base
alle nuovi valori di Q/P
calcola il vettore scarto
tra i vecchi e i nuovi
valori dei coefficienti α
calcola la varianza tra gli
elementi del vettore
scarto
no
varianza <
del valore di
soglia ?
si
END
140
Fig. 7.4
7.4 Calcolo delle perdite di carico con le formule pratiche o con la formula di
Colebrook
Nel programma si è prevista la duplice possibilità di valutare le perdite di carico
tramite le formule pratiche (valide nell’ipotesi di moto assolutamente turbolento)
oppure con la formula di Colebrook (valida anche per moto turbolento di transizione).
Per quanto riguarda la prima possibilità, ovvero il calcolo delle perdite di carico
mediante le formule pratiche, si è utilizzata la formula di Darcy:
J = u Q2
β
D5
con u =
(7.13)
Per la determinazione del coefficiente β, funzione della scabrezza e del diametro
della tubazione, esistono numerose formule, tra le quali si è scelto di adottare la
formula seguente:

2γ 
β = 0,000857  1 +

D

2
(7.14)
dove:
D = diametro interno della condotta (espresso in metri)
γ = indice di scabrezza della condotta (compreso usualmente tra 0,09 e 0,23)
Per cui, tra i dati di “INPUT” da fornire al programma, ci saranno anche γ e D di
ogni singolo tronco della rete.
Dopodiché, una volta noti i valori ui dei tronchi della rete, è possibile costruire la
matrice diagonale R del sistema matriciale di equazioni (4.1) che governa la rete, i cui
elementi ri sono uguali a ui Li , dove Li sono le lunghezze rispettive dei tronchi.
141
Permane, tuttavia, il problema della validità di questa impostazione. Tali formule
sono infatti valide nel campo del moto assolutamente turbolento nel quale le perdite di
carico risultano effettivamente proporzionali al quadrato della portata.
Non sono invece applicabili, a rigore, al regime di transizione ossia al caso di moto
turbolento di transizione.
Questo tipo di moto può presentarsi soprattutto nei tronchi terminali della rete dove
i numeri di Reynolds sono mediamente più bassi (a parità di velocità del fluido, infatti, il
numero di Reynolds risulta direttamente proporzionale al diametro) o nel caso in cui
vengano impiegate tubazioni molto “lisce”, ossia con scabrezza molto bassa.
Per ottenere risultati validi anche nel campo del moto turbolento di transizione
conviene pertanto utilizzare la formula di Colebrook; anche questa, come si vedrà tra
breve, presenta maggiori difficoltà di implementazione.
Per calcolare le perdite di carico con la formula di Colebrook, si è adoperato un
ragionamento analogo
a quello visto per la determinazione dei coefficienti α di
ripartizione delle portate distribuite.
Infatti, nella formula di Darcy-Weisbach:
Q2
V2
J=λ
= 8λ
2gD
gD 5 π 2
(7.15)
l’indice di resistenza λ , calcolato con la formula di Colebrook:
 2,51
1 ε

= −2 log 10 
+
3,71
D
λ
λ
Re


1
(7.16)
risulta, a sua volta, funzione della portata Q, in quanto dipende dal numero di
142
Reynolds:
Re =
ρvD 4 Q
=
µ
πν D
mentre il termine
(7.17)
ε
è un numero puro che rappresenta la scabrezza relativa, dove ε,
D
avente la dimensione di una lunghezza, rappresenta la scabrezza (in analogia con la
scabrezza d della formula di Nikuradse).
Pertanto ci si trova davanti alla difficoltà, analogamente al caso della
determinazione dei coefficienti α, di non poter valutare direttamente gli indici di
resistenza λ dei singoli tronchi della rete in quanto non sono note a priori le portate che
attraversano i tronchi.
D’altra parte non è possibile valutare le portate (cioè risolvere la rete) senza prima
conoscere gli indici di resistenza λ che legano le perdite di carico alle portate secondo la
formula (7.15).
Anche in questo caso quindi, per ovviare al problema, si è ricorso ad un metodo
iterativo in cui ad ogni passo viene risolta la rete adoperando gli indici di resistenza λ
calcolati in base alle portate precedenti, ossia ottenute dalla risoluzione della rete nel
passo precedente.
Ovviamente, per avviare l’iterazione, occorre assegnare agli indici di resistenza λ
un valore iniziale in modo da poter risolvere la rete una prima volta, così da determinare
una stima, seppur imprecisa, delle portate che attraversano i tronchi.
Si è deciso allora di assegnare ai λ iniziali il valore corrispondente al moto
143
assolutamente turbolento, nel quale le perdite di carico sono direttamente
proporzionali al quadrato delle portate e pertanto gli indici di resistenza λ non
dipendono dal numero di Reynolds, ossia dalle portate.
In definitiva non si fa altro che trascurare, per la prima iterazione, il primo
termine della formula di Colebrook (che degenera in tal guisa nella formula di
Nikuradse), che diventa:
 1 ε
= −2 log 10 

3,71
D
λ


1
(7.19)
da cui, conoscendo i diametri e le scabrezze dei singoli tronchi della rete, si determinano
agevolmente i valori dei indici di resistenza λ iniziali.
Come condizione finale dell’iterazione si è invece posto, similmente al caso della
determinazione dei coefficienti α, che la varianza tra gli elementi del “vettore scarto”
-10
scenda sotto un valore di soglia prestabilito (pari, di default, a 10 ), dove si è definito
“vettore scarto” la differenza tra il vettore contenente gli indici di resistenza λ ottenuti
con l’ultima iterazione ed il vettore contenente gli indici di resistenza λ dell’iterazione
precedente.
Si noti che dopo aver determinato, ad ogni iterazione, i valori di λ, poiché si è
impiegato sempre il sistema matriciale (4.1) per risolvere la rete, e in tale sistema la
matrice R è definita come la matrice diagonale i cui elementi ri sono uguali a ui Li ,
occorre “convertire” gli indici di resistenza λ nei coefficienti ui .
144
START
Determina il valore iniziale per i
coefficienti di resistenza λ
risolve la rete
valuta i nuovi coefficienti
di resistenza λ in base
alle nuove portate
calcola il vettore scarto
tra i vecchi e i nuovi
valori dei coefficienti λ
calcola la varianza tra gli
elementi del vettore
scarto
no
varianza <
del valore di
soglia ?
si
END
145
Fig. 7.5
Ciò può farsi semplicemente uguagliando la (7.13) e la (7.15), ottenendo:
u=
8 λ
gπ 2 D 5
(7.20)
In fig.7.5 è mostrato il diagramma di flusso che schematizza il metodo iterativo sin
qui illustrato.
Un problema a parte è stato, infine, quello della forma implicita della formula di
Colebrook, in cui λ non è “esplicitabile” e va pertanto determinato risolvendo per via
iterativa l’equazione nell’incognita λ:
 2,51
1 ε
 = 0
+ 2 log 10 
+
3,71
D
λ
λ
Re


1
(7.21)
La ricerca iterativa della soluzione della (7.21) è stata affidata alla stessa
implementazione del metodo di Gauss-Newton utilizzata per risolvere il sistema
matriciale di equazioni (4.1) (cioè il problema di ottimizzazione (4.8) ), assegnando
come funzione (stavolta scalare) da annullare la funzione al primo membro della (7.21) e
come punto iniziale di ricerca il valore di λ precedentemente calcolato per lo stesso
tronco.
7.5 Ulteriori considerazioni sulla scelta del punto iniziale
L’uso degli algoritmi genetici per la determinazione del punto iniziale di ricerca,
alla luce delle considerazioni teoriche emerse in questi capitoli e della sperimentazione
numerica svolta, di cui si parlerà nel paragrafo successivo, può ritenersi una metodologia
146
che “irrobustisce” i metodi classici di risoluzione delle reti in quanto ne “garantisce” la
convergenza.
Tuttavia diversi autori, si veda ad esempio [Curto, G. et al.], ritengono di aver
risolto il problema del punto iniziale del metodo di Newton (la maggior parte degli
autori fa riferimento in particolare al metodo di Newton-Raphson) scegliendo una
distribuzione congruente a caso per le portate, e dei valori qualsiasi per le altezze
piezometriche.
Quest’ipotesi sarebbe suffragata dall’esperienza ovvero dall’aver risolto decine e
decine di reti, anche complesse, e aver riscontrato che, con quel punto iniziale, il metodo
di Newton converge sempre al “minimo globale”.
In effetti, utilizzando un punto di ricerca siffatto per le tre reti su cui si è “testato”
il programma, in tutti e tre i casi si è riscontrata la convergenza del metodo al “minimo
globale”.
Ciononostante, non è possibile dimostrare che il metodo converga “certamente” al
“minimo globale” a partire da un punto iniziale scelto nel suddetto modo, trattandosi di
una modalità di scelta alquanto “euristica”.
Si è comunque ritenuto opportuno di non trascurare questa ulteriore informazione
aggiungendo alla popolazione iniziale casuale dell’algoritmo genetico implementato (si
veda in proposito il paragrafo 7.2.1), un ventunesimo cromosoma i cui geni relativi alle
portate soddisfano la condizione di “congruenza” suddetta.
Per ottenere la soluzione di tentativo “congruente”, si è risolta previamente la rete
ipotizzando che le perdite di carico nella rete fossero lineari, ossia ponendosi nell’ipotesi
147
di moto laminare.
La risoluzione della rete, in questo caso, consiste nel risolvere un semplice sistema
lineare di N equazioni in N incognite.
La soluzione, ovviamente, non ha alcun “significato fisico” in quanto il moto
dell’acqua nelle condotte della rete è lungi dall’essere laminare, tuttavia le portate sono
sicuramente “congruenti” in quanto soddisfano le equazioni di continuità del sistema.
Aggiungendo in tal modo la soluzione di “moto laminare” alla popolazione iniziale
di cromosomi dell’algoritmo genetico, si raggiunge il duplice scopo di non perdere
l’eventuale vantaggio di conoscere previamente un “buon” punto iniziale, e, al tempo
stesso, di poter validare la “bontà” di tale punto.
Difatti è l’algoritmo genetico stesso, in tal modo, a riconoscere l’eventuale “bontà”
del punto suggerito e a far sì che il resto della popolazione si adegui velocemente a
questo “super” individuo.
Viceversa, se il punto non è “buono”, questo viene subito scartato dal processo
selettivo in favore di individui più “adatti”.
7.6 Scelta di alcune reti “test” e raffronto dei risultati col metodo delle VPH
Per “testare” il programma sono state utilizzate quattro distinte reti idrauliche
aventi diversi gradi di complessità (per le caratteristiche geometriche e idrauliche di
ciascuna rete si veda l’appendice B).
Le reti suddette sono state risolte previamente col metodo delle “Altezze
Piezometriche Virtuali” (anche detto metodo delle VPH), in modo da poter raffrontare i
148
risultati di una metodologia “collaudata” con quelli del programma.
Tale metodo, elaborato dal Prof. A. Castorani e dal Prof. A.F. Piccinni
del
Politecnico di Bari, basa la ricerca della soluzione di “moto uniforme” di una rete
sullo studio del transitorio del moto vario elastico, considerando il moto uniforme
come quello stato di equilibrio finale a cui tende asintoticamente il moto vario elastico
ingenerato nella rete, ipotizzata in condizioni iniziali di quiete con erogazioni nulle, da
una perturbazione “fittizia”, ottenuta simulando l’apertura brusca e contemporanea di
tutte le erogazioni.
Dopodiché si sono risolte le stesse reti con il programma implementante la tecnica
mista algoritmi genetici / metodo di Gauss-Newton , oggetto del presente studio.
Ciascuna rete è stata risolta più volte utilizzando le diverse opzioni descritte nei
paragrafi precedenti.
La prima volta, ogni rete è stata risolta senza adoperare né la ricerca iterativa dei
coefficienti di ripartizione delle portate distribuite α (posti semplicemente uguali a 0,5),
né la ricerca iterativa dei coefficienti di resistenza λ calcolati con la formula di
Colebrook.
La seconda volta è stata omessa nuovamente la ricerca iterativa dei coefficienti di
ripartizione α mentre si è effettuata l’iterazione per i coefficienti di resistenza λ.
La terza e la quarta volta si sono risolte solamente quelle reti in cui erano presenti
portate uniformemente distribuite (due reti su quattro) effettuando in entrambi i casi la
ricerca iterativa dei coefficienti di ripartizione α (avente senso solo in presenza di
149
portate distribuite) e, solo nell’ultimo caso, anche l’iterazione per i coefficienti di
resistenza λ.
I risultati, ottenuti per ciascuna rete con le diverse opzioni, sono stati elaborati per
mezzo di foglio elettronico e confrontati con i risultati del metodo delle VPH.
In particolare, sono stati valutati gli scarti relativi sulle portate entranti ed uscenti
dai tronchi e sulle quote altezze piezometriche (cioè le quote piezometriche riferite alle
quote dei nodi) tra i valori ottenuti con il programma, nei diversi casi appena enumerati,
ed i valori ottenuti con il metodo delle VPH.
Infine, per ciascuna voce (portate entranti, uscenti e altezze piezometriche), è stato
calcolato lo scarto relativo medio e la varianza, ossia la radice quadrata dello scarto
quadratico medio (tali risultati sono riportati, per ogni rete, in appendice C).
Da quest’analisi risulta innanzitutto che il programma funziona correttamente in
quanto i risultati ottenuti senza l’iterazione su λ sono pressoché coincidenti con quelli
del metodo delle VPH anche per le reti più complesse, come ad esempio quella di
TorreMaggiore (FG) avente 165 tronchi e 107 nodi.
La coincidenza dei risultati risulta, comunque, più spinta nelle due reti in cui non è
prevista l’erogazione di portate distribuite, dove lo scarto relativo medio, per la rete
piccola (8 tronchi e 5 nodi) è inferiore al 0,002 % sia sulle portate sia sulle altezze
piezometriche, mentre per la rete più grande (86 tronchi e 58 nodi) si aggira intorno al
2% sulle portate e intorno al 0,05% sulle altezze piezometriche.
In questo caso gli scarti sono probabilmente da attribuirsi all’impiego, nella
risoluzione della rete con i due rispettivi metodi, di approssimazioni numeriche diverse.
150
Viceversa, nelle altre due reti, dove ci sono portate distribuite lungo i tronchi, i
valori dello scarto relativo medio sono, senza iterazione sui coefficienti di ripartizione
α, all’incirca doppi rispetto ai precedenti, sebbene anche in questo caso si evinca una
certa proporzionalità tra lo scarto relativo medio e la complessità della rete.
Difatti si passa da valori dello scarto relativo medio del 2,7% sulle portate e del
0,8% sulle altezze piezometriche per la rete piccola (16 tronchi e 12 nodi), a valori del
4,8% sulle portate e del 1,2% sulle altezze piezometriche per la rete grande (165 tronchi
e 107 nodi).
Adoperando invece la ricerca iterativa sui coefficienti di ripartizione α i valori
dello scarto relativo medio sulle portate scendono per la rete piccola al 1% e per la rete
grande al 2%, mentre il valore dello scarto medio relativo sulle altezze piezometriche
resta quasi invariato.
Questo fatto costituisce una sostanziale verifica circa la validità e l’utilità della
ricerca iterativa dei coefficienti di ripartizione α.
Nel metodo delle VPH, infatti, è già implementata l’erogazione di portate
distribuite lungo i tronchi, sebbene in questo metodo la portata sia in effetti distribuita in
modo non perfettamente uniforme, ma concentrata in un certo numero i sezioni in cui è
discretizzato il singolo tronco.
Era pertanto prevedibile un aumento degli scarti dai risultati del metodo delle VPH
per le soluzioni ottenute ipotizzando semplicemente α = 0,5 , in quanto questa posizione
è valida solo in prima approssimazione e si discosta dai valori effettivi soprattutto, come
151
si è visto nel paragrafo 7.3, nei tronchi finali in cui la portata che attraversa i tronchi
risulta essere dello stesso ordine di grandezza della portata da distribuire.
Il fatto che gli scarti relativi diminuiscano per i risultati ottenuti adoperando la
ricerca iterativa dei coefficienti α, tornando ad assumere all’incirca lo stesso ordine di
grandezza riscontrato per le reti senza portate distribuite (in cui questo problema non
sussiste), indica chiaramente che con tale metodologia iterativa i risultati sono più
precisi e rispondenti alle ipotesi di funzionamento della rete.
E’ anzi lecito ipotizzare che gli scarti “residui” siano attribuibili, oltre che ai
menzionati problemi di approssimazione numerica, al fatto che il metodo delle VPH non
operi con portate distribuite omogeneamente lungo il percorso bensì con portate
distribuite discretizzate per cui i risultati potrebbero discostarsi, seppur lievemente, dalla
soluzione esatta del problema.
Un discorso a parte meritano invece i risultati ottenuti mediante la ricerca iterativa
dei coefficienti di resistenza λ.
In questo caso è infatti scontato che vi siano degli scostamenti delle soluzioni
rispetto ai valori ottenuti in precedenza in quanto, come visto nel paragrafo 7.4,
cambiano proprio le equazioni che governano il sistema ed in particolare la
determinazione delle perdite di carico.
Difatti tale scostamento si evince semplicemente osservando la variazione dello
scarto relativo medio (calcolato sempre in riferimento ai risultati del metodo delle VPH)
relativo ai risultati ottenuti rispettivamente con e senza iterazione dei coefficienti di
resistenza λ.
152
Si tratta comunque di variazioni comprese nell’intervallo 0,1-1% che quindi
giustificano, in un certo senso, l’approssimazione che si compie considerando le portate
sempre nel regime di moto assolutamente turbolento.
Tuttavia questa approssimazione resta lecita solo fintantoché si considerano tubi
aventi elevati valori di scabrezza come quelli impiegati per questi test, per i quali si
aveva un indice di scabrezza γ pari a 0,23.
Adoperando tubi “lisci”, ossia con bassi valori di scabrezza, come si è già
accennato nel paragrafo 7.4, l’approssimazione non risulta più lecita in quanto le portate
si spostano nel campo di moto del regime turbolento di transizione.
-3
10
errore
-4
10
-5
10
-2
10
-4
10
-6
-8
10
10
epsilon di Colebrook
-10
10
-12
10
Fig. 7.6 − Diagramma in scala logaritmica dell’errore commesso
nel valutare le portate in funzione della scabrezza ε
153
errore sulle altezze piezometriche residue
2
10
1
10
0
10
-1
10
-2
10
-4
-6
10
-8
10
10
epsilon di Colebrook
-10
10
-12
10
Fig. 7.7 − Diagramma in scala logaritmica dell’errore commesso nel
valutare le altezze piezometriche in funzione della scabrezza ε
Si vedano in proposito le figure 7.6 e 7.7 in cui sono mostrati rispettivamente gli
errori medi relativi tra le soluzioni ricavate con l’approssimazione del moto
assolutamente turbolento e quelle “esatte” ottenute in modo iterativo con la formula di
Colebrook, relativamente a diversi valori della scabrezza ε per la rete di Cao (è la rete
più piccola composta di 8 tronchi e 5 nodi).
Dai
risultati
si
evince
come
l’imprecisione
commessa
impiegando
l’approssimazione suddetta aumenti sempre più, man mano che la scabrezza relativa
diminuisce, fino a stabilizzarsi intorno ad un valore di massimo all’incirca costante..
154
7.7 Convergenza degli algoritmi genetici applicati alle reti “test” e problema
dello “slow-finish”
Si è accennato più volte nel corso di questo lavoro al problema della velocità di
convergenza verso la soluzione degli algoritmi genetici.
Si è parlato di un rallentamento progressivo della velocità di convergenza con
andamento approssimativamente asintotico, man mano che l’algoritmo si avvicina alla
soluzione del problema di ottimizzazione, denominato in letteratura “slow finish”.
Si è detto anche che il rallentamento finale risultava tale, per i casi di reti più
complesse, da dover optare per una tecnica mista che permettesse di continuare a
beneficiare delle capacità “esplorativa” degli algoritmi genetici senza tuttavia dover
attendere per tempi eccessivamente lunghi (si è accennato a tempi di giorni e settimane),
ovvero delegando la componente “approfonditiva” dell’algoritmo ai metodi classici di
ottimizzazione di Newton.
Per dare una dimostrazione di quanto detto vengono illustrati, nelle figure seguenti
(dalla fig. 7.8 alla fig. 7.15), i risultati di convergenza ottenuti per le quattro reti “test”
(per la descrizione di queste reti si veda l’appendice B) facendo compiere all’algoritmo
genetico 10000 generazioni per ogni rete.
Per ogni rete si sono riportate, sia in scala logaritmica sia in scala semi-logaritmica,
in ascissa il numero di generazioni ed in ordinata il valore della funzione obiettivo
corrispondente al miglior (ossia al più adatto) individuo della popolazione.
Dove la funzione obiettivo del problema di ottimizzazione (4.8), definita in (4.9), è
stata ottenuta assegnando un valore unitario ai pesi relativi alle equazioni di continuità
155
-2
ed un valore pari a 10
ai pesi relativi alle equazioni di equilibrio, in modo da
“omogeneizzare” la convergenza di portate e altezze piezometriche rispetto al sistema di
misura scelto, ossia il S.I. (in proposito si veda il capitolo IV).
Dai risultati mostrati nelle figure emerge in maniera evidente il fenomeno dello
“slow finish” e si nota come, per le rete più complesse, dopo 10000 generazioni
(effettuate in circa 2 ore con un Pentium II 350Mhz), la soluzione sia molto distante
-7
dalla precisione richiesta di 10 , ottenibile altrimenti in pochi secondi con la tecnica
mista.
Nelle figure seguenti si è riportato in ascissa il numero di generazioni e in ordinata
l’errore residuo.
156
2
10
0
10
-2
10
-4
10
-6
10
-8
10
0
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
Fig. 7.8 − algoritmi genetici applicati alla soluzione della rete di Cao
Diagramma in scala semi-logaritmica
2
10
0
10
-2
10
-4
10
-6
10
-8
10
0
10
1
10
2
10
3
10
4
10
Fig. 7.9 − algoritmi genetici applicati alla soluzione della rete di Cao
Diagramma in scala logaritmica
157
3
10
2
10
1
10
0
10
-1
10
-2
10
-3
10
0
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
Fig. 7.10 − algoritmi genetici applicati alla soluzione della rete di Enc
Diagramma in scala semi-logaritmica
3
10
2
10
1
10
0
10
-1
10
-2
10
-3
10
0
10
1
10
2
10
3
10
4
10
Fig. 7.11 − algoritmi genetici applicati alla soluzione della rete di Enc
Diagramma in scala logaritmica
158
5
10
4
10
3
10
2
10
1
10
0
10
-1
10
-2
10
0
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
Fig. 7.12 − algoritmi genetici applicati alla soluzione della rete di Mignosa
Diagramma in scala semi-logaritmica
5
10
4
10
3
10
2
10
1
10
0
10
-1
10
-2
10
0
10
1
10
2
10
3
10
4
10
Fig. 7.13 − algoritmi genetici applicati alla soluzione della rete di Mignosa
Diagramma in scala logaritmica
159
5
10
4
10
3
10
2
10
1
10
0
10
-1
10
0
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
Fig. 7.14 − algoritmi genetici applicati alla soluzione della rete di TorreMaggiore
Diagramma in scala semi-logaritmica
5
10
4
10
3
10
2
10
1
10
0
10
-1
10
0
10
1
10
2
10
3
10
4
10
Fig. 7.15 − algoritmi genetici applicati alla soluzione della rete di TorreMaggiore
Diagramma in scala logaritmica
160
RIFERIMENTI BIBILIOGRAFICI
[1]
D.Citrini e G.Noseda “Idraulica” (Casa Editrice Ambrosiana, Milano 1987)
[2] G. Curto e A. Tumbiolo Metodi di calcolo delle reti di distribuzione. In
“Tecniche per la difesa dall’inquinamento” Atti del 14° Corso di Aggiornamento –
Giugno 1993. A cura di G.Frega (Editoriale Bios, 1993)
[3] V.Comincioli “Metodi Numerici e Statistici per le Scienze Applicate” (Casa
Editrice Ambrosiana, Milano 1992)
[4] M.A. Branch e
MathWorks, Inc. 1996)
A. Grace “Optimization Toolbox User’s Guide” (the
[5] J.H. Holland “Adaptation in natural and artificial system” (Univerisity of
Michigan Press,1975)
[6] D.E. Goldberg “Genetic Algorithms in Search, Optimization and Machine
Learning” (Addison-Wesley, Reading, MA, 1989)
[7] Z. Michalewicz “Genetic Algorithms + Data Structures = Evolution
Programs” (Springer – Verlag, Berlin Heidelberg, 1992)
[8] J.A. Joines e C.R. Houck, On the use of non-stationary penalty functions to
solve constrained optimization problems with genetic algorithms. In ”1994 IEEE
International Symposium Evolutionary Computation, Orlando FL ”, pp 579-584
[9] C.R. Houck, J.A. Joines e M.G. Kay “A Genetic Algorithm for Function
Optimization: A Matlab Implementation” (North Carolina State Univeristy NC)
[10] O.Schneider, M.Belmont e D.A. Savic “Genetic Algorithms for Non-Linear
Generalised Cross Correlation” (University of Exeter, Devon - U.K. 1996)
[11] H.O.Poyhonen e D.A. Savic “Symbolic Regression Using Object-Oreiented
Genetic Programming” (University of Exeter, Devon - U.K.)
161
Appendice A
Listato delle funzioni principali del programma
function []=netga(nomefile,alfasino,lambdasino,...
predimsino,gastop,Numgen,precalfa,preclambda,weight)
%Programma per il calcolo delle reti idrauliche in pressione
%
%mediante una tecnica mista: algoritmi genetici/metodo Gauss-Newton
%
%di Enrico Masini - Politecnico di Bari 15 giugno 1999
%
%
%
%function []=retega(nomefile,alfasino,lambdasino...
%
,gastop,Numgen,precalfa,preclambda,weight)
%
%gli argomenti sono:
%
% nomefile
è il nome con cui sono identificati i 3 file di
input della rete:
%
in1"nome file".dat in2"nomefile".dat
in3"nomefile".dat ; per la
%
struttura dei 3 file si veda la rete di esempio
cao ed i 3 file
%
relativi in1cao.dat in2cao.dat in3cao.dat
%
% alfasino
è un flag da porre a 1 oppure a 0 (di default è
0), rispettivamente
%
se si desidera o meno la determinazione iterativa
dei coefficienti
%
alfa di ripartizione delle portate distribuite tra
il nodo di monte
%
e quello di valle (altrimenti alfa viene posto di
default = 0.5)
%
% lambdasino è un flag da porre a 1 oppure a 0 (di default è
0), rispettivamente
%
se si desidera o meno l'uso della formula di
Colebrook per il calcolo
%
delle perdite di carico (in questo caso si
effettua una iterazione
%
sui valori di lambda calcolati in funzione delle
portate), altrimenti
%
viene adoperata la formula empirica j= u q^2
%
% predimsino è un flag da porre a 1 oppure a 0 (di default è
1), rispettivamente
%
se si desidera o meno l'aggiunta, alla popolazione
iniziale degli
%
algoritmi genetici, di una soluzione di
predimensionamento che sia
%
"congruente" (ossia che verifichi l'eq.di
continuità delle portate)
%
ottenuta linearizzando il sistema di equazioni,
ossia ipotizzando
%
il moto laminare
%
% gastop
è un flag da porre a 1 oppure a 2 (di default è
1), rispettivamente
%
se si desidera il primo o il secondo tipo di
condizione terminale
%
per gli algoritmi genetici (i quali servono a
determinare un buon
%
punto inziale,ossia interno alla concavità del
minimo globale, per
%
il metodo di Gauss-Newton)
%
% Numgen
è il numero di generazioni effettuate dagli
algoritmi genetici (di
%
default 500) prima di arrestarsi per verificare se
si è giunti o
%
meno in prossimità del minimo globale del problema
in modo da
%
passare alla più rapida ricerca di Gauss-Newton
%
% precalfa
è la precisione minima richiesta per il
coefficiente alfa (di default
%
è 1e-10) prima di terminare l'iterazione
%
% preclambda è la precisione minima richiesta per lambda (di
default è 1e-10)
%
prima di terminare l'iterazione
%
% weight
è il peso da assegnare, nella funzione obiettivo
degli algoritmi
%
genetici FUNGA, alle altezze piezometriche per
renderle omogenee
%
numericamente alle portate e bilanciare così la
convergenza
%definisco le variabili globali da compartire con le funzione
obiettivo fun e funga
global weight D An As A R Q Qdistr hs a numlati numnodi...
numnodint serbatoi nodinterni Reynolds epsilon
%immetto i valori di default per i campi vuoti della funzione
if nargin < 9,
%immette il valore di default per weight
weight = 1e-2;
end
if nargin < 8,
%immette il valore di default per preclambda
preclambda = 1e-10;
end
if nargin < 7,
%immette il valore di default per precalfa
precalfa = 1e-10;
end
if nargin < 6,
Numgen = 500;
end
%immette il valore di default per numgen
if nargin < 5,
iniziale
gastop = 1;
determina
end
laminare)
%di default si disattiva la ricerca del punto
%mediante algoritmi genetici (e quindi si
%ipotizzando che il regime del flusso sia
if nargin < 4,
%di default sceglie di aggiungere alla
popolazione iniziale
predimsino = 1; %degli algorimti genetici la soluzione di moto
laminare
end
if nargin < 3,
lambda
lambdasino = 0;
end
%di default disattiva la ricerca iterativa di
if nargin < 2,
alfa
alfasino = 0;
end
%di default disattiva la ricerca iterativa di
%carico i dati della rete dai 3 file
%in1"nome file".dat , in2"nomefile".dat in3"nomefile".dat
eval (['load in1' nomefile '.dat;']);
eval (['load in2' nomefile '.dat;']);
eval (['load in3' nomefile '.dat;']);
eval (['in1 = in1' nomefile ';']);
eval (['in2 = in2' nomefile ';']);
eval (['in3 = in3' nomefile ';']);
numlati=size(in1,1);
numnodi=size(in2,1);
%ricavo la matrice di connessione lati-nodi A
A=zeros(numlati,numnodi);
for i=1:numlati,
A(i,in1(i,2))=-1;
A(i,in1(i,3))=+1;
end
%ricavo il vettore delle altezza piezometriche dei nodi esterni
(serbatoi)
serbatoi = find(in2(:,3));
hs
= in2(serbatoi,4)';
%determino in modo automatico il vettore dei nodi interni a partire
dal vettore serbatoi
nodinterni = find(in2(:,3)==0);
%ricavo le due sottomatrici An e As contenenti rispettiv.le colonne
dei nodi interni ed esterni
An = A(:,nodinterni);
As = A(:,serbatoi);
%ricavo il vettore delle lunghezze dei tronchi
L = in1(:,5)';
%ricavo il vettore delle quote geodetiche dei nodi
Hnodi
= in2(:,2)';
Hnodint = Hnodi(find(in2(:,3)==0));
%ricavo il vettore dei nodi esterni(serbatoi)
serbatoi = [find(in2(:,4))];
numnodint= numnodi - length(serbatoi);
%ricavo il vettore delle portate distribuite concentrate nei nodi
(interni ovviamente)
Qiniz
= 1e-3 .* in2(nodinterni,1)';
%inserisco il vettore dei diametri dei singoli tronchi
p1
= in3(:,1)';
p2
= in1(:,7)';
D
= 1e-3 * p1(p2);
%inserisco il coefficiente di scabrezza di Darcy dei singoli tronchi
p1
= in3(:,2)';
gamma= p1(p2);
%la sezione seguente del codice è relativa alla risoluzione della
rete:
%ricavo le costanti delle perdite dicarico delle tubazioni H=L*u*Q^a
deve u = beta*D^(-n)
beta = 0.000857*(1+2.*gamma./(D.^0.5)).^2;
%per la formula di Bazin
u
= beta .* (D.^(-5));
%ricavo la matrice diagonale R contenente i coefficienti b=u*L
essendo H=b * Q ^ a
R
= diag (u .* L);
a
= 2;
%ricavo le portate concentrate equivalenti alle portate distribuite
supponendo
%che (non conoscendo ancora le portate) alfa=0.5 per il
predimensionamento
Qdistr = in1(:,4)' .* 1e-3;
Qdistr(find(Qdistr==0))=-1; %stratagemma per evitare divisioni per 0
qualora Qdistr=0
alfamonte
alfavalle
= ones(1,numlati) .* 0.5;
= ones(1,numlati) .* 0.5;
alfamonte = alfamonte .* (Qdistr ~= -1); %nel caso che ci siano
portate distribuite
alfavalle = alfavalle .* (Qdistr ~= -1); %nulle azzera alfamonte e
alfavalle
Qmonte =
Qvalle =
alfamonte
alfavalle
.* Qdistr;
.* Qdistr;
Amonte = (A - abs(A)) ./ (-2);
Avalle = (A + abs(A)) ./ (+2);
Qconc
= Amonte' * Qmonte' + Avalle' * Qvalle';
Q = Qiniz + Qconc(nodinterni)';
%ricerca una soluzione "congruente" linearizzando il sistema ossia
ipotizzando la linearità
%delle perdite di carico, il che equivale a supporre che il flusso
sia laminare
if predimsino
%ricavo le costanti delle perdite dicarico del moto laminare
H=L*u*Q
sigma = 4.1554e-6;
%ricordando che J=4.1554 e-6 *Q / D^4 =
sigma*Q*D^(-m) = u * Q
m = 4;
u = sigma .* (D.^(-m));
U = diag (u .* L);
%determino la matrice dei coefficienti del sistema lineare
MATRCOEF = [[An' zeros(numnodint,numnodint)];[U An]];
%quindi determino il vettore dei termini noti
VETTNOTI = [Q (-As*hs')'];
%infine risolvo il sistema e trovo il punto iniziale
X = (MATRCOEF \ VETTNOTI')';
[X,val]=funga(X); %calcola il valore della funzione obiettivo in
corrispondenza di X
end
%ricerca
del punto iniziale con gli ALGORITMI GENETICI%
%definizione della matrice contentente i campi di esistenza delle
soluzioni
qmax
= abs(sum(Q));
hmax
= max(hs);
hmin
= min(Hnodi);
bounds = [ones(numlati,1)*[-qmax +qmax];ones(numnodint,1)*[hmin
hmax]];
%lancia la funzione che ritorna il vettore contenente la popolazione
iniziale casuale
numindividui=20;
Pop=initializega(numindividui,bounds,'funga',[],[1e-6 1 1]);
if predimsino,
alla popolazione
Pop=[Pop;X val];
predimensionamento
end
di moto laminare)
%nel caso in cui lo si è richiesto aggiunge
%iniziale la soluzione X "congurente" di
%ottenuta linearizzando il sistema (ipotesi
check
= 1; %inizializza la variabile di controllo check
Numelem = size(Pop,1); %numero di individui della popolazione
eps
= 1e-7; %massima deviazione standard consentita tra i "minimi
locali"
options = foptions; %inizializza il vettore di opzioni standard per
la funzione fsolve
%inizia il ciclo che lancia gli algoritmi genetici fino a quando il
miglior elemento
%della popolazione non converga al massimo globale
while check,
%lancia gli algoritmi genetici ricercando una popolazione finale
con errore gaprec
[sol,endPop,bPop]=ga(bounds,'funga',[],Pop,[1e-6 1 1]...
,'optmaxgenterm',[Numgen 0 1e20],'normgeomselect',0.08...
,'arithxover heuristicxover simplexover',[2 0;2 3;2 0]...
,'boundarymutation multinonunifmutation nonunifmutation
unifmutation'...
,[4 0 0;6 Numgen 3;4 Numgen 3;4 0 0]);
%primo tipo di condizione terminale: si interrompe l'algoritmo
genetico quando,
%dopo aver lanciato al metodo di Gauss-Newton passando l'individuo
migliore come
%punto inziale di ricerca, si è verificata la convergenza allo
zero (minimo globale)
if gastop == 1,
%lancia la funzione di ottimazione Gauss-Newton
[X,outopts] = fsolve ('fun',sol(1:numlati+numnodint),options);
EXITFLAG = outopts(8)>10*outopts(3); %EXITFLAG è = 0 se è
avvenuta la convergenza
if EXITFLAG == 0,%qualora la soluzione degli algoritmi genetici
sia prossima
check = 0;
%ad un punto di "minimo globale" termina il
predimensionamento
end
%con gli algoritmi genetici ritornando il
miglior individuo
%secondo tipo di condizione terminale: si interrompe l'algoritmo
genetico quando,
%dopo aver lanciato al metodo di Gauss-Newton un numero di volte
pari al numero
%degli individui della popolazione passando ogni volta, come punto
iniziale della
%ricerca, un individuo diverso, si verifica che tutte le volte
l'algoritmo converge
%allo stesso minimo (a partire dai vari individui) per cui tutti
gli individui
%sono giunti nella stessa concavità e si può quindi ritenere il
minimo locale della
%proprio il minimo globale
else
%lancia la funzione di ottimazione Newton-Gauss
for i=1:numindividui,
XX(i,:) = fsolve ('fun',endPop
(i,1:numlati+numnodint),options);
end
variance = sum(var(XX))
if variance < 1e-10,%qualora la soluzione degli algoritmi
genetici sia prossima
check = 0;
%ad un punto di "minimo globale" termina il
predimensionamento
end
end
Pop=endPop;
end
%risoluazione del sistema col metodo Gauss-Newton operando (se
richieste)
%prima una iterazione su alfa e poi una iterazione su lambda di
Colebrook
GNoptions = foptions;
Gauss-Newton
%setta la precisione per la ricerca con
%parte che calcola iterativamente alfa (se tale ricerca è richiesta)
erralfa
= 10;
di do-while)
%permette il primo loop while (in mancanza
if alfasino,
while (erralfa > precalfa), %qui inizia il ciclo iterativo per
trovare alfa
X = fsolve ('fun',X,GNoptions);
ottimizzazione Gauss-Newton
q= X(1,1:numlati);
%lancia il metodo di
%parte che ricalcola alfa con le nuove portate
%calcola la portata entrante dal nodo di monte (con quota
piezometrica >)
Qentr = (q + Qdistr .* alfamonte).*(q>=0) + (q - Qdistr.
*alfavalle).*(q<0);
Qusce = (q + Qdistr .* alfamonte).*(q<0) + (q - Qdistr.
*alfavalle).*(q>=0);
%se la portata entrante dal nodo è inferiore a 1/2 delle
portata distribuita
%allora considera la portata entrante dal nodo opposto, che è a
quota piez. >,
%in modo da avere le portate espresse come portate entranti dal
nodo di monte
Qentr2 = Qentr .* (abs(Qentr)>=(Qdistr./2)) ...
- sign(Qentr).* (Qdistr - abs(Qentr)).* (abs(Qentr)
<(Qdistr./2));
Qusce2 = sign(Qentr2).*(abs(Qentr2)-Qdistr);
delta = abs(Qentr2 ./ Qdistr);
oldalfamonte = alfamonte;
oldalfavalle = alfavalle;
%calcola alfa del nodo di monte con due formule distinte
asseconda
%che delta sia > o < 1
alfa=(delta - (delta .^2 + 1/3 - delta).^.5).*(delta >= 1)+...
(delta - (1/(3^.5))*(delta .^3 - (1-delta).^3).^.5) .*(delta <
1);
%mette alfa in alfamonte e 1-alfa in alfavalle se Qentr>0
(viceversa se Qentr<0)
alfamonte
alfavalle
= (Qentr2 < 0) + sign(Qentr2) .* alfa;
= 1 - alfamonte;
%azzera i coefficienti nel caso di portate distribuite nulle
alfamonte = alfamonte .* (Qdistr ~= -1);
alfavalle = alfavalle .* (Qdistr ~= -1);
%calcola lo scarto di alfa dal valore precedente
erralfa
= sum((alfamonte - oldalfamonte).^2)^.5
%per facilitare la convergenza da un valore di alfa intermedio
tra il medio e il nuovo
alfamonte = (oldalfamonte+alfamonte)./2;
alfavalle = (oldalfavalle+alfavalle)./2;
%calcola le potate concentrate equivalenti alle portate
distribuite
Qmonte = alfamonte .* Qdistr;
Qvalle =
alfavalle
.* Qdistr;
%Qpreced= Q - Qconc(nodinterni)'; %ricalcola le portate
concentrate nei nodi
Qconc = Amonte' * Qmonte' + Avalle' * Qvalle';%con il nuovo
coefficiente alfa
Q = Qiniz + Qconc(nodinterni)';
end
else %lancia Gauss-Newton nel caso che la ricerca iterativa di alfa
non sia richiesta
X = fsolve ('fun',X,GNoptions);
end
%parte che calcola iterativamente lambda (se tale ricerca è
richiesta)
if lambdasino,
lambda = 9.81 * pi^2 / 8 .* beta;
per tubi scabri)
%il lambda iniziale (quello
%calcola la epsilon di colebrook a partire dal coefficiente gamma
epsilon = 3.71 * D .* (10.^(-0.5./(lambda.^.5)));
lambdaopt =[0 preclambda preclambda]; %setta la precisione
desiderata per lambda
errlambda = 10; % è un valore "grande" a caso per poter entrare
nel loop di lambda
while (errlambda > preclambda),%qui inizia il ciclo iterativo per
trovare lambda
X = fsolve ('fun',X,GNoptions); %lancia il metodo di
ottimizzazione Gauss-Newton
q= X(1,1:numlati);
%parte che ricalcola lambda con con le nuove portate
oldlambda = lambda;
Reynolds
= abs((4 ./(pi*D)) .* (q / 1e-6));
radlambda = fsolve('colebrook',(lambda.^0.5),lambdaopt);%
calcola la radice di lambda
lambda = radlambda .^ 2;%calcola lambda
errlambda = (sum((lambda - oldlambda).^2))^.5%è lo scarto di
lambda dal precedente
%ricavo in funzione di lambda la nuova matrice diagonale
R contenente i coeff. b=u*L
u = 8 * lambda ./ (D .^5 * 9.81 * pi^2);
R = diag (u .* L);
a = 2;
end
end
%output su video del vettore delle portate
q = X(1,1:numlati);
Qmonte
Qvalle
= q + Qdistr .* alfamonte;
= q - Qdistr .* alfavalle;
disp 'portate entranti nel nodo di monte'
for i=1:numlati,
fprintf(1,'%3.8f\n',Qmonte(1,i));
end
disp 'portate uscenti dal nodo di valle'
for i=1:numlati,
fprintf(1,'%3.8f\n',Qvalle(1,i));
end
%output su video del vettore delle altezze piezometriche
hint=X(1,(numlati+1):(numlati+numnodint));
h1=zeros(1,numnodi);
h1(serbatoi)=hs;
h2=zeros(1,numnodi);
h2(nodinterni)=hint;
Hpiez = h1 + h2;
Hres = Hpiez - Hnodi;
alla quota del terreno
%calcola le altezze piezometriche rispetto
disp 'altezze piezometriche residue'
for i=1:numnodi,
fprintf(1,'%3.6f\n',Hres(1,i));
end
function [x,val] = funga(x,options)
global weight An As R Q a hs numnodi numnodint numlati serbatoi
nodinterni
%dal vettore x di input della funzione fun estraggo q ed hn%
q=x(:,1:numlati);
hn=x(:,(numlati+1):(numlati+numnodint));
%devo trovare il vettore q ed il vettore hn tali da annullare o
quantomeno minimizzare F*
val= -sum ([(An' * q' - Q');weight *(R * (sign(q) .* q .^ (a))' + An
* hn' + As * hs')].^2);
__________________________________________________________________
function F=fun(x)
global An As A R Q a hs numnodi numnodint numlati serbatoi nodinterni
%dal vettore x di input della funzione fun estraggo q ed hn
q=x(:,1:numlati);
hn=x(:,(numlati+1):(numlati+numnodint));
%a partire dai vettori hn ed hs ricreo il vettore h con tutte le
altezze piezometriche
h(serbatoi)=hs;
h(nodinterni)=hn;
%devo trovare il vettore q ed il vettore hn tali da annullare o
quantomeno minimizzare F
F=[(An' * q' - Q');(R * (sign(q) .* q .^ (a))' + An * hn' + As *
hs')];
__________________________________________________________________
function F=colebrook(radlambda)
global D Reynolds epsilon
F = 1 ./ radlambda + 2 * log10 (2.51 ./ (Reynolds .* radlambda) +
epsilon ./(3.71 .* D));
Appendice B
Caratteristiche delle reti usate per “testare” programma
RETE DI CAO
NETWORK DESCRIPTION
Num Node Node
QQ
Br. Ini. Fin. (l/s)
1
1
2
0.00
2
2
3
0.00
3
1
3
0.00
4
3
4
0.00
5
2
4
0.00
6
1
5
0.00
7
5
6
0.00
8
6
4
0.00
Node
L
(m)
90.7
171.8
201.1
100.9
229.1
112.6
122.9
91.8
Q
(l/s)
0.0
30.0
40.0
120.0
40.0
30.0
1
2
3
4
5
6
Num
Diam
1
2
3
4
Diameter
(mm)
175.0
200.0
250.0
300.0
GH
(m)
0.00
0.00
0.00
0.00
0.00
0.00
N.
Diam.
3
3
1
2
3
4
4
2
RESE.
S
Darcy par.
(m**.5)
0.23
0.23
0.23
0.23
Hrese
100.00
0.00
0.00
0.00
0.00
0.00
u
(s**2/m**6)
23.018021
11.020974
3.235067
1.193810
RETE DI ENC
NETWORK DESCRIPTION
Num
Br.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Node
1
2
3
4
5
6
7
8
9
10
11
12
Node
Ini.
1
2
5
6
4
3
3
7
4
2
3
9
8
8
11
10
Node
L
Fin. (m)
2
3500.
5
638.
6
672.
7
336.
7
615.
4
396.
8
701.
8
519.
5
278.
3
626.
10
556.
10
194.
9
292.
11
724.
12
553.
12
941.
Q
(l/s)
0.00
0.00
0.00
0.00
0.00
12.00
12.00
0.00
0.00
0.00
12.00
12.00
G.H.
(m)
191.00
150.00
152.00
135.40
138.50
139.50
129.80
148.30
151.10
150.40
146.20
144.70
Diam
(mm)
500.
350.
225.
150.
150.
125.
225.
100.
225.
350.
225.
125.
100.
175.
100.
175.
QQ.
(l/s)
0.00
12.50
7.07
3.53
14.19
12.73
17.24
6.51
8.37
12.27
26.70
3.85
5.79
5.62
4.29
7.31
Rese.
S
-
H.Rese.
(m)
189.00
182.16
179.98
179.79
180.77
178.23
176.35
176.45
176.78
177.47
172.87
172.73
epsilon di Colebrook = 1mm (per tutti i tubi)
RETE DI MIGNOSA
NETWORK DESCRIPTION
Num Node Node
QQ
Br. Ini. Fin. (l/s)
1
1
7
0.00
2
7
8
0.00
3
8
9
0.00
4
9
3
0.00
5
3
2
0.00
6
3
4
0.00
7
4
5
0.00
8
5
6
0.00
9
6
2
0.00
10
9
10
0.00
11
10
4
0.00
12
10
11
0.00
13
11
12
0.00
14
12
4
0.00
15
8
13
0.00
16
13
18
0.00
17
18
9
0.00
18
13
14
0.00
19
14
15
0.00
20
15
16
0.00
21
16
17
0.00
22
17
18
0.00
23
17
19
0.00
24
19
10
0.00
25
19
26
0.00
26
26
25
0.00
27
25
11
0.00
28
26
23
0.00
29
23
24
0.00
30
24
25
0.00
31
16
20
0.00
32
20
19
0.00
33
20
21
0.00
34
21
22
0.00
35
22
23
0.00
36
22
28
0.00
37
28
29
0.00
38
29
30
0.00
39
30
23
0.00
40
21
27
0.00
41
27
28
0.00
42
15
31
0.00
43
31
35
0.00
44
35
32
0.00
45
32
33
0.00
46
33
41
0.00
47
31
41
0.00
48
34
41
0.00
49
34
20
0.00
50
34
40
0.00
51
40
39
0.00
52
21
39
0.00
53
32
42
0.00
54
42
45
0.00
55
45
33
0.00
56
45
47
0.00
57
47
36
0.00
58
36
41
0.00
L
(m)
220.0
600.0
460.0
435.0
140.0
355.0
350.0
300.0
200.0
260.0
575.0
200.0
600.0
270.0
175.0
400.0
210.0
490.0
320.0
125.0
235.0
340.0
235.0
410.0
140.0
175.0
215.0
240.0
165.0
240.0
240.0
305.0
350.0
195.0
120.0
315.0
340.0
220.0
580.0
300.0
190.0
95.0
555.0
315.0
340.0
305.0
120.0
345.0
140.0
600.0
100.0
400.0
280.0
140.0
160.0
260.0
120.0
130.0
N.
Diam.
4
4
3
7
7
4
1
1
3
4
2
4
4
4
4
2
6
3
3
4
6
6
3
2
4
4
4
4
3
4
4
3
4
4
4
2
2
2
1
1
1
3
3
3
3
3
3
5
3
5
4
4
2
2
3
3
3
3
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
36
37
52
52
2
58
42
43
44
44
46
46
43
48
49
50
50
51
38
48
53
54
49
56
56
57
54
55
Node
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
37
52
40
58
1
39
43
44
45
46
47
37
48
49
50
37
51
38
52
53
54
49
56
51
57
38
55
56
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
Q
(l/s)
0.0
1.5
1.6
2.5
1.3
1.1
1.6
2.8
5.7
7.7
4.1
1.8
4.1
3.2
1.3
2.2
3.4
3.3
8.0
3.8
2.0
1.0
1.9
1.5
3.4
1.5
1.0
1.2
1.0
1.2
2.7
1.5
2.1
270.0
500.0
140.0
255.0
130.0
65.0
310.0
200.0
290.0
235.0
200.0
250.0
205.0
515.0
350.0
240.0
235.0
205.0
325.0
420.0
265.0
250.0
295.0
365.0
220.0
325.0
365.0
315.0
GH
(m)
190.70
190.10
190.30
188.70
187.60
189.90
191.60
194.00
191.40
190.50
190.10
187.40
194.40
194.20
193.10
192.40
192.50
191.90
191.30
191.40
189.10
189.60
189.40
189.20
190.10
190.00
188.80
188.30
187.80
187.00
194.20
195.90
194.70
3
7
4
8
7
8
1
2
2
2
2
3
1
3
3
3
1
1
3
3
1
2
3
1
3
3
1
3
RESE.
S
Hrese
227.50
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2.6
4.2
4.9
5.5
1.3
1.0
2.9
2.9
1.1
1.2
1.1
1.3
1.5
1.0
2.0
4.5
3.4
1.2
2.2
1.2
3.3
1.2
1.9
1.0
0.0
Num
Diam
1
2
3
4
5
6
7
8
191.20
197.00
192.80
189.30
185.20
188.00
187.80
193.30
189.40
189.30
188.40
189.20
187.50
192.20
189.50
187.80
187.50
186.10
185.90
188.60
187.50
185.50
186.30
185.90
188.00
Diameter
(mm)
80.0
100.0
125.0
150.0
175.0
200.0
250.0
300.0
S
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
226.50
Darcy par.
u
(m**.5)
(s**2/m**6)
0.23
1803.992310
0.23
516.367859
0.23
148.693802
0.23
54.013947
0.23
23.018021
0.23
11.020974
0.23
3.235067
0.23
1.193810
RETE DI TORREMAGGIORE (FG)
NETWORK DESCRIPTION
Num Node Node
QQ
Br. Ini. Fin. (l/s)
1
1
2
0.63
2
2
3
0.37
3
2
4
0.27
4
3
5
0.41
5
4
6
0.16
6
4
7
0.23
7
4
8
0.19
8
5
9
0.61
9
5
10
0.33
10
6
3
0.44
11
6
11
0.17
12
7
12
0.15
13
8
12
0.80
14
9
13
0.42
15
9
14
0.10
16
10
15
0.55
17
10
16
0.21
18
11
16
0.67
19
11
7
0.29
20
12
17
0.48
21
12
18
0.24
22
13
19
0.16
23
14
20
0.06
24
15
21
0.65
25
15
22
0.10
26
16
17
0.10
27
18
23
0.29
28
18
24
0.32
29
19
25
0.05
30
20
26
0.65
31
20
15
0.23
32
21
26
0.21
33
21
27
0.26
34
21
28
0.29
35
17
29
0.45
36
17
30
0.27
37
23
30
0.19
38
23
31
0.39
39
24
31
0.34
40
24
32
0.63
41
25
33
0.33
42
26
19
0.24
43
27
34
0.16
44
27
35
0.47
45
27
36
0.23
46
29
37
0.06
47
30
38
0.24
48
30
39
0.45
49
31
39
0.17
50
32
40
0.27
51
33
41
0.19
52
34
25
0.21
53
34
42
0.68
54
35
43
0.23
55
35
44
0.15
56
37
45
0.11
57
38
46
0.13
58
38
47
0.57
L
(m)
405.0
240.0
85.0
128.0
50.0
150.0
60.0
190.0
103.0
135.0
112.0
45.0
248.0
130.0
30.0
170.0
65.0
208.0
90.0
150.0
75.0
105.0
20.0
200.0
30.0
30.0
90.0
100.0
33.0
200.0
70.0
65.0
80.0
90.0
140.0
83.0
60.0
120.0
105.0
405.0
210.0
75.0
50.0
145.0
70.0
20.0
75.0
140.0
52.0
175.0
120.0
65.0
212.0
70.0
45.0
35.0
40.0
175.0
N.
Diam.
1
2
4
2
10
4
10
11
2
10
11
4
11
11
11
2
11
11
11
11
4
10
10
4
11
11
4
8
10
10
9
7
4
11
6
6
5
5
11
11
10
11
10
4
7
6
11
11
5
11
9
10
10
4
7
7
8
8
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
39
41
41
43
43
45
46
46
47
48
48
42
49
50
51
51
52
52
53
53
54
22
55
55
55
56
56
58
59
61
61
40
40
62
62
60
63
63
65
65
28
66
66
68
68
68
69
36
36
73
73
67
67
74
74
75
76
76
77
72
72
79
80
81
81
64
47
48
49
42
49
50
29
51
52
53
54
33
54
22
55
56
56
32
57
58
58
59
45
59
60
61
40
57
62
60
63
64
65
28
66
67
68
69
70
71
36
72
73
67
74
75
76
77
72
78
79
59
66
79
80
81
75
64
44
82
78
83
84
84
85
70
0.40
2.56
0.39
0.24
0.39
0.06
0.31
0.05
0.08
0.22
2.09
0.17
1.45
0.08
0.23
0.60
0.08
0.31
2.98
1.74
1.45
0.40
0.27
0.29
0.47
0.26
0.66
0.69
0.31
0.19
0.06
0.21
0.34
0.23
0.15
0.45
0.22
0.17
0.15
0.85
0.24
0.45
0.24
0.59
0.08
0.32
0.27
0.23
0.15
0.45
0.29
0.15
0.38
0.35
1.02
0.19
0.23
0.18
0.23
0.45
0.24
0.44
0.18
0.98
0.20
0.34
125.0
352.0
120.0
75.0
120.0
20.0
95.0
15.0
25.0
30.0
288.0
52.0
200.0
25.0
70.0
185.0
25.0
95.0
410.0
240.0
200.0
125.0
83.0
90.0
145.0
80.0
205.0
95.0
95.0
60.0
20.0
65.0
105.0
70.0
45.0
140.0
67.0
53.0
45.0
550.0
73.0
140.0
75.0
182.0
25.0
98.0
85.0
70.0
45.0
138.0
90.0
47.0
119.0
108.0
317.0
58.0
70.0
55.0
70.0
138.0
73.0
135.0
55.0
305.0
62.0
105.0
5
9
9
11
4
7
8
8
5
9
9
10
3
8
11
11
6
11
9
9
3
8
8
11
8
6
11
3
8
8
7
10
11
8
11
11
7
11
11
9
11
11
11
8
7
9
10
9
10
11
10
8
11
10
8
11
11
10
11
10
10
10
8
11
11
10
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
44
78
78
83
83
84
85
85
70
86
86
89
90
92
93
93
82
94
96
97
91
91
98
98
99
99
95
101
101
102
87
103
103
106
88
88
105
100
107
107
104
Node
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
86
87
83
88
89
90
91
92
92
93
82
80
94
95
49
96
97
91
98
99
100
95
101
102
96
87
103
104
105
106
88
105
71
100
102
107
104
103
106
94
57
0.07
0.44
0.23
0.44
0.09
0.30
1.44
0.12
0.23
0.60
0.07
0.10
0.23
1.47
0.06
0.24
0.09
0.08
0.26
0.08
0.49
0.11
0.58
0.04
0.57
0.07
0.48
2.47
1.74
0.23
0.22
1.02
0.55
0.26
0.55
0.27
1.20
0.13
0.52
0.18
1.56
Q
(l/s)
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.6
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
23.0
137.0
70.0
137.0
27.0
92.0
447.0
38.0
70.0
185.0
23.0
30.0
70.0
455.0
20.0
75.0
27.0
26.0
80.0
25.0
152.0
33.0
80.0
12.0
178.0
23.0
150.0
340.0
240.0
72.0
69.0
140.0
355.0
80.0
170.0
83.0
165.0
40.0
160.0
55.0
215.0
GH
(m)
194.32
170.60
163.90
170.30
165.98
169.00
170.80
170.73
166.00
167.80
170.00
170.50
163.70
166.10
165.40
168.40
169.10
170.00
160.90
166.20
10
10
10
11
10
8
11
11
8
9
10
10
8
8
9
9
10
9
9
9
9
9
9
9
11
9
8
9
10
9
9
7
9
9
11
9
7
9
11
9
7
RESE.
S
Hrese
194.32
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
0.0
0.0
0.0
1.1
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
157.50
165.30
168.80
164.80
159.80
159.80
155.40
157.50
168.90
168.10
162.50
160.00
152.60
156.30
148.50
150.60
168.45
169.30
162.90
154.90
147.30
149.30
146.40
148.00
166.90
169.40
165.90
134.00
142.00
166.10
169.40
165.20
135.00
131.80
167.10
164.80
122.50
126.50
163.10
163.40
161.80
159.60
161.80
156.70
150.90
159.30
162.80
158.10
164.20
152.80
143.00
154.90
157.50
155.80
154.90
158.60
150.60
156.90
155.50
157.10
153.00
147.50
156.20
155.70
160.00
147.70
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
Num
Diam
1
2
3
4
5
6
7
8
9
10
11
148.80
151.10
157.50
152.90
150.50
149.90
141.80
150.90
149.20
140.90
148.00
140.27
146.60
142.20
137.56
143.80
144.50
127.89
135.12
141.20
152.50
Diameter
(mm)
560.0
300.0
260.0
250.0
200.0
175.0
150.0
125.0
100.0
80.0
60.0
Darcy par.
(m**.5)
0.23
0.23
0.23
0.23
0.23
0.23
0.23
0.23
0.23
0.23
0.23
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
u
(s**2/m**6)
0.040572
1.193810
2.609735
3.235067
11.020974
23.018021
54.013947
148.693802
516.367859
1803.992310
9128.275390
Appendice C
Risultati ottenuti applicando il programma ed il metodo VPH
CONFRONTO RISULTATI - RETE di CAO
VPH
Qmonte
0.1111300
0.0360200
0.0306400
0.0266200
0.0451100
0.1182300
0.0782400
0.0482400
Qvalle
0.1111300
0.0359900
0.0306400
0.0266600
0.0451100
0.1182400
0.0782400
0.0482300
Hres
100.0000000
96.3700000
95.6600000
94.8700000
98.1200000
97.2200000
NETGA senza alfa e lambda
Qmonte Qvalle
Hres
0.1111220 0.1111220 100.0000000
0.0359991 0.0359991 96.3772130
0.0306338 0.0306338 95.6569510
0.0266329 0.0266329 94.8684980
0.0451229 0.0451229 98.1208720
0.1182442 0.1182442 97.2227800
0.0782442 0.0782442
0.0482442 0.0482442
diff% senza alfa e lambda
Qmonte
Qvalle
0.0000719
0.0000719
0.0005794
0.0002537
0.0002030
0.0002030
0.0004846
0.0010165
0.0002855
0.0002855
0.0001203
0.0000357
0.0000539
0.0000539
0.0000875
0.0002948
NETGA senza alfa con lambda
Qmonte Qvalle
Hres
0.1111304 0.1111304 100.0000000
0.0359977 0.0359977 96.3666360
0.0306275 0.0306275 95.6403170
0.0266252 0.0266252 94.8470280
0.0451327 0.0451327 98.1133670
0.1182422 0.1182422 97.2098680
0.0782422 0.0782422
0.0482422 0.0482422
Hres
0.0000000
0.0000748
0.0000319
0.0000158
0.0000089
diff% senza alfa con lambda
Qmonte
Qvalle
Hres
0.0000033
0.0000033 0.0000000
0.0006185
0.0002145 0.0000349
0.0004096
0.0004096 0.0002058
0.0001942
0.0013065 0.0002421
0.0005023
0.0005023 0.0000676
0.0001030
0.0000184
0.0000279
0.0000279
0.0000452
0.0002525
diff media
Qmon
0.0002380
diff media
Qmon
0.0002380
diff media
Qval
0.0003419
diff media
Qval
0.0003419
diff media
Hres
0.0001101
diff media
Hres
0.0001101
CONFRONTO RISULTATI - RETE di ENC
VPH
Qmonte
0.1759700
0.0783200
0.0331000
0.0140300
0.0187400
0.0071200
0.0425500
0.0030500
-0.0243400
0.0976500
0.0357200
-0.0040800
0.0017100
0.0201300
0.0025100
0.0210900
Qvalle
0.1759700
0.0658200
0.0260300
0.0105000
0.0045500
-0.0056100
0.0253000
-0.0034600
-0.0327100
0.0853800
0.0290200
-0.0079300
-0.0040800
0.0145100
-0.0017800
0.0137800
Hres
-2.0000000
32.1600000
27.9800000
44.3900000
42.2700000
38.7300000
46.5500000
28.1500000
25.6800000
27.0700000
26.6700000
28.0300000
NETGA senza alfa e lambda
Qmonte
Qvalle
Hres
0.1759700
0.1759700
-2.0000000
0.0774475
0.0649475
32.4823950
0.0327626
0.0256926
28.3204740
0.0136926
0.0101626
44.8191690
0.0189885
0.0047985
42.6738480
0.0079036
-0.0048264 39.1593360
0.0426077
0.0253677
46.9569370
0.0029611
-0.0035489 28.4734800
-0.0238149
-0.0321849 25.8684450
0.0985225
0.0862525
27.3652580
0.0357412
0.0290412
26.7869650
-0.0042401
-0.0080901 28.2351520
0.0015499
-0.0042401
0.0202689
0.0146489
0.0026489
-0.0016411
0.0209511
0.0136411
Qmonte
0.1759700
0.0776755
0.0328279
0.0137579
0.0191693
0.0079217
0.0423578
0.0032072
-0.0239776
0.0982945
0.0357451
-0.0042635
0.0015265
0.0202884
0.0026684
0.0209316
NETGA senza alfa con lambda
Qvalle
Hres
0.1759700
-2.0000000
0.0651755
32.1757550
0.0257579
27.9830120
0.0102279
44.4814640
0.0049793
42.3273060
-0.0048083 38.8557630
0.0251178
46.7713900
-0.0033028 28.2721770
-0.0323476 25.6576770
0.0860245
27.0869110
0.0290451
26.7767890
-0.0081135 28.2201220
-0.0042635
0.0146684
-0.0016216
0.0136216
NETGA con alfa senza lambda
Qmonte
Qvalle
Hres
0.1759700
0.1759700
-2.0000000
0.0782303
0.0657303
32.4823950
0.0331442
0.0260742
28.3537790
0.0140742
0.0105442
44.7522110
0.0185877
0.0043977
42.6415540
0.0071017
-0.0056283 39.0486930
0.0427337
0.0254937
46.7087320
0.0029421
-0.0035679 28.4043890
-0.0242161
-0.0325861 25.9532060
0.0977397
0.0854697
27.4063100
NETGA con alfa con lambda
Qmonte
Qvalle
Hres
0.1759700
0.1759700
-2.0000000
0.0783839
0.0658839
32.1757550
0.0331619
0.0260919
28.0131220
0.0140919
0.0105619
44.4194680
0.0187319
0.0045419
42.2972810
0.0071098
-0.0056202 38.7577460
0.0425370
0.0252970
46.5609600
0.0031037
-0.0034063 28.1931460
-0.0243520 -0.0327220 25.7244710
0.0975861
0.0853161
27.1197480
0.0356342
-0.0039646
0.0018256
0.0201005
0.0024805
0.0211195
0.0289342
-0.0078146
-0.0039644
0.0144805
-0.0018095
0.0138095
26.7578710
28.1098160
diff% senza alfa e lambda
Qmonte Qvalle
Hres
0.0000000 0.0000000 0.0000000
0.0111402 0.0132558 0.0100247
0.0101943 0.0129631 0.0121685
0.0240506 0.0321362 0.0096681
0.0132625 0.0546242 0.0095540
0.1100576 0.1396809 0.0110854
0.0013558 0.0026755 0.0087419
0.0291443 0.0256908 0.0114913
0.0215723 0.0160523 0.0073382
0.0089350 0.0102190 0.0109072
0.0005932 0.0007302 0.0043856
0.0392304 0.0201841 0.0073190
0.0936023 0.0392304
0.0068987 0.0095706
0.0553267 0.0780169
0.0065846 0.0100776
0.0356693
-0.0040116
0.0017784
0.0201123
0.0024923
0.0211077
26.7384300
28.0929860
diff% senza alfa con lambda
Qmonte
Qvalle
Hres
0.0000000
0.0000000 0.0000000
0.0082293
0.0097922 0.0004899
0.0082218
0.0104549 0.0001076
0.0193970
0.0259181 0.0020605
0.0229098
0.0943582 0.0013557
0.1125997
0.1429073 0.0032472
0.0045182
0.0072036 0.0047560
0.0515377
0.0454306 0.0043402
0.0148882
0.0110786 0.0008693
0.0066003
0.0075488 0.0006247
0.0007016
0.0008635 0.0040041
0.0449755
0.0231400 0.0067828
0.1073099
0.0449755
0.0078703
0.0109187
0.0631195
0.0890056
0.0075121
0.0114971
diff media
Qmon
0.0269968
diff media
Qmon
0.0300244
diff media
Qval
0.0290692
diff media
Qval
0.0334433
diff media
Hres
0.0085570
diff media
Hres
0.0023865
diff% con alfa senza lambda
Qmonte Qvalle
Hres
0.0000000 0.0000000 0.0000000
0.0011450 0.0013625 0.0100247
0.0013344 0.0016969 0.0133588
0.0031483 0.0042067 0.0081597
0.0081275 0.0334747 0.0087900
0.0025646 0.0032549 0.0082286
0.0043168 0.0076553 0.0034099
0.0353639 0.0311734 0.0090369
0.0050892 0.0037869 0.0106389
0.0009181 0.0010500 0.0124237
0.0024029 0.0029576 0.0032948
0.0282770 0.0145485 0.0028475
0.0289693
-0.0078616
-0.0040116
0.0144923
-0.0017977
0.0137977
diff% con alfa con lambda
Qmonte Qvalle
Hres
0.0000000 0.0000000 0.0000000
0.0008161 0.0009711 0.0004899
0.0018695 0.0023773 0.0011838
0.0044105 0.0058933 0.0006638
0.0004349 0.0017912 0.0006454
0.0014326 0.0018182 0.0007164
0.0003065 0.0001202 0.0002354
0.0176164 0.0155289 0.0015327
0.0004947 0.0003681 0.0017317
0.0006546 0.0007487 0.0018378
0.0014191 0.0017467 0.0025658
0.0167598 0.0086230 0.0022471
0.0675789
0.0014670
0.0117649
0.0013983
0.0283235
0.0020351
0.0165899
0.0021401
0.0399883
0.0008783
0.0070438
0.0008383
diff media
Qmon
0.0109311
diff media
Qmon
0.0059352
diff media
Qval
0.0096410
diff media
Qval
0.0043238
diff media
Hres
0.0075178
diff media
Hres
0.0011542
0.0167598
0.0012185
0.0099326
0.0012830
CONFRONTO RISULTATI - RETE di MIGNOSA
VPH
Qmonte
0.0106800
0.0090700
-0.0013800
-0.0351900
-0.0472900
0.0104500
-0.0008100
-0.0021000
-0.0032000
0.0107000
-0.0020600
0.0037600
-0.0048600
-0.0066800
0.0076900
-0.0000800
-0.0174200
0.0036600
0.0004800
-0.0046500
-0.0065100
-0.0140200
0.0040700
-0.0013600
0.0005400
-0.0003400
-0.0045100
-0.0005800
0.0008000
-0.0007200
-0.0003200
0.0031900
-0.0032700
0.0071800
0.0041700
0.0020300
0.0013000
0.0002800
-0.0009100
0.0014500
0.0004600
0.0038100
0.0033600
-0.0008700
-0.0022800
-0.0040100
-0.0022300
0.0086100
0.0039800
-0.0151900
Qvalle
0.0106700
0.0091100
-0.0014400
-0.0352300
-0.0472900
0.0104400
-0.0008000
-0.0021000
-0.0031800
0.0107400
-0.0020700
0.0037700
-0.0048800
-0.0066800
0.0076800
-0.0001300
-0.0173500
0.0036800
0.0004600
-0.0046500
-0.0065500
-0.0140000
0.0040300
-0.0013500
0.0005900
-0.0003400
-0.0045300
-0.0005000
0.0007800
-0.0007700
-0.0002700
0.0031500
-0.0032800
0.0072000
0.0041300
0.0020400
0.0012800
0.0002900
-0.0009300
0.0014600
0.0004600
0.0038300
0.0033300
-0.0008200
-0.0023200
-0.0039700
-0.0022600
0.0086100
0.0039900
-0.0152100
Hres
36.8000000
36.2700000
35.0500000
34.6000000
36.0800000
36.1600000
34.5500000
29.4700000
32.2400000
31.5000000
31.7500000
35.2100000
28.5500000
27.7600000
28.8400000
29.6900000
29.7200000
31.0100000
30.3400000
30.7000000
33.1900000
32.1400000
32.2200000
32.4600000
31.5200000
31.6100000
32.3300000
32.7600000
32.9900000
33.7300000
27.5400000
24.9700000
26.4200000
31.2100000
23.8100000
29.0400000
35.0400000
36.6400000
38.4400000
37.7900000
28.5400000
31.4500000
31.1900000
32.7200000
31.9200000
34.9100000
29.5500000
29.4300000
31.3200000
33.3200000
-0.0125800
-0.0139100
-0.0000500
-0.0019600
0.0004100
-0.0039800
-0.0024600
0.0005300
-0.0078800
-0.0305600
0.0055300
-0.0473800
-0.0519700
0.0274800
0.0008100
-0.0024600
-0.0003100
-0.0032500
0.0025000
-0.0072500
0.0020600
-0.0016200
-0.0057600
-0.0099200
0.0007500
-0.0018400
-0.0091000
0.0016900
0.0004600
-0.0019400
-0.0023100
-0.0013800
-0.0049400
-0.0059500
-0.0008800
-0.0021000
-0.0125600
-0.0139200
-0.0000500
-0.0019500
0.0004200
-0.0039700
-0.0024600
0.0005300
-0.0078900
-0.0305700
0.0055400
-0.0473500
-0.0520100
0.0274800
0.0008000
-0.0024600
-0.0003200
-0.0032400
0.0025200
-0.0072500
0.0020700
-0.0016400
-0.0057800
-0.0099200
0.0007500
-0.0018400
-0.0090800
0.0016600
0.0004900
-0.0019400
-0.0023400
-0.0013900
-0.0049500
-0.0059600
-0.0009000
-0.0020900
34.4900000
39.9100000
30.1400000
31.1600000
33.6500000
33.0500000
34.2400000
38.5000000
NETGA senza alfa e lambda
Qmonte
Qvalle
Hres
0.0106797 0.0106797 36.8000000
0.0090797 0.0090797 36.2654020
-0.0014206 -0.0014206 35.0547080
-0.0352012 -0.0352012 34.5654810
-0.0472394 -0.0472394 36.0709190
0.0104382 0.0104382 36.1606240
-0.0008013 -0.0008013 34.5446720
-0.0021013 -0.0021013 29.4729130
-0.0032013 -0.0032013 32.2109490
0.0107191 0.0107191 31.4973640
-0.0020667 -0.0020667 31.7465650
0.0037362 0.0037362 35.2161030
-0.0048729 -0.0048729 28.5124390
-0.0066729 -0.0066729 27.7331390
0.0077003 0.0077003 28.8227980
NETGA senza alfa con lambda
Qmonte
Qvalle
Hres
0.0106706 0.0106706 36.8000000
0.0090706 0.0090706 36.2595750
-0.0014118 -0.0014118 35.0429630
-0.0351941 -0.0351941 34.5389400
-0.0472246 -0.0472246 36.0492710
0.0104305 0.0104305 36.1503200
-0.0007963 -0.0007963 34.5356540
-0.0020963 -0.0020963 29.4430290
-0.0031963 -0.0031963 32.1847780
0.0107245 0.0107245 31.4560910
-0.0020618 -0.0020618 31.7014630
0.0037396 0.0037396 35.1824570
-0.0048650 -0.0048650 28.4786880
-0.0066650 -0.0066650 27.6879930
0.0076824 0.0076824 28.7768280
-0.0000659
-0.0173615
0.0036662
0.0004662
-0.0046329
-0.0065655
-0.0139956
0.0040301
-0.0013495
0.0005534
-0.0003173
-0.0045091
-0.0006292
0.0007083
-0.0007918
-0.0002675
0.0031738
-0.0032586
0.0071822
0.0041466
0.0020356
0.0012909
0.0002909
-0.0009091
0.0014553
0.0004553
0.0037991
0.0033554
-0.0008446
-0.0023049
-0.0039788
-0.0022563
0.0086129
0.0039827
-0.0151955
-0.0125714
-0.0138961
-0.0000398
-0.0019421
0.0004261
-0.0039740
-0.0024642
0.0005222
-0.0078864
-0.0305191
0.0055241
-0.0473121
-0.0519407
0.0274675
0.0008023
-0.0024475
-0.0003059
-0.0032416
0.0025099
-0.0072515
-0.0000659
-0.0173615
0.0036662
0.0004662
-0.0046329
-0.0065655
-0.0139956
0.0040301
-0.0013495
0.0005534
-0.0003173
-0.0045091
-0.0006292
0.0007083
-0.0007918
-0.0002675
0.0031738
-0.0032586
0.0071822
0.0041466
0.0020356
0.0012909
0.0002909
-0.0009091
0.0014553
0.0004553
0.0037991
0.0033554
-0.0008446
-0.0023049
-0.0039788
-0.0022563
0.0086129
0.0039827
-0.0151955
-0.0125714
-0.0138961
-0.0000398
-0.0019421
0.0004261
-0.0039740
-0.0024642
0.0005222
-0.0078864
-0.0305191
0.0055241
-0.0473121
-0.0519407
0.0274675
0.0008023
-0.0024475
-0.0003059
-0.0032416
0.0025099
-0.0072515
29.6677190
29.6793590
31.0133360
30.3118150
30.6686460
33.1693890
32.1260770
32.2146310
32.4023240
31.5104510
31.6094990
32.3231530
32.7520930
32.9595230
33.7499090
27.5189140
24.9232190
26.3917920
31.1988400
23.7898040
29.0150190
35.0119720
36.6440690
38.4414550
37.7878140
28.5097480
31.4234480
31.1634510
32.6820990
31.8961100
34.8572340
29.5066720
29.4095150
31.3117120
33.3275550
34.4958200
39.9185720
30.1343430
31.1265750
33.6441960
33.0481320
34.2437490
38.5000000
-0.0000765
-0.0173577
0.0036589
0.0004589
-0.0046322
-0.0065499
-0.0139812
0.0040313
-0.0013467
0.0005453
-0.0003199
-0.0045046
-0.0006348
0.0007153
-0.0007848
-0.0002822
0.0031673
-0.0032612
0.0071942
0.0041584
0.0020358
0.0012917
0.0002917
-0.0009083
0.0014559
0.0004559
0.0037910
0.0033530
-0.0008470
-0.0022994
-0.0039768
-0.0022620
0.0086089
0.0039884
-0.0151972
-0.0125869
-0.0139113
-0.0000476
-0.0019449
0.0004226
-0.0039699
-0.0024621
0.0005299
-0.0078920
-0.0305291
0.0055104
-0.0473105
-0.0519209
0.0274981
0.0007973
-0.0024479
-0.0003025
-0.0032455
0.0025078
-0.0072533
-0.0000765
-0.0173577
0.0036589
0.0004589
-0.0046322
-0.0065499
-0.0139812
0.0040313
-0.0013467
0.0005453
-0.0003199
-0.0045046
-0.0006348
0.0007153
-0.0007848
-0.0002822
0.0031673
-0.0032612
0.0071942
0.0041584
0.0020358
0.0012917
0.0002917
-0.0009083
0.0014559
0.0004559
0.0037910
0.0033530
-0.0008470
-0.0022994
-0.0039768
-0.0022620
0.0086089
0.0039884
-0.0151972
-0.0125869
-0.0139113
-0.0000476
-0.0019449
0.0004226
-0.0039699
-0.0024621
0.0005299
-0.0078920
-0.0305291
0.0055104
-0.0473105
-0.0519209
0.0274981
0.0007973
-0.0024479
-0.0003025
-0.0032455
0.0025078
-0.0072533
29.6244630
29.6385420
30.9803160
30.2625800
30.6257580
33.1322250
32.0803460
32.1658890
32.3523850
31.4611960
31.5600080
32.2693120
32.6950170
32.8944870
33.6837820
27.4707390
24.8628430
26.3367480
31.1616610
23.7270710
28.9703020
34.9891620
36.6101300
38.4403250
37.7785050
28.4643300
31.3633370
31.0989930
32.6263980
31.8415200
34.8178980
29.4596340
29.3368680
31.2454540
33.2825120
34.4471320
39.9118110
30.0573050
31.0483480
33.5777280
32.9872300
34.1925460
38.5000000
0.0020499
-0.0016249
-0.0057419
-0.0098813
0.0007393
-0.0018372
-0.0090689
0.0016748
0.0004748
-0.0019386
-0.0023216
-0.0013765
-0.0049317
-0.0059317
-0.0008866
-0.0020866
0.0020499
-0.0016249
-0.0057419
-0.0098813
0.0007393
-0.0018372
-0.0090689
0.0016748
0.0004748
-0.0019386
-0.0023216
-0.0013765
-0.0049317
-0.0059317
-0.0008866
-0.0020866
0.0020452
-0.0016225
-0.0057486
-0.0098839
0.0007353
-0.0018380
-0.0090709
0.0016677
0.0004677
-0.0019456
-0.0023195
-0.0013733
-0.0049329
-0.0059329
-0.0008867
-0.0020867
0.0020452
-0.0016225
-0.0057486
-0.0098839
0.0007353
-0.0018380
-0.0090709
0.0016677
0.0004677
-0.0019456
-0.0023195
-0.0013733
-0.0049329
-0.0059329
-0.0008867
-0.0020867
diff% senza alfa e lambda
Qmonte
0.0000309
0.0010662
0.0294203
0.0003171
0.0010706
0.0011292
0.0107037
0.0006333
0.0004156
0.0017804
0.0032282
0.0063271
0.0026523
0.0010644
0.0013355
0.1761250
0.0033571
0.0016885
0.0287917
0.0036688
0.0085223
0.0017397
0.0097961
0.0077279
0.0248704
0.0666471
0.0002018
0.0848621
0.1146875
0.0996528
0.1641563
0.0050752
0.0034801
0.0002994
0.0056211
Qvalle
0.0009063
0.0033293
0.0134722
0.0008186
0.0010706
0.0001724
0.0016625
0.0006333
0.0067075
0.0019507
0.0016184
0.0089629
0.0014570
0.0010644
0.0026393
0.4930000
0.0006640
0.0037554
0.0134348
0.0036688
0.0023634
0.0003136
0.0000323
0.0003778
0.0619831
0.0666471
0.0046159
0.2584400
0.0919872
0.0282468
0.0093704
0.0075587
0.0065183
0.0024792
0.0040097
Hres
0.0000000
0.0001268
0.0001343
0.0009977
0.0002517
0.0000173
0.0001542
0.0000988
0.0009011
0.0000837
0.0001082
0.0001733
0.0013156
0.0009676
0.0005965
0.0007505
0.0013675
0.0001076
0.0009290
0.0010213
0.0006210
0.0004332
0.0001666
0.0017768
0.0003030
0.0000158
0.0002118
0.0002414
0.0009238
0.0005902
0.0007656
0.0018735
0.0010677
0.0003576
0.0008482
diff% senza alfa con lambda
Qmonte
0.0008839
0.0000617
0.0230652
0.0001151
0.0013834
0.0018632
0.0169383
0.0017714
0.0011625
0.0022907
0.0008786
0.0054202
0.0010288
0.0022455
0.0009896
0.0438750
0.0035763
0.0003060
0.0440000
0.0038366
0.0061306
0.0027668
0.0095086
0.0097794
0.0098148
0.0592059
0.0011929
0.0945172
0.1059375
0.0899306
0.1180000
0.0071129
0.0026911
0.0019777
0.0027938
Qvalle
0.0000525
0.0043293
0.0195625
0.0010204
0.0013834
0.0009071
0.0046500
0.0017714
0.0051195
0.0014423
0.0039565
0.0080584
0.0030738
0.0022455
0.0003112
0.4116154
0.0004438
0.0057391
0.0024348
0.0038366
0.0000137
0.0013421
0.0003226
0.0024444
0.0757627
0.0592059
0.0056026
0.2696400
0.0830128
0.0191558
0.0453333
0.0054952
0.0057317
0.0008056
0.0068644
Hres
0.0000000
0.0002874
0.0002008
0.0017647
0.0008517
0.0002677
0.0004152
0.0009152
0.0017128
0.0013939
0.0015287
0.0007822
0.0024978
0.0025939
0.0021904
0.0022074
0.0027408
0.0009572
0.0025517
0.0024183
0.0017407
0.0018561
0.0016794
0.0033153
0.0018656
0.0015815
0.0018771
0.0019836
0.0028952
0.0013702
0.0025149
0.0042914
0.0031511
0.0015488
0.0034829
0.0027537
0.0069923
0.0389643
0.0010000
0.0036690
0.0101739
0.0028556
0.0013780
0.0291609
0.0109035
0.0077781
0.0117713
0.0003333
0.0006683
0.0003641
0.0006812
0.0010000
0.2048000
0.0091378
0.0391707
0.0014975
0.0016951
0.0147358
0.0008071
0.0013370
0.0010669
0.0014329
0.0005638
0.0004541
0.0094691
0.0050691
0.0132581
0.0025723
0.0039440
0.0002069
0.0049272
0.0030494
0.0031372
0.0039032
0.0142133
0.0015217
0.0034209
0.0090000
0.0321522
0.0007320
0.0050130
0.0025072
0.0016862
0.0030807
0.0075341
0.0063667
diff media
Qmon
0.0164658
0.0021618
0.0085234
0.0031379
0.0224839
0.0032055
0.0101739
0.0080627
0.0076186
0.0300366
0.0065259
0.0022191
0.0016593
0.0003333
0.0018396
0.0009513
0.0009100
0.0017177
0.2048000
0.0040564
0.0144286
0.0010176
0.0016951
0.0147358
0.0004613
0.0016637
0.0028700
0.0008002
0.0013324
0.0004541
0.0029125
0.0050691
0.0440938
0.0005062
0.0040238
0.0002069
0.0097343
0.0091829
0.0065865
0.0039032
0.0142133
0.0015217
0.0012258
0.0089096
0.0310408
0.0007320
0.0078718
0.0096835
0.0037030
0.0047534
0.0148556
0.0016124
0.0008602
0.0007999
0.0001111
0.0000379
0.0000578
0.0010600
0.0008443
0.0008512
0.0011583
0.0007484
0.0015115
0.0014663
0.0006961
0.0002646
0.0002267
0.0001687
0.0002148
0.0001877
0.0010727
0.0001725
0.0000565
0.0001095
0.0000000
0.0028768
0.0063692
0.0418571
0.0018901
0.0040552
0.0089565
0.0049764
0.0020714
0.0264828
0.0085000
0.0082843
0.0143498
0.0001301
0.0020980
0.0004760
0.0005453
0.0000920
0.0484000
0.0077245
0.0307073
0.0025302
0.0008618
0.0001698
0.0015266
0.0010098
0.0035497
0.0014679
0.0009457
0.0006601
0.0157037
0.0049065
0.0242581
0.0014000
0.0031240
0.0004497
0.0071796
0.0015370
0.0019844
0.0036442
0.0196267
0.0010870
0.0031934
0.0131893
0.0167609
0.0028608
0.0041039
0.0048696
0.0014291
0.0028672
0.0076591
0.0063143
diff media
Qmon
0.0123112
0.0020392
0.0091563
0.0059310
0.0233548
0.0028219
0.0089565
0.0101723
0.0069189
0.0328780
0.0088879
0.0017078
0.0008850
0.0001301
0.0004135
0.0008396
0.0021385
0.0006264
0.0484000
0.0026359
0.0061667
0.0000176
0.0008618
0.0001698
0.0002573
0.0013366
0.0053484
0.0008353
0.0017141
0.0006601
0.0034000
0.0049065
0.0547500
0.0016821
0.0048373
0.0004497
0.0119758
0.0106768
0.0054377
0.0036442
0.0196267
0.0010870
0.0009978
0.0046446
0.0454898
0.0028608
0.0087692
0.0120288
0.0034465
0.0045403
0.0147333
0.0015598
0.0024001
0.0014509
0.0008152
0.0000085
0.0003042
0.0026514
0.0027556
0.0029178
0.0028607
0.0024586
0.0026383
0.0030581
0.0031645
0.0023801
0.0011251
0.0012429
0.0000454
0.0027437
0.0035832
0.0021478
0.0018992
0.0013859
0.0000000
diff media
Qval
0.0192110
diff media
Qval
0.0170988
diff media
Hres
0.0005685
diff media
Hres
0.0018529
CONFRONTO RISULTATI - RETE di TorreMaggiore (FG)
VPH
Qmonte
0.0726400
0.0415000
0.0304000
0.0413600
0.0015200
0.0276600
0.0009500
0.0012800
0.0396600
0.0007000
0.0006600
0.0268600
0.0007600
0.0005600
-0.0015100
0.0386300
0.0007000
0.0007600
-0.0002700
0.0008600
0.0258100
0.0001400
-0.0016100
0.0335700
0.0012600
0.0005800
0.0226300
0.0029300
0.0007700
0.0013300
-0.0030000
0.0005700
0.0318200
0.0005100
0.0089100
-0.0080600
0.0100600
0.0122700
0.0006600
0.0008600
0.0010900
0.0010400
0.0019400
0.0261900
0.0034200
0.0068000
0.0009100
0.0006200
0.0122000
0.0009400
0.0014500
0.0005800
0.0012000
Qvalle
0.0719000
0.0411000
0.0301300
0.0409400
0.0013600
0.0274200
0.0007600
0.0006700
0.0393200
0.0002600
0.0004900
0.0267000
-0.0000400
0.0001400
-0.0016100
0.0380600
0.0004900
0.0000900
-0.0005600
0.0003700
0.0255600
-0.0000200
-0.0016700
0.0329000
0.0011600
0.0004700
0.0223300
0.0026100
0.0007200
0.0006800
-0.0032300
0.0003600
0.0315500
0.0002200
0.0084500
-0.0083300
0.0098600
0.0118800
0.0003200
0.0002300
0.0007600
0.0008000
0.0017800
0.0257000
0.0031900
0.0067400
0.0006700
0.0001700
0.0120200
0.0006600
0.0012600
0.0003700
0.0005100
Hres
0.0000000
23.5600000
29.6800000
23.5700000
27.2900000
24.6700000
22.6500000
23.0500000
25.5500000
25.2300000
23.3000000
22.8300000
27.6400000
26.1200000
27.2900000
24.4300000
23.6500000
23.1400000
30.4200000
26.1200000
34.4100000
26.9900000
24.1700000
28.2100000
31.4900000
32.1100000
36.2200000
34.3000000
23.5800000
24.7900000
30.2600000
31.7400000
38.3200000
35.0100000
42.7700000
40.9700000
24.0000000
23.1400000
29.7600000
35.7600000
43.4800000
41.6800000
44.7300000
43.2500000
25.4600000
23.0400000
26.5400000
56.3500000
48.9100000
26.2400000
23.0400000
27.1900000
55.3500000
0.0233000
0.0024000
0.0067400
-0.0000300
0.0007000
0.0121900
0.0025400
-0.0012800
0.0005900
0.0224700
0.0036900
-0.0013400
0.0011800
0.0119100
0.0003900
-0.0004200
0.0008700
0.0176500
0.0036300
0.0006300
0.0004900
0.0108100
0.0010200
0.0007300
-0.0005600
0.0136500
0.0047100
-0.0026700
0.0008000
0.0022700
0.0093800
0.0012400
0.0098600
0.0021300
-0.0009100
0.0100300
0.0003700
0.0008800
0.0006800
0.0011400
0.0006900
0.0085400
0.0014300
-0.0001300
0.0006600
0.0006600
0.0006600
0.0008000
-0.0013400
0.0069500
0.0027000
0.0012600
0.0009900
0.0026200
0.0006400
-0.0000800
-0.0025300
0.0008500
0.0230600
0.0022500
0.0066300
-0.0001600
0.0001300
0.0117800
-0.0000200
-0.0016700
0.0003500
0.0220600
0.0036300
-0.0016500
0.0011200
0.0118300
0.0001700
-0.0025100
0.0007000
0.0161600
0.0035500
0.0004000
-0.0001100
0.0107300
0.0007100
-0.0022600
-0.0023000
0.0121600
0.0043100
-0.0029400
0.0005100
0.0018000
0.0091200
0.0005800
0.0091600
0.0018200
-0.0011100
0.0099700
0.0001600
0.0005300
0.0004500
0.0009900
0.0002400
0.0083200
0.0012600
-0.0002800
-0.0002000
0.0004200
0.0002100
0.0005600
-0.0019300
0.0068700
0.0023800
0.0009900
0.0007600
0.0024600
0.0001900
-0.0003700
-0.0026800
0.0004700
58.9400000
25.1600000
27.5200000
68.1000000
64.1300000
28.7800000
28.7500000
30.3400000
32.2100000
30.2200000
33.9400000
39.2500000
32.0300000
29.0300000
33.6400000
26.9200000
37.3600000
47.0400000
36.1300000
33.4900000
35.8700000
36.4900000
32.3100000
40.9400000
33.8200000
35.5000000
33.5700000
37.4400000
43.3300000
34.4900000
34.8300000
30.1300000
43.2300000
41.7300000
39.2700000
33.1800000
37.4800000
39.6300000
40.2300000
49.0300000
39.3800000
40.8900000
49.5500000
42.6100000
49.8600000
43.9600000
47.9000000
52.4500000
46.3300000
45.5900000
62.2800000
54.9700000
48.9100000
37.7900000
0.0019800
0.0048900
0.0014200
-0.0007300
0.0017200
0.0007600
0.0010700
0.0016100
0.0012600
0.0040700
0.0004100
0.0008200
0.0017000
0.0027800
0.0010500
0.0005100
0.0006900
0.0004100
0.0033200
0.0007100
-0.0000900
0.0010700
0.0011300
0.0015700
0.0003200
0.0030200
0.0006300
-0.0026700
0.0032000
0.0021200
0.0032000
0.0028300
0.0020300
0.0008700
0.0015200
0.0018700
0.0007000
0.0004500
0.0015000
0.0005600
0.0006100
0.0006800
0.0007300
0.0020400
-0.0001500
0.0007600
0.0005500
0.0006300
0.0014400
-0.0022400
0.0006600
0.0005700
0.0006000
-0.0053200
0.0016300
0.0038600
0.0012300
-0.0009600
0.0015400
0.0005300
0.0006100
0.0013700
0.0008200
0.0038900
-0.0005700
0.0006200
0.0013500
0.0027100
0.0006100
0.0002800
0.0002500
0.0003200
0.0030200
-0.0007300
-0.0002100
0.0008400
0.0005300
0.0015000
0.0002200
0.0027800
-0.0008500
-0.0027300
0.0029600
0.0020300
0.0031200
0.0025700
0.0019500
0.0003800
0.0014100
0.0012900
0.0006600
-0.0001200
0.0014300
0.0000800
-0.0018700
-0.0010600
0.0005000
0.0018200
-0.0011800
0.0002000
0.0002900
0.0000800
0.0011700
-0.0034500
0.0005300
0.0000500
0.0004200
-0.0069000
NETGA senza alfa e lambda
Qmonte
Qvalle
Hres
NETGA senza alfa con lambda
Qmonte
Qvalle
Hres
0.0719600
0.0411722
0.0301578
0.0410445
0.0014982
0.0273925
0.0009972
0.0012669
0.0393676
0.0006823
0.0006559
0.0265851
0.0008072
0.0005555
-0.0015185
0.0383490
0.0006886
0.0007733
-0.0002874
0.0008403
0.0256019
0.0001355
-0.0016185
0.0333290
0.0012437
0.0005819
0.0224317
0.0029302
0.0007585
0.0013178
-0.0029963
0.0005653
0.0315990
0.0005147
0.0088512
-0.0080090
0.0099797
0.0121620
0.0006490
0.0008712
0.0010735
0.0010231
0.0019307
0.0260033
0.0034050
0.0067400
0.0008830
0.0006277
0.0120810
0.0009241
0.0014487
0.0005750
0.0011957
0.0231423
0.0023910
0.0066800
-0.0000030
0.0006460
0.0713300
0.0408022
0.0298878
0.0406345
0.0013382
0.0271625
0.0008072
0.0006569
0.0390376
0.0002423
0.0004859
0.0264351
0.0000072
0.0001355
-0.0016185
0.0377990
0.0004786
0.0001033
-0.0005774
0.0003603
0.0253619
-0.0000246
-0.0016785
0.0326790
0.0011437
0.0004819
0.0221417
0.0026102
0.0007085
0.0006678
-0.0032263
0.0003553
0.0313390
0.0002247
0.0084012
-0.0082790
0.0097897
0.0117720
0.0003090
0.0002412
0.0007435
0.0007831
0.0017707
0.0255333
0.0031750
0.0066800
0.0006430
0.0001777
0.0119110
0.0006541
0.0012587
0.0003650
0.0005157
0.0229123
0.0022410
0.0065700
-0.0001330
0.0000760
0.0000000
23.6356560
29.8543270
23.6877970
27.5194640
24.8063760
22.8267350
23.1697040
25.8946170
25.5104910
23.4731460
23.0244250
28.0530080
26.4683450
27.6162920
24.7084120
23.9309410
23.3668790
30.8524250
26.4663950
34.8115260
27.3260810
24.4222630
28.4527700
31.9203930
32.5107820
36.6552310
34.6992600
23.8911500
25.0576530
30.5328670
32.1089910
38.8076910
35.4462950
43.2437570
41.4143050
24.3204220
23.4590750
30.0503980
36.2142600
43.9941370
42.1662650
45.2236780
43.7307190
25.7874490
23.3591020
26.8556840
56.9940700
49.4337680
26.5732090
23.3559260
27.5178080
55.9930900
59.4862140
25.4924550
27.8525170
68.6758590
64.6991270
0.0719600
0.0411824
0.0301477
0.0410524
0.0014950
0.0273886
0.0009941
0.0012663
0.0393762
0.0006801
0.0006550
0.0265825
0.0008041
0.0005550
-0.0015187
0.0383591
0.0006870
0.0007710
-0.0002861
0.0008392
0.0255974
0.0001350
-0.0016187
0.0333419
0.0012447
0.0005780
0.0224303
0.0029271
0.0007574
0.0013138
-0.0029925
0.0005686
0.0316095
0.0005138
0.0088390
-0.0080018
0.0099710
0.0121694
0.0006470
0.0008700
0.0010720
0.0010224
0.0019290
0.0260125
0.0034080
0.0067303
0.0008834
0.0006258
0.0120864
0.0009235
0.0014451
0.0005746
0.0011944
0.0231465
0.0023960
0.0066703
-0.0000057
0.0006491
0.0713300
0.0408124
0.0298777
0.0406424
0.0013350
0.0271586
0.0008041
0.0006563
0.0390462
0.0002401
0.0004850
0.0264325
0.0000041
0.0001350
-0.0016187
0.0378091
0.0004770
0.0001010
-0.0005761
0.0003592
0.0253574
-0.0000250
-0.0016787
0.0326919
0.0011447
0.0004780
0.0221403
0.0026071
0.0007074
0.0006638
-0.0032225
0.0003586
0.0313495
0.0002238
0.0083890
-0.0082718
0.0097810
0.0117794
0.0003070
0.0002400
0.0007420
0.0007824
0.0017690
0.0255425
0.0031780
0.0066703
0.0006434
0.0001758
0.0119164
0.0006535
0.0012551
0.0003646
0.0005144
0.0229165
0.0022460
0.0065603
-0.0001357
0.0000791
0.0000000
23.6332790
29.8461680
23.6830710
27.5082620
24.7999110
22.8180810
23.1636370
25.8684340
25.4969320
23.4618010
23.0146160
28.0230300
26.4468080
27.5989330
24.6923800
23.9145410
23.3552450
30.8222860
26.4460780
34.7870900
27.3046750
24.4086760
28.4390480
31.8894880
32.4862100
36.6281400
34.6722280
23.8718580
25.0430270
30.5162400
32.0790780
38.7710090
35.4164250
43.2127620
41.3860470
24.3007960
23.4386790
30.0324770
36.1729060
43.9552540
42.1307510
45.1910540
43.6991790
25.7669520
23.3387250
26.8347440
56.9479570
49.3984520
26.5524120
23.3354300
27.4962530
55.9468480
59.4480880
25.4702820
27.8300980
68.6348870
64.6588900
0.0120887
0.0025649
-0.0013061
0.0005995
0.0223128
0.0036606
-0.0013512
0.0012183
0.0117647
0.0003615
-0.0003566
0.0008752
0.0175387
0.0036006
0.0006208
0.0005475
0.0106918
0.0009929
0.0005609
-0.0004194
0.0136421
0.0046643
-0.0026394
0.0007853
0.0022449
0.0093226
0.0012367
0.0100327
0.0020990
-0.0008782
0.0099408
0.0003666
0.0008641
0.0006522
0.0011368
0.0007066
0.0084764
0.0014045
-0.0001679
0.0006920
0.0006468
0.0006617
0.0007927
-0.0013297
0.0069396
0.0026464
0.0012345
0.0009787
0.0026031
0.0006479
-0.0000952
-0.0025107
0.0008476
0.0019796
0.0048800
0.0013616
-0.0007348
0.0016993
0.0116887
0.0000049
-0.0016961
0.0003595
0.0219228
0.0036006
-0.0016612
0.0011683
0.0116847
0.0001415
-0.0024466
0.0007052
0.0160887
0.0035206
0.0003908
-0.0000525
0.0106118
0.0006829
-0.0024191
-0.0021594
0.0121921
0.0042643
-0.0029094
0.0004953
0.0017749
0.0090626
0.0005767
0.0093427
0.0017890
-0.0010682
0.0098808
0.0001566
0.0005241
0.0004222
0.0009868
0.0002566
0.0082564
0.0012345
-0.0003179
-0.0001580
0.0004068
0.0002117
0.0005527
-0.0019197
0.0068596
0.0023264
0.0009645
0.0007487
0.0024531
0.0001979
-0.0003852
-0.0026607
0.0004676
0.0016296
0.0038600
0.0011716
-0.0009648
0.0015193
29.1556450
29.1053600
30.6969100
32.6022640
30.5908000
34.4062330
39.7524520
32.4391690
29.4089220
34.0374890
27.3485370
37.8766800
47.6322070
36.5954550
33.9293720
36.2732070
36.9246420
32.7631830
41.3873400
34.3040830
35.9387400
34.0730410
37.9752730
43.8229770
34.9831880
35.3431320
30.6672630
43.7226680
42.2364460
39.8062300
33.6768570
38.0117150
40.2007120
40.7681920
49.5608080
39.9280910
41.4684260
50.1093100
43.1127710
50.4476940
44.4615250
48.4766910
53.0787970
46.9133740
46.1665780
62.8475520
55.5487470
49.4909010
38.3349310
0.0120922
0.0025636
-0.0013085
0.0005988
0.0223177
0.0036550
-0.0013487
0.0012130
0.0117713
0.0003626
-0.0003590
0.0008732
0.0175332
0.0035950
0.0006183
0.0005447
0.0106978
0.0009935
0.0005640
-0.0004214
0.0136342
0.0046597
-0.0026353
0.0007832
0.0022404
0.0093255
0.0012371
0.0100228
0.0020955
-0.0008772
0.0099427
0.0003660
0.0008646
0.0006496
0.0011358
0.0007032
0.0084766
0.0014061
-0.0001675
0.0006921
0.0006435
0.0006590
0.0007922
-0.0013253
0.0069333
0.0026486
0.0012361
0.0009765
0.0026049
0.0006454
-0.0000932
-0.0025075
0.0008454
0.0019768
0.0048765
0.0013643
-0.0007343
0.0017004
0.0116922
0.0000036
-0.0016985
0.0003588
0.0219277
0.0035950
-0.0016587
0.0011630
0.0116913
0.0001426
-0.0024490
0.0007032
0.0160832
0.0035150
0.0003883
-0.0000553
0.0106178
0.0006835
-0.0024160
-0.0021614
0.0121842
0.0042597
-0.0029053
0.0004932
0.0017704
0.0090655
0.0005771
0.0093328
0.0017855
-0.0010672
0.0098827
0.0001560
0.0005246
0.0004196
0.0009858
0.0002532
0.0082566
0.0012361
-0.0003175
-0.0001579
0.0004035
0.0002090
0.0005522
-0.0019153
0.0068533
0.0023286
0.0009661
0.0007465
0.0024549
0.0001954
-0.0003832
-0.0026575
0.0004654
0.0016268
0.0038565
0.0011743
-0.0009643
0.0015204
29.1302400
29.0811250
30.6722140
32.5754980
30.5651090
34.3643350
39.7036220
32.4087110
29.3826040
34.0090860
27.3141360
37.8287910
47.5810050
36.5623180
33.8946090
36.2440940
36.8914210
32.7248610
41.3581880
34.2665040
35.9045600
34.0335550
37.9314770
43.7866410
34.9444570
35.3018700
30.6185950
43.6882220
42.1958850
39.7632410
33.6377090
37.9679800
40.1535890
40.7197700
49.5241140
39.8826380
41.4201640
50.0671960
43.0739060
50.4007330
44.4216660
48.4282950
53.0290930
46.8662630
46.1179070
62.8012090
55.5003970
49.4430350
38.2900050
0.0007487
0.0010574
0.0016075
0.0012444
0.0040756
0.0003339
0.0008377
0.0016759
0.0027598
0.0010436
0.0005218
0.0006906
0.0004055
0.0032495
0.0006295
0.0000083
0.0010180
0.0011047
0.0015851
0.0003155
0.0029495
0.0006763
-0.0026280
0.0031327
0.0021224
0.0031202
0.0027869
0.0020324
0.0007982
0.0014315
0.0016720
0.0008549
0.0004643
0.0014882
0.0005278
0.0004850
0.0006070
0.0008925
0.0020217
-0.0000255
0.0007080
0.0007165
0.0006275
0.0014248
-0.0021785
0.0007647
0.0005740
0.0005808
-0.0053635
0.0005187
0.0006074
0.0013675
0.0008044
0.0038956
-0.0006461
0.0006377
0.0013359
0.0026898
0.0006036
0.0002918
0.0002506
0.0003155
0.0029495
-0.0008105
-0.0001117
0.0007880
0.0005047
0.0015151
0.0002155
0.0027195
-0.0007937
-0.0026880
0.0028927
0.0020324
0.0030402
0.0025269
0.0019524
0.0003082
0.0013215
0.0010920
0.0008149
-0.0001057
0.0014182
0.0000478
-0.0019850
-0.0011330
0.0006625
0.0018017
-0.0010455
0.0001580
0.0004565
0.0000775
0.0011548
-0.0033785
0.0006347
0.0000540
0.0004008
-0.0069235
diff% senza alfa e lambda
Qmonte
Qvalle
Hres
0.0093612 0.0079277 0.0000000
0.0078993 0.0072462 0.0032112
0.0079664 0.0080378 0.0058736
0.0076284 0.0074624 0.0049978
0.0143355 0.0160221 0.0084084
0.0007465
0.0010552
0.0016088
0.0012435
0.0040741
0.0003359
0.0008384
0.0016764
0.0027625
0.0010410
0.0005232
0.0006891
0.0004076
0.0032500
0.0006321
0.0000063
0.0010189
0.0011029
0.0015897
0.0003176
0.0029500
0.0006751
-0.0026361
0.0031389
0.0021248
0.0031234
0.0027921
0.0020348
0.0007967
0.0014389
0.0016792
0.0008529
0.0004632
0.0014917
0.0005340
0.0004886
0.0006105
0.0008891
0.0020227
-0.0000260
0.0007079
0.0007113
0.0006262
0.0014256
-0.0021755
0.0007579
0.0005722
0.0005834
-0.0053568
0.0005165
0.0006052
0.0013688
0.0008035
0.0038941
-0.0006441
0.0006384
0.0013364
0.0026925
0.0006010
0.0002932
0.0002491
0.0003176
0.0029500
-0.0008079
-0.0001137
0.0007889
0.0005029
0.0015197
0.0002176
0.0027200
-0.0007949
-0.0026961
0.0028989
0.0020348
0.0030434
0.0025321
0.0019548
0.0003067
0.0013289
0.0010992
0.0008129
-0.0001069
0.0014217
0.0000540
-0.0019814
-0.0011295
0.0006591
0.0018027
-0.0010460
0.0001579
0.0004513
0.0000762
0.0011556
-0.0033755
0.0006279
0.0000522
0.0004034
-0.0069168
diff% senza alfa con lambda
Qmonte
Qvalle
Hres
0.0093612 0.0079277 0.0000000
0.0076542 0.0069988 0.0031103
0.0083010 0.0083754 0.0055987
0.0074367 0.0072687 0.0047972
0.0164408 0.0183750 0.0079979
0.0096728
0.0496316
0.0102031
0.0073739
0.0252857
0.0061970
0.0102357
0.0620395
0.0081250
0.0056358
0.0072752
0.0163000
0.0174868
0.0643704
0.0228605
0.0080632
0.0325000
0.0052857
0.0071802
0.0129365
0.0032414
0.0087640
0.0000717
0.0148961
0.0091805
0.0012333
0.0082456
0.0069453
0.0091373
0.0066004
0.0063313
0.0079831
0.0088036
0.0166818
0.0130465
0.0151101
0.0162596
0.0048041
0.0071287
0.0043830
0.0088279
0.0296593
0.0124355
0.0097566
0.0169043
0.0008759
0.0086379
0.0035917
0.0067700
0.0037333
0.0089065
0.9010000
0.0771714
0.0083117
0.0097913
0.0204219
0.0161186
0.0069978
0.0093928
0.0620395
0.0194925
0.0071834
0.0680769
0.0083469
0.0099225
1.1787500
0.0325000
0.0052857
0.0068586
0.0232857
0.1476667
0.0310357
0.0261081
0.0077508
0.2275000
0.0050958
0.0067185
0.0140517
0.0252766
0.0084339
0.0000805
0.0159306
0.0179559
0.0011455
0.0130556
0.0066878
0.0211818
0.0057763
0.0061261
0.0071308
0.0090926
0.0344063
0.0487826
0.0216711
0.0211375
0.0052360
0.0064864
0.0046991
0.0089065
0.0402836
0.0453529
0.0090707
0.0089242
0.0010079
0.0135405
0.0111569
0.0064068
0.0039822
0.0090543
0.1689375
0.4155385
0.0077521
1.2435000
0.0156527
0.0271714
0.0062212
0.0055280
0.0078029
0.0051932
0.0134879
0.0111174
0.0074312
0.0085162
0.0149424
0.0133363
0.0119565
0.0113963
0.0118791
0.0098046
0.0142152
0.0132617
0.0116689
0.0124521
0.0104370
0.0086058
0.0136676
0.0124815
0.0120163
0.0116402
0.0131955
0.0107968
0.0090174
0.0116254
0.0127268
0.0124620
0.0110769
0.0108446
0.0133509
0.0137889
0.0097580
0.0127030
0.0118247
0.0116666
0.0110368
0.0111149
0.0128613
0.0138499
0.0118946
0.0114298
0.0107088
0.0126985
0.0137121
0.0120562
0.0116186
0.0092673
0.0132136
0.0120827
0.0084561
0.0088746
0.0130523
0.0123603
0.0117637
0.0121783
0.0122700
0.0098138
0.0464000
0.0107422
0.0071566
0.0284857
0.0076515
0.0103313
0.0580000
0.0089821
0.0057748
0.0070116
0.0185429
0.0144737
0.0594444
0.0241860
0.0082375
0.0359286
0.0054161
0.0067936
0.0121429
0.0034138
0.0088232
0.0010068
0.0163766
0.0121880
0.0024967
0.0024035
0.0066163
0.0075098
0.0079652
0.0072196
0.0088489
0.0082021
0.0196515
0.0116512
0.0165321
0.0169038
0.0056907
0.0067770
0.0035088
0.0102456
0.0292747
0.0093710
0.0093123
0.0175638
0.0033586
0.0093448
0.0046833
0.0065876
0.0016667
0.0103368
0.8100000
0.0727714
0.0080230
0.0093031
0.0222578
0.0148814
0.0067766
0.0095350
0.0580000
0.0205224
0.0069641
0.0766923
0.0103061
0.0100187
1.1020000
0.0359286
0.0054161
0.0065912
0.0264898
0.1222222
0.0286607
0.0291892
0.0079268
0.2515000
0.0052216
0.0063240
0.0131897
0.0170638
0.0084940
0.0011303
0.0175139
0.0238382
0.0023189
0.0038056
0.0063559
0.0174091
0.0072154
0.0069856
0.0080142
0.0084714
0.0405313
0.0435652
0.0237105
0.0219750
0.0062022
0.0061280
0.0037618
0.0103368
0.0397612
0.0341765
0.0086198
0.0098636
0.0038651
0.0146486
0.0085882
0.0062225
0.0017778
0.0105083
0.1518750
0.3918462
0.0074533
1.1815000
0.0170599
0.0250857
0.0059959
0.0052660
0.0074208
0.0049300
0.0124632
0.0105799
0.0069442
0.0080866
0.0138578
0.0125118
0.0113204
0.0107401
0.0111857
0.0093019
0.0132244
0.0124838
0.0109587
0.0116589
0.0098749
0.0081194
0.0126862
0.0117163
0.0112684
0.0108521
0.0123774
0.0102068
0.0084679
0.0106830
0.0117695
0.0116088
0.0103522
0.0101549
0.0125332
0.0129075
0.0091558
0.0115466
0.0109304
0.0108146
0.0103075
0.0103856
0.0120562
0.0129655
0.0111057
0.0106115
0.0099868
0.0119059
0.0128225
0.0112634
0.0107832
0.0086204
0.0123324
0.0112681
0.0078544
0.0082472
0.0121696
0.0115174
0.0109497
0.0113473
0.0114199
0.0079621
0.0083731
0.0324153
0.0122032
0.0731795
0.1509524
0.0059770
0.0063082
0.0080937
0.0146032
0.1172653
0.0109371
0.0265784
0.2316986
0.2510714
0.0005817
0.0096985
0.0114794
0.0183875
0.0110749
0.0061226
0.0026935
0.0175112
0.0145775
0.0349011
0.0088933
0.0090811
0.0180341
0.0409265
0.0028246
0.0240870
0.0074520
0.0178671
0.2912308
0.0484697
0.0199394
0.0025758
0.0091375
0.0077090
0.0014950
0.0198481
0.0202778
0.0113838
0.0064427
0.0123437
0.1901250
0.0076482
0.0028118
0.0002121
0.0020368
0.0411268
0.0065890
0.0120581
0.0148289
0.0118131
0.0015776
0.0124048
0.0013710
0.0080937
0.0068000
0.0430804
0.0122857
0.1678824
0.0252590
0.0074286
0.0044146
0.0082761
0.0230000
0.5223636
0.0110186
0.0381831
0.0704159
0.0611304
0.0026365
0.0105986
0.0104252
0.0288431
0.0139667
0.0062971
0.0057586
0.0199410
0.0170604
0.0376216
0.0089468
0.0210000
0.0110755
0.0618444
0.0032525
0.0692500
0.0076490
0.0202778
0.1352143
0.2099500
0.0313333
0.0080952
0.0130536
0.0053523
0.0015124
0.0225168
0.0258081
0.0148289
0.0027967
0.0415789
0.0411081
0.0072201
0.0050851
0.0002577
0.0000104
0.0474797
0.0050104
0.0134675
0.0212642
0.0043279
0.0018540
0.0190610
0.0014344
0.0137370
0.0128013
0.0127746
0.0130528
0.0118160
0.0159189
0.0138298
0.0125894
0.0128828
0.0131195
0.0112408
0.0119113
0.0140261
0.0109267
0.0143135
0.0123589
0.0149848
0.0142968
0.0113773
0.0142994
0.0147325
0.0178315
0.0113964
0.0121363
0.0136550
0.0149746
0.0141866
0.0144010
0.0133779
0.0108262
0.0139180
0.0141459
0.0112878
0.0117994
0.0117869
0.0114087
0.0120395
0.0119885
0.0125917
0.0126470
0.0091129
0.0105284
0.0118769
0.0144200
0.0094851
0.0064925
0.0279661
0.0116490
0.0703077
0.1453333
0.0036322
0.0066181
0.0096419
0.0186190
0.1116939
0.0103802
0.0260098
0.2273836
0.2474643
0.0011553
0.0106815
0.0129850
0.0209750
0.0130485
0.0058134
0.0023710
0.0165122
0.0162160
0.0360659
0.0087089
0.0109189
0.0175227
0.0446618
0.0036579
0.0191304
0.0074262
0.0167343
0.2886154
0.0486364
0.0250606
0.0015303
0.0097500
0.0109776
0.0024101
0.0190296
0.0189921
0.0136061
0.0057519
0.0085000
0.1653750
0.0089130
0.0054588
0.0016414
0.0027607
0.0392394
0.0059452
0.0113895
0.0177237
0.0138692
0.0007702
0.0130794
0.0010123
0.0096419
0.0052727
0.0383929
0.0117278
0.1612941
0.0243187
0.0045143
0.0047531
0.0098592
0.0293250
0.4975455
0.0104576
0.0373662
0.0690221
0.0602522
0.0019926
0.0116729
0.0117925
0.0329020
0.0164556
0.0059792
0.0050690
0.0188657
0.0189780
0.0385766
0.0087613
0.0252500
0.0102264
0.0674889
0.0042121
0.0550000
0.0076226
0.0189921
0.1340000
0.2105000
0.0393810
0.0048095
0.0139286
0.0076218
0.0024381
0.0215882
0.0241717
0.0177237
0.0020610
0.0286316
0.0357568
0.0084142
0.0098723
0.0019939
0.0009067
0.0453008
0.0045208
0.0127208
0.0254151
0.0079344
0.0009051
0.0200976
0.0010591
0.0125025
0.0115572
0.0118236
0.0121462
0.0109716
0.0146410
0.0125479
0.0115010
0.0119656
0.0120815
0.0104292
0.0110008
0.0128400
0.0102147
0.0132024
0.0113961
0.0138086
0.0131271
0.0105387
0.0131765
0.0135478
0.0162162
0.0105996
0.0111643
0.0125602
0.0137947
0.0130197
0.0132119
0.0121742
0.0100778
0.0127638
0.0129656
0.0104379
0.0108873
0.0108450
0.0105020
0.0110291
0.0110409
0.0115749
0.0115794
0.0083688
0.0096488
0.0108983
0.0132311
0.1856585
0.0216098
0.0141765
0.0072770
0.0061143
0.0230784
0.0008696
0.0108780
0.0212470
0.1134366
1.0917778
0.0485607
0.0223805
0.0095924
0.0139375
0.0233576
0.0734921
0.0157453
0.0210406
0.0011415
0.0249281
0.0152191
0.0011921
0.0825172
0.0582368
0.1058877
0.2213429
0.0316889
0.0079000
0.0575357
0.2049180
0.1073676
0.2225616
0.0089559
0.8299333
0.0684079
0.3027455
0.0039206
0.0105556
0.0274420
0.1586515
0.0070702
0.0320500
0.0081805
0.1335439
0.0285806
0.0104444
0.0074649
0.0105246
0.0420357
0.0024000
0.0139375
0.0233576
0.1103288
0.4679048
0.0618571
0.0477170
0.0100400
0.0202727
0.0217770
0.0662353
0.0153993
0.0227466
0.0011921
0.0255673
0.0167588
0.0012410
0.1889211
0.0627801
0.1534961
0.2347576
0.1188333
0.0082867
0.4027500
0.0614973
0.0688774
0.3249400
0.0100385
0.1139746
0.2099500
0.5741724
0.0308750
0.0129915
0.0207159
0.1975660
0.0806000
0.0457857
0.0034087
0.1807317
0.0224146
0.0139000
0.0062842
0.0085810
0.0258824
0.0013188
0.0058049
0.0210783
0.1097042
1.0697778
0.0478037
0.0240265
0.0125350
0.0074375
0.0231722
0.0716349
0.0127154
0.0190938
0.0022830
0.0239250
0.0134099
0.0023842
0.0843103
0.0533618
0.1020588
0.2184286
0.0292222
0.0055400
0.0463929
0.1989508
0.1022059
0.2179452
0.0084853
0.8269333
0.0685526
0.2932182
0.0060317
0.0100139
0.0288125
0.1483636
0.0037895
0.0276500
0.0069192
diff media
Qmon
0.0487785
diff media
Qmon
0.0473614
diff media
Qval
0.0630228
diff media
Qval
0.0605610
diff media
Hres
0.0117383
diff media
Hres
0.0108972
0.1300000
0.0296452
0.0100963
0.0064465
0.0147705
0.0471429
0.0036400
0.0074375
0.0231722
0.1066986
0.4584762
0.0608929
0.0512264
0.0131200
0.0108182
0.0215755
0.0648588
0.0124359
0.0206419
0.0023842
0.0245385
0.0147665
0.0024821
0.1930263
0.0575248
0.1479457
0.2316667
0.1095833
0.0058112
0.3247500
0.0595508
0.0655660
0.3182000
0.0095110
0.1135932
0.2105000
0.5561034
0.0475000
0.0123248
0.0216058
0.1847547
0.0432000
0.0395000
0.0024362
diff% con alfa senza lambda
Qmonte
Qvalle
Hres
0.0093612 0.0079277 0.0000000
0.0070547 0.0063934 0.0032112
0.0091194 0.0092011 0.0058457
0.0068095 0.0066351 0.0050222
0.0206645 0.0230956 0.0083625
0.0083138 0.0080219 0.0056430
0.0166947 0.0208684 0.0077842
0.0227344 0.0434328 0.0057193
0.0061157 0.0059143 0.0134107
0.0269714 0.0726154 0.0110486
0.0189848 0.0255714 0.0078672
0.0079561 0.0076292 0.0084770
0.0210526 0.4000000 0.0146624
0.0341071 0.1364286 0.0133186
0.0066225 0.0062112 0.0118689
0.0061859 0.0057530 0.0110132
0.0051429 0.0073469 0.0117658
0.0247763 0.2092222 0.0097588
0.0232222 0.0111964 0.0139578
0.0404186 0.0669189 0.0132512
0.0075482 0.0072308 0.0115341
0.1365000 0.9555000 0.0123512
0.0062112 0.0059880 0.0103708
0.0056294 0.0051362 0.0086456
0.0128095 0.0139138 0.0134588
0.0386034 0.0263617 0.0123355
0.0069319 0.0065773 0.0118654
0.0095392 0.0107088 0.0115161
0.0339221 0.0362778 0.0130993
0.0179323 0.0350735 0.0107281
0.0046133 0.0042848 0.0089286
0.0119474 0.0189167 0.0106337
0.0053492 0.0050780 0.0125142
0.0109412 0.0253636 0.0123245
0.0075443 0.0067716 0.0109182
0.0024926 0.0024118 0.0107112
0.0072147 0.0063469 0.0132544
0.0060546 0.0062534 0.0137131
0.0256818 0.0529688 0.0096548
0.0128256 0.0479565 0.0121124
0.0176055 0.0252500 0.0117016
0.0163750 0.0212875 0.0114232
0.0061134 0.0066629 0.0108732
0.0050653 0.0043837 0.0109571
0.0045906 0.0049216 0.0127625
0.0076735 0.0077418 0.0137765
0.0330659 0.0449104 0.0117687
0.0200161 0.0730000 0.0098814
0.0074787 0.0067587 0.0105409
0.0254043 0.0210303 0.0126009
0.0132138 0.0152063 0.0136530
0.0119483 0.0187297 0.0119209
0.0156667 0.0172549 0.0100382
0.0045803 0.0041943 0.0091215
0.0024750 0.0026400 0.0131054
0.0077418 0.0078703 0.0119322
diff% con alfa con lambda
Qmonte
Qvalle
Hres
0.0093612 0.0079277 0.0000000
0.0068130 0.0061494 0.0031103
0.0094493 0.0095340 0.0055707
0.0066235 0.0064472 0.0048217
0.0228355 0.0255221 0.0079519
0.0084425 0.0081517 0.0053824
0.0200316 0.0250395 0.0074015
0.0232813 0.0444776 0.0054610
0.0059039 0.0057007 0.0123870
0.0303000 0.0815769 0.0105111
0.0204545 0.0275510 0.0073844
0.0080383 0.0077120 0.0080465
0.0250395 0.4757500 0.0135765
0.0350000 0.1400000 0.0124946
0.0067550 0.0063354 0.0112326
0.0059278 0.0054911 0.0103548
0.0073714 0.0105306 0.0110712
0.0277895 0.2346667 0.0092550
0.0282222 0.0136071 0.0129654
0.0417442 0.0700000 0.0124739
0.0077117 0.0073959 0.0108238
0.1400000 0.9800000 0.0115575
0.0063354 0.0061078 0.0098073
0.0052487 0.0047477 0.0081589
0.0120079 0.0130431 0.0124763
0.0453103 0.0346383 0.0115699
0.0069801 0.0066261 0.0111172
0.0106075 0.0119080 0.0107268
0.0354286 0.0378889 0.0122810
0.0209474 0.0409706 0.0101370
0.0058867 0.0054675 0.0083772
0.0178596 0.0282778 0.0096793
0.0050292 0.0047553 0.0115562
0.0124510 0.0288636 0.0114714
0.0089473 0.0082509 0.0101934
0.0034181 0.0033073 0.0100213
0.0081133 0.0072637 0.0124364
0.0054067 0.0055842 0.0128325
0.0286212 0.0590313 0.0090503
0.0141860 0.0530435 0.0109417
0.0190459 0.0273158 0.0108073
0.0170000 0.0221000 0.0105699
0.0070052 0.0076348 0.0101437
0.0047251 0.0040370 0.0102277
0.0037076 0.0039749 0.0119569
0.0090500 0.0091306 0.0128935
0.0327253 0.0444478 0.0109763
0.0230484 0.0840588 0.0090439
0.0069861 0.0062587 0.0098186
0.0260000 0.0218788 0.0118077
0.0157034 0.0180714 0.0127650
0.0112414 0.0176216 0.0111247
0.0167583 0.0198235 0.0091829
0.0044077 0.0040199 0.0084746
0.0004375 0.0004667 0.0122230
0.0091306 0.0092821 0.0111141
0.6816667
0.0137857
0.0076809
0.0050630
0.0050156
0.0149322
0.0046965
0.0063577
0.0037687
0.0215847
0.0078338
0.0217436
0.0137143
0.0114598
0.0053660
0.0064628
0.0181905
0.0084898
0.0074403
0.0126275
0.0084110
0.0034821
0.0035868
0.0084098
0.0107528
0.0237500
0.0093260
0.0070320
0.0149032
0.0011045
0.0142347
0.0114615
0.0076171
0.0422703
0.0303636
0.0300441
0.0086842
0.0010870
0.0067857
0.0129021
0.0700769
0.0116667
0.0242576
0.0191364
0.0154875
0.0103806
0.0058288
0.0079074
0.0146429
0.0132626
0.0070878
0.0129375
0.0515000
0.0072292
0.0177882
0.0063384
0.0057198
0.0196056
0.1278125
0.0742308
0.0070993
0.6430000
0.0038443
0.0251714
0.0038772
0.0064628
0.0030606
0.0138125
0.0078867
0.0498824
0.0022948
0.0142429
0.0033855
0.0066085
0.0286500
0.0378182
0.0074958
0.0181408
0.0017080
0.0008478
0.0007368
0.0091903
0.0097653
0.0372549
0.0117611
0.0072325
0.0318621
0.0000972
0.0166593
0.0184054
0.0076630
0.0977500
0.0315472
0.0454000
0.0100000
0.0031250
0.0069651
0.0146429
0.0325357
0.0115000
0.0381190
0.0601429
0.0221250
0.0072073
0.0058967
0.0089706
0.0186364
0.0172763
0.0034837
0.0435789
0.0111351
0.0068246
0.0321702
0.0076994
0.0046554
0.0226341
0.0083493
0.0087477
0.0129141
0.0122399
0.0116363
0.0120501
0.0121331
0.0131237
0.0123931
0.0128028
0.0129140
0.0116822
0.0153840
0.0132771
0.0120403
0.0127464
0.0131875
0.0111309
0.0115524
0.0134772
0.0107921
0.0142521
0.0124313
0.0149662
0.0127965
0.0112342
0.0142752
0.0147560
0.0168527
0.0112322
0.0120607
0.0135443
0.0149532
0.0141077
0.0141315
0.0128515
0.0105967
0.0137768
0.0137960
0.0107565
0.0117206
0.0111037
0.0113488
0.0116710
0.0108928
0.0118867
0.0123260
0.0090063
0.0103015
0.0113743
0.0142884
0.7493333
0.0104429
0.0073429
0.0054567
0.0069609
0.0137458
0.0044864
0.0078618
0.0061119
0.0259831
0.0072897
0.0183333
0.0078333
0.0137931
0.0057246
0.0079917
0.0220635
0.0138163
0.0068992
0.0120000
0.0042192
0.0072679
0.0042308
0.0093694
0.0121835
0.0263375
0.0111674
0.0067537
0.0145081
0.0022130
0.0159390
0.0122747
0.0074297
0.0435676
0.0298977
0.0339559
0.0095351
0.0060580
0.0067728
0.0116643
0.0566923
0.0135455
0.0294545
0.0232879
0.0161125
0.0134701
0.0067971
0.0069111
0.0132381
0.0154949
0.0064046
0.0168125
0.0266250
0.0083992
0.0204588
0.0078232
0.0064928
0.0174507
0.1405000
0.0562308
0.0067496
0.6930000
0.0053353
0.0231714
0.0036632
0.0079917
0.0049636
0.0184464
0.0073390
0.0420588
0.0013108
0.0171429
0.0037772
0.0081718
0.0347500
0.0615455
0.0069506
0.0172394
0.0030619
0.0017696
0.0014597
0.0102390
0.0110646
0.0413137
0.0140833
0.0069463
0.0310172
0.0012904
0.0186538
0.0190721
0.0074744
0.1007500
0.0307736
0.0513111
0.0109798
0.0174167
0.0069519
0.0132381
0.0263214
0.0053000
0.0462857
0.0731905
0.0230179
0.0093523
0.0068763
0.0078403
0.0168485
0.0201842
0.0027561
0.0566316
0.0057568
0.0079291
0.0370000
0.0095031
0.0056347
0.0201463
0.0077482
0.0081206
0.0120299
0.0113946
0.0108196
0.0112180
0.0112801
0.0118741
0.0111385
0.0118520
0.0120057
0.0108356
0.0140940
0.0119747
0.0109366
0.0118294
0.0121503
0.0103174
0.0106346
0.0122784
0.0100799
0.0131416
0.0114694
0.0137915
0.0115985
0.0103961
0.0131536
0.0135734
0.0151969
0.0104355
0.0110903
0.0124511
0.0137748
0.0129424
0.0129439
0.0116275
0.0098469
0.0126237
0.0126167
0.0099008
0.0108100
0.0101538
0.0104439
0.0106589
0.0099302
0.0108618
0.0112576
0.0082646
0.0094239
0.0103909
0.0131013
0.0088904
0.0069535
0.0172763
0.0184486
0.0071118
0.0132381
0.0041744
0.0255854
0.0211220
0.0162294
0.0068597
0.0129524
0.0120000
0.0199710
0.0220244
0.0082831
0.0109718
0.1058889
0.0249626
0.0150177
0.0050255
0.0282188
0.0091060
0.0573651
0.0047753
0.0013156
0.0055896
0.0058125
0.0032085
0.0058374
0.0146782
0.0089605
0.0081444
0.0087857
0.0332222
0.0020133
0.0711786
0.0150164
0.0083529
0.0050548
0.0051863
0.2492000
0.0163158
0.0129273
0.0198095
0.0082569
0.0147723
0.0149394
0.0189825
0.0018333
0.0042387
0.0067604
0.0077662
0.0247736
0.0159672
0.0083577
0.0203415
0.0043676
0.0184035
0.0279355
0.0130296
0.0070369
0.0222951
0.0218571
0.0551200
0.0282188
0.0091060
0.0106712
0.0453810
0.0317976
0.0320189
0.0052600
0.0410455
0.0062950
0.0307529
0.0046703
0.0014223
0.0058374
0.0059615
0.0035331
0.0060769
0.0336053
0.0096596
0.0118062
0.0093182
0.1245833
0.0021119
0.4982500
0.0004492
0.0053585
0.0073800
0.0058132
0.0232034
0.0120000
0.0245172
0.1560000
0.0101624
0.0066928
0.0186038
0.2164000
0.0026190
0.0003696
0.0083836
0.0061395
0.0201842
0.0205701
0.0062981
0.0139762
0.0045749
0.0209512
0.0197439
0.0156941
0.0058921
0.0155429
0.0089804
0.0222029
0.0167561
0.0081958
0.0084366
0.1133333
0.0224766
0.0166814
0.0079363
0.0214688
0.0090099
0.0543651
0.0079850
0.0007719
0.0045047
0.0049625
0.0013286
0.0047044
0.0169540
0.0046842
0.0043262
0.0061857
0.0360667
0.0044533
0.0560000
0.0096393
0.0032500
0.0008630
0.0047255
0.2468000
0.0145526
0.0217455
0.0217460
0.0078194
0.0130491
0.0253333
0.0220877
0.0022167
0.0028402
diff media
Qmon
0.0205615
diff media
Qmon
0.0212638
diff media
diff media
0.0063750
0.0068571
0.0289434
0.0196885
0.0074015
0.0214756
0.0047866
0.0150702
0.0261129
0.0123556
0.0060443
0.0267541
0.0163571
0.0612800
0.0214688
0.0090099
0.0082055
0.0485714
0.0286310
0.0355660
0.0083067
0.0312273
0.0061906
0.0285294
0.0078095
0.0008345
0.0047044
0.0050897
0.0014630
0.0048974
0.0388158
0.0050496
0.0062713
0.0065606
0.1352500
0.0046713
0.3920000
0.0022032
0.0020849
0.0012600
0.0052967
0.0228983
0.0053000
0.0412414
0.1712500
0.0096239
0.0055739
0.0315472
0.2518000
0.0031667
0.0007087
Qval
0.0372381
Qval
0.0391020
diff media
Hres
0.0115195
diff media
Hres
0.0106755