Tesi di Laurea in Ingegneria Gestionale

Università degli Studi di Genova - Polo di Savona - Facoltà di Ingegneria
Tesi di Laurea in Ingegneria Gestionale
Modellistica, Simulazione e Previsione a Breve Termine del
Comportamento Dinamico del Traffico su Tratti Autostradali
Candidati: Carlo Caligaris, Iacopo Salvarani
Relatore: Ch.mo Prof. Ing. Simona Sacone
Correlatori: Dott. Alessandro Seri, Dott. Ing. Silvia Siri
Con la Collaborazione di: Società Autostrade per l’Italia S.p.A.
2006
Sommario
Questa Tesi si propone di illustrare il lavoro da noi svolto presso la Società Autostrade per l’Italia e finalizzato alla realizzazione di uno strumento informatico
in grado di simulare l’andamento del traffico lungo una tratta autostradale. Queste pagine contengono una descrizione d’insieme dell’ambiente di lavoro in cui ci
siamo inseriti, una spiegazione teorica degli strumenti matematici ed informatici
utilizzati ed una presentazione del risultato finale che abbiamo conseguito. Gli
argomenti scientifici trattati più nel dettaglio sono i modelli matematici per la rappresentazione del traffico e la teoria informatica relativa alla gestione di basi di
dati relazionali basate sul concetto di transazione.
Ringraziamenti e Notazioni
Figura 1: Highway Lanes [58]
3
Carlo Caligaris, Iacopo Salvarani
Ringraziamenti di Carlo Caligaris e Iacopo Salvarani
Scrivere questa Tesi e lavorare su questo progetto è stato un lavoro molto lungo
e difficile, ma al contempo gratificante e foriero di grande soddisfazione. Per
questi motivi non possiamo che ringraziare la prof. Simona Sacone, la quale ci
ha proposto questa attività, ci ha consentito di lavorare sempre nelle migliori
condizioni possibili e ci ha seguito con grande puntualità aiutandoci anche ad
indirizzare il nostro futuro. Con lei, citiamo anche la Dott. Silvia Siri che si è
sempre dimostrata gentile e ben disposta nei nostri confronti.
Meritano un ringraziamento particolare anche tutte le persone che hanno seguito il nostro percorso di inserimento nella realtà aziendale della Società Autostrade per l’Italia. Ci riferiamo sicuramente al Dott. Alessandro Seri che, nonostante i mille impegni, ha sempre trovato il tempo (e la pazienza) per ascoltarci
e seguire i nostri progressi. Con lui ricordiamo anche Fabio Santucci, che ci ha
aiutato moltissimo sui tanti problemi tecnici che abbiamo incontrato, sottraendo
tempo al suo lavoro per dedicarlo a noi. Inoltre, non possiamo non citare Valerio,
che ha condiviso con noi la Sala Conferenze di Infoblu per due mesi, dimostrandosi una persona estremamente affabile e simpatica; Vittorugo, che trovava sempre
il modo per tirarci un pò su di morale e Mary, una delle persone più gentili con le
quali abbiamo mai avuto a che fare.
Vogliamo ringraziare e salutare anche lo staff della sede della Direzione del
Primo Tronco di Genova per averci accolto e fornito tutto quello di cui abbiamo
avuto bisogno. Citiamo in particolare il dott. Paolo Spingardi e Cristina Rossi.
4
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
Ringraziamenti di Carlo Caligaris
Ebbene, questa è la mia Tesi.
Ho sempre pensato alla realizzazione di questo lavoro come ad un momento
importante della mia vita. So che, come si dice fino all’abuso, questo non deve
essere un punto di arrivo ma anzi un punto di partenza, tuttavia, sarebbe negare la realtà sminuire la dimensione di questo evento. Ho sempre dato un grande
valore alla scuola ed al lavoro fatto in funzione di essa e la Laurea è una meta
che ha condizionato ogni aspetto della mia vita fin da quando ho memoria. Averla raggiunta mi pone in una dimensione nuova che spero possa essere ricca di
soddisfazione come la precedente.
La possibilità di scrivere una pagina come questa nella mia Tesi si è presentata nel momento in cui ho visto quelle scritte da alcuni miei colleghi. Da
quel momento, mi sono interrogato molto su come organizzarla e sul criterio con
il quale inserire le varie persone che, a mio parere, meritano di essere ricordate.
Alla fine, ho deciso di ringraziare tutti quelli che mi hanno aiutato in modo importante durante questi cinque anni e mezzo di Universitá, sia in ambito prettamente
scolastico che in altri settori.
Il primo ringraziamento va a Dio e spiegare i motivi mi sembra, come dire,
superfluo. Quindi, vorrei ringraziare tutti i membri della mia famiglia: mio papà
Ottavio, che mi ha sempre seguito con grande attenzione, mia mamma Roberta,
che mi ha sempre aiutato con tutto l’affetto di cui solo una mamma è capace, ed
i nonni Carlo e Maria (che però tutti chiamano Giovanna) che si sono sempre
interessati ai miei risultati universitari. Vorrei citare e salutare anche i miei due
gatti: Spot e Isis.
Tra i docenti, la prima persona da ringraziare è di nuovo mio papà: il suo
doppio ruolo non ci ha mai creato grossi problemi e spero che questa situazione
sia stata ben accetatta anche dall’ambiente circostante. Con lui, saluto anche
il prof. Oliva. Voglio poi ringraziare la prof. Simona Sacone (e con lei Silvia
Siri) che ci ha proposto questa Tesi e ci ha seguito nel lavoro conseguente. Un
5
Carlo Caligaris, Iacopo Salvarani
ringraziamento va anche ad Angelo Alessandri, che si è dimostrato una persona
molto interessata ed interessante e con il quale spero, in futuro, di intraprendere
qualche fruttuosa collaborazione. Ringrazio anche il prof. Giribone, che si è
sempre curato delle mie (alterne) fortune. Infine, voglio ringraziare due ragazzi
che, per la loro età potrebbero anche essere inclusi nel paragrafo sottostante, ma
il cui ruolo ne impone la presenza in questo contesto e me li propone come esempi
da seguire: questi sono Renato Procopio e Federico Delfino (colgo l’occasione
per ricordare il padre di Federico, scomparso prematuramente, insegnante di rara
qualità del quale ho avuto la fortuna di seguire un intero corso).
Infine, vorrei ringraziare un pò di amici. Il più importante e più grande di
questi ringraziamenti va a Iacopo, il mio amico migliore e l’unica persona con la
quale sarei stato in grado di svolgere un lavoro cosı̀ impegnativo come quello inerente questa Tesi. L’altro amico che ho conosciuto in questi anni è Fabio Gungui;
ragazzo di grande serietà ed ambizione e cortesia Spero che in futuro potremo
ancora incrociare le nostre strade che, per adesso, si divideranno. Ho avuto la
fortuna di condividere il cammino anche con persone con le quali spero di mantenere un rapporto durevole negli anni: Francesca Viale, Michela Morasso, Andrea
Pitzalis, Livio Ginevri e Federico Beltramini. Queste sono le persone che hanno
reso il mio soggiorno universitario più leggero e piacevole e la cui amicizia è una
delle cose più preziose che questi anni mi hanno lasciato.
6
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
Ringraziamenti di Iacopo Salvarani
Onestamente non sono mai stato un drago a fare discorsoni... e non penso di aver
imparato proprio prima di mettermi a scrivere questa pagina. Non sono mai stato
un grande amante della forma e in cuor mio spero di non diventarlo mai. Pertanto perdonate il linguaggio un poco colloquiale e prendetelo a testimone della
sinceritá di ciò che scrivo...
Con queste poche righe voglio cercare di mostrare tutta la gratitudine che provo
verso le persone che in questo quinquennio hanno contribuito al raggiungimento
di questo mio traguardo.
Grazie a quella gabbia di matti che é la mia famiglia, della quale sono felice
e fiero di far parte, per il sostegno economico e soprattutto per quello morale.
Grazie alla Vale, che quando preparavo Impianti Industriali 1 mi hai regalato
la coccinella volante.
Grazie a Carlo, col quale ho potuto lavorare e divertirmi al contempo (e non
mi pare poco). Se non fosse stato per il tuo sprone, pigro come sono, ci avrei
messo almeno un anno in piú.
Grazie a tutti i compagni di corso coi quali ho vissuto numerose avventure insieme
(partite, risate, aperitivi, cene, feste, festini, festoni e altre amenitá del genere),
per merito vostro sono stati cinque anni piacevoli.
post scriptum
Per tutte le persone alle quali tengo, che amo e che stimo ma che non ho citato
sopra:
Tranquilli... non mi sono dimenticato di voi (anche se conoscendomi in effetti il
dubbio era lecito)... semplicemente non avete avuto parte nella mia vita universitaria e non mi sembrava l’occasione adatta per dirvi grazie.
7
Carlo Caligaris, Iacopo Salvarani
E poi lo sapete, appartenete a qualcosa di ben piú importante di una tesi di laurea; appartenete alla mia vita quotidiana... e per quella vi tributo giá, anche se
silenziosamente, 365 grazie all’anno, e 366 nei bisestili.
8
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
Notazione Utilizzata
Organizzazione del Testo
La Tesi è divisa in Capitoli, Sezioni, Sottosezioni e Sottosottosezioni.
Nel corso della trattazione, queste quattro suddivisioni saranno riconoscibili per
il carattere del loro titolo e per il numero che compare a sinistra di quest’ultimo
(tranne che nel caso delle Sottosottosezioni).
Il numero identificativo del paragrafo corrente può essere composto da uno, due
o tre elementi. Evidentemente, il primo numero indica il Capitolo, il secondo,
ove presente, la Sezione, il terzo, ove presente, la Sottosezione. Le Sottosottosezioni sono considerate come uno strumento di organizzazione del testo a livello basso e quindi non hanno alcun numero identificativo (e, conseguentemente, non compaiono nemmeno sull’Indice). Il paragrafo che state leggendo è una
Sottosezione.
Citazioni
Le citazioni possono comparire in seguito ad una figura o ad un campo di testo.
Nel caso della figura, indicano la risorsa dalla quale quella figura è stata estratta.
Se mancante, significa che la figura è stata prodotta dagli Autori della Tesi. Per
quanto riguarda le citazioni immerse nel testo, esse indicano gli strumenti da cui
sono state tratte le informazioni riportate in precedenza. A seconda del livello di
profondità che la struttura del testo assume in un particolare contesto, la citazione
può essere posta in coda ad un Capitolo, ad una Sezione o ad una Sottosezione
(non ad una Sottosottosezione). La citazione è valida a ritroso fino al primo titolo
di una non Sottosottosezione o fino ad un’altra citazione, se precedente a quel
titolo.
Evidentemente, ove le citazioni fossero assenti, il testo sarebbe frutto della mente
degli Autori ed i loro ispiratori sarebbero tanti e tali da non poter comparire in un
solo riferimento bibliografico.
9
Carlo Caligaris, Iacopo Salvarani
10
Indice
1
Presentazione del Lavoro e di Autostrade per l’Italia S.p.A.
17
1.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
1.2
La Società Autostrade . . . . . . . . . . . . . . . . . . . . . . . .
19
1.2.1
Autostrade per l’Italia . . . . . . . . . . . . . . . . . . .
19
1.2.2
Infoblu . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
AutoTraf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.3.1
Interfaccia di AutoTraf . . . . . . . . . . . . . . . . . . .
22
1.3.2
Possibili Implementazioni . . . . . . . . . . . . . . . . .
25
1.3
2
Strumenti Matematici
27
2.1
L’Obiettivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
2.2
Introduzione ai Modelli di Traffico . . . . . . . . . . . . . . . . .
30
2.2.1
L’Utilità dei Modelli di Traffico . . . . . . . . . . . . . .
30
2.2.2
Modelli Microscopici . . . . . . . . . . . . . . . . . . . .
32
2.2.3
Modelli Macroscopici . . . . . . . . . . . . . . . . . . .
39
2.2.4
Modelli Mesoscopici . . . . . . . . . . . . . . . . . . . .
44
2.2.5
Trattazione Analitica . . . . . . . . . . . . . . . . . . . .
45
Il Modello Macroscopico di Traffico Autostradale . . . . . . . . .
49
2.3.1
Un esempio di trasporto nel caso della velocità costante .
51
Modelli Differenziali di Traffico Autostradale . . . . . . . . . . .
53
2.4.1
Ripartenza dopo un blocco . . . . . . . . . . . . . . . . .
55
2.4.2
La formazione di code . . . . . . . . . . . . . . . . . . .
61
Metodi di calcolo numerici alle Differenze Finite . . . . . . . . .
64
2.3
2.4
2.5
11
INDICE
2.6
3
Carlo Caligaris, Iacopo Salvarani
2.5.1
Generalità Sulle Equazioni Iperboliche . . . . . . . . . .
64
2.5.2
Introduzione al Metodo delle Differenze Finite . . . . . .
67
Il Modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
2.6.1
La Scelta del Modello . . . . . . . . . . . . . . . . . . .
94
2.6.2
L’equazione fondamentale di Papageorgiou . . . . . . . .
95
2.6.3
L’Equazione del Modello . . . . . . . . . . . . . . . . . .
97
2.6.4
Le Equazioni di Papageorgiou . . . . . . . . . . . . . . . 100
2.6.5
Inizializzazione del modello . . . . . . . . . . . . . . . . 109
2.6.6
Pregi e difetti del modello . . . . . . . . . . . . . . . . . 110
Strumenti Informatici Utilizzati
3.1
3.2
3.3
115
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.1.1
Introduzione al Linguaggio di Programmazione Java . . . 116
3.1.2
Linguaggi Macchina, Assembly e di Alto Livello . . . . . 116
3.1.3
La Storia dei Linguaggi C e C++ . . . . . . . . . . . . . . 118
3.1.4
La Storia di Java . . . . . . . . . . . . . . . . . . . . . . 119
3.1.5
Le Librerie di Classi Java . . . . . . . . . . . . . . . . . . 120
3.1.6
Gli Elementi Fondamentali di un Tipico Ambiente Java . . 120
3.1.7
Concetti Fondamentali della Tecnologia ad Oggetti . . . . 123
Le Basi di Dati ed i Sistemi di Gestione di Basi di Dati . . . . . . 125
3.2.1
Introduzione alle Basi di Dati . . . . . . . . . . . . . . . 125
3.2.2
Modelli dei Dati: il Modello Relazionale . . . . . . . . . 128
3.2.3
Livelli di Astrazione nel DBMS ed Indipendenza dei Dati 129
3.2.4
Definizioni Fondamentali . . . . . . . . . . . . . . . . . . 131
3.2.5
Relazioni e Basi di Dati . . . . . . . . . . . . . . . . . . 132
3.2.6
Linguaggi ed Utenti delle Basi di Dati . . . . . . . . . . . 134
3.2.7
Vantaggi e Svantaggi dei DBMS . . . . . . . . . . . . . . 135
Oracle9i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.3.1
Introduzione ad Oracle9i . . . . . . . . . . . . . . . . . . 137
3.3.2
Componenti per lo Sviluppo di Applicazioni su Database . 139
3.3.3
Componenti di Connessione del Database . . . . . . . . . 140
3.3.4
Oracle9iApplication Server . . . . . . . . . . . . . . . . 141
12
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.3.5
3.4
3.5
3.6
3.7
3.8
4
INDICE
Confronto con Altri RDBMS . . . . . . . . . . . . . . . . 142
SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
3.4.1
Introduzione ad SQL . . . . . . . . . . . . . . . . . . . . 144
3.4.2
Standardizzazione dell’SQL . . . . . . . . . . . . . . . . 144
3.4.3
Interrogazioni in SQL . . . . . . . . . . . . . . . . . . . 145
JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.5.1
Cosa Significa JDBC? . . . . . . . . . . . . . . . . . . . 146
3.5.2
Gli Oracle JDBC Drivers . . . . . . . . . . . . . . . . . . 146
3.5.3
La Connessione da Java ad Oracle . . . . . . . . . . . . . 148
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.6.1
Introduzione ad XML . . . . . . . . . . . . . . . . . . . 149
3.6.2
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3.6.3
Che Cosa È l’XML . . . . . . . . . . . . . . . . . . . . . 151
3.6.4
Lo Stack di Protocolli XML . . . . . . . . . . . . . . . . 151
3.6.5
Specifiche XML . . . . . . . . . . . . . . . . . . . . . . 153
3.6.6
Le Interfacce di Programmazione . . . . . . . . . . . . . 154
3.6.7
Altre Specifiche XML . . . . . . . . . . . . . . . . . . . 156
3.6.8
Java ed XML . . . . . . . . . . . . . . . . . . . . . . . . 159
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.7.1
Cosa è SVG . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.7.2
Storia e Vantaggi di SVG . . . . . . . . . . . . . . . . . . 160
JavaScript ed HTML . . . . . . . . . . . . . . . . . . . . . . . . 162
3.8.1
Cosa è JavaScript . . . . . . . . . . . . . . . . . . . . . . 162
3.8.2
Scripting e Programmazione . . . . . . . . . . . . . . . . 163
3.8.3
Principali Caratteristiche di JavaScript . . . . . . . . . . . 163
3.8.4
Come Inserire uno Script in un Documento HTML . . . . 164
3.8.5
ECMAScript . . . . . . . . . . . . . . . . . . . . . . . . 165
Oggetto del Lavoro
4.1
167
Presentazione del Tratto Milano-Brescia . . . . . . . . . . . . . . 168
4.1.1
La Autostrada A4 . . . . . . . . . . . . . . . . . . . . . . 168
4.1.2
Il Tratto Milano-Brescia . . . . . . . . . . . . . . . . . . 171
13
INDICE
5
Carlo Caligaris, Iacopo Salvarani
4.1.3
Quante Auto hanno il Telepass? . . . . . . . . . . . . . . 177
4.1.4
Matrice di Ingresso ed Uscita . . . . . . . . . . . . . . . 183
Applicazione del Modello
191
5.1
Il Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.2
Il Simulatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.2.1
Equazione della Densità . . . . . . . . . . . . . . . . . . 195
5.2.2
Equazione della Velocità . . . . . . . . . . . . . . . . . . 197
5.2.3
Equazione Fondamentale di Papageorgiou
5.2.4
Funzionamento del Programma . . . . . . . . . . . . . . 199
5.2.5
Definizioni . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.2.6
Ridimensionamento dei Vettori
5.2.7
Inizializzazione dei Vettori . . . . . . . . . . . . . . . . . 201
5.2.8
Cancellazione dei Files XML . . . . . . . . . . . . . . . 201
5.2.9
Inizializzazione dei Parametri . . . . . . . . . . . . . . . 202
. . . . . . . . 198
. . . . . . . . . . . . . . 201
5.2.10 Inizializzazione degli Ingressi . . . . . . . . . . . . . . . 203
5.2.11 Inizializzazione delle Uscite . . . . . . . . . . . . . . . . 204
5.2.12 Inizializzazione di Velocità, Flussi e Densità . . . . . . . 205
5.2.13 Simulazione
. . . . . . . . . . . . . . . . . . . . . . . . 208
5.2.14 Come Usiamo la JDBC per Passare Queries al Database . 211
5.2.15 La Nostra Tabella sul Database . . . . . . . . . . . . . . . 214
5.2.16 Interfaccia del Simulatore . . . . . . . . . . . . . . . . . 215
5.2.17 Grafici con Matlab . . . . . . . . . . . . . . . . . . . . . 228
5.3
5.4
Considerazioni sui Grafici . . . . . . . . . . . . . . . . . . . . . 231
5.3.1
Grafico Flusso-Densità . . . . . . . . . . . . . . . . . . . 231
5.3.2
Assonometria della Velocità . . . . . . . . . . . . . . . . 232
Programma di Controllo . . . . . . . . . . . . . . . . . . . . . . 235
5.4.1
Elenco.js e Controllo.html . . . . . . . . . . . . 239
5.4.2
Simulazioni Confrontabili e Simulazioni non Confrontabili 241
5.4.3
Esecuzione delle Query . . . . . . . . . . . . . . . . . . . 242
5.4.4
Scrittura sui files xml . . . . . . . . . . . . . . . . . . . 242
5.4.5
Rappresentazione Grafica del Controllo . . . . . . . . . . 249
14
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.5
6
INDICE
Qualche Risultato . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Sviluppi Futuri
259
6.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
6.2
Pubblicazione sul Server . . . . . . . . . . . . . . . . . . . . . . 261
6.3
Disegno delle Curve di Approssimazione delle Entrate . . . . . . 263
6.4
Applicazione ad Altre Tratte . . . . . . . . . . . . . . . . . . . . 268
15
INDICE
Carlo Caligaris, Iacopo Salvarani
16
Capitolo 1
Presentazione del Lavoro e di
Autostrade per l’Italia S.p.A.
Figura 1.1: Infrared picture of the interchange of I-95 and I-695, northeast of
Baltimore. [61]
17
1.1. INTRODUZIONE
1.1
Carlo Caligaris, Iacopo Salvarani
Introduzione
Per la realizzazione di questa Tesi, abbiamo collaborato con la Società Autostrade
per l’Italia S.p.A..
Il nostro obiettivo era quello di realizzare un simulatore di traffico autostradale su una tratta specifica (nel nostro caso la Autostrada A4 nel tratto Milano Brescia). In pratica, abbiamo costruito un software in grado di ricevere in ingresso i dati sul traffico rilevati sulla rete, elaborarli secondo un modello matematico
derivante dalle equazioni di continuità e di conservazione della massa caratteristiche della dinamica dei fluidi ed ottenere dei valori previsti di velocità, flusso e
densità per i 30 minuti successivi all’istante di partenza. Questi dati vengono poi
visualizzati tramite un’interfaccia che ne consente la comprensione immediata.
Entreremo nel dettaglio del nostro lavoro nei Capitoli seguenti; per ora ci interessa introdurre l’ambiente al quale abbiamo fatto riferimento durante lo svolgimento
del nostro lavoro, ossia quello della Società Autostrade.
18
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 1. PRESENTAZIONE DEL LAVORO E DI AUTOSTRADE PER L’ITALIA S.P.A.
1.2
La Società Autostrade
Il Gruppo Autostrade si posiziona al primo posto in Europa tra i concessionari di
costruzione e gestione di autostrade a pedaggio e di servizi alla mobilità. Tra le
società del gruppo è compresa Autostrade per l’Italia S.p.A., che ha in gestione
2854.6 km di rete autostradale (tra cui anche il tratto di nostro interesse). Tra
le attività collegate al proprio core business, il Gruppo Autostrade ha attivato la
Infoblu S.p.A., che svolge attività relative alla produzione e diffusione di servizi
informativi sulle condizioni del traffico lungo la rete autostradale. [54]
1.2.1
Autostrade per l’Italia
Autostrade per l’Italia, controllata al 100% dalla holding Autostrade S.p.A., è la
società capofila del settore autostradale del Gruppo Autostrade, che dal 1 luglio
del 2003 ha completato il processo di riorganizzazione strategica (Progetto Mediterraneo), attraverso il conferimento delle attività operative a società di nuova costituzione. A seguito del conferimento, la società concessionaria delle attività di
costruzione e gestione della rete autostradale Autostrade concessioni e costruzioni
S.p.A. ha assunto. la nuova denominazione Autostrade per l’Italia S.p.A..
Autostrade per l’Italia, oltre alla rete in concessione, controlla a sua volta altre
8 società concessionarie (Traforo Monte Bianco, Raccordo autostradale Valdostano (RAV) Torino-Savona, Tangenziale di Napoli, Società Autostrade Meridionali (SAM), Strada dei Parchi, Società Autostrada Tirrenica (SAT) e Pedemontana
Lombarda). La rete gestita da tutte le società concessionarie appartenenti al Gruppo ha un’estensione di 3408.1 Km, pari al 62% della rete autostradale italiana a
pedaggio.
19
1.2. LA SOCIETÀ AUTOSTRADE
Carlo Caligaris, Iacopo Salvarani
Figura 1.2: Organigramma [55]
L’impegno di Autostrade per l’Italia è focalizzato ad assicurare la massima
funzionalità della rete autostradale e a perseguire il costante miglioramento della sicurezza e della qualità del servizio offerto alla clientela, anche attraverso lo
sviluppo di servizi innovativi. La continuità dell’impegno profuso da Autostrade per l’Italia rispetto alla sicurezza, la telematica e l’ambiente hanno consentito
alla Società di partecipare con un ruolo di primo piano alla Piattaforma Tecnolo20
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 1. PRESENTAZIONE DEL LAVORO E DI AUTOSTRADE PER L’ITALIA S.P.A.
gica Europea, dedicata al tema della costruzione e della gestione delle infrastrutture promossa dalla Direzione Generale Ricerca della Commissione Europea e
finalizzata allo sviluppo di piani pluriennali di ricerca e innovazione tecnologica.
[54]
1.2.2
Infoblu
Infoblu nasce dalle più avanzate tecnologie del gruppo Autostrade e cresce come
società nel settore dell’infomobilità offrendo informazioni e servizi personalzzati
ed in tempo reale.
Infoblu, nata nel 2000 con le più avanzate esperienze e tecnologie del gruppo Autostrade, è un progetto che si è evoluto nel tempo e che è oggi partecipato al 100%
da Autostrade SpA con un team composto da persone altamente qualificate in grado di rispondere alle esigenze di mercato.
Infoblu nasce per soddisfare i bisogni di informazione sulla viabilità delle persone in movimento, con l’obiettivo di erogare in modo utile, semplice e veloce
servizi sull’infomobilità ad automobilisti ed a chiunque necessiti informazioni e
contenuti autorevoli su traffico, percorribilità delle autostrade, eventi autostradali
che hanno incidenza sulla mobilità, percorsi alternativi, microclima e molto altro. Attraverso le più moderne tecnologie, Infoblu è in grado di erogare contenuti
sull’infomobilità a emittenti televisive e radiofoniche, operatori on line, società di
servizi e diversi altri operatori che necessitano di informazioni in tempo reale su
percorsi autostradali, traffico, tempi di percorrenza, proiezioni ed altro.
A livello concettuale in Infoblu si può identificare il seguente ambito di sviluppo
tecnologico: sistemi e tecnologie volte a fornire al personale operativo interno,
agli utenti ed al mondo degli operatori del settore le informazioni sulla viabilità, lo stato della percorribilità della rete (tempi di percorrenza, immagini e video), le criticità nei percorsi (incidenti, cantieri, etc.), gli impedimenti di natura
meteorologica, servizi e facilities usufruibili su rete. [56]
21
1.3. AUTOTRAF
1.3
Carlo Caligaris, Iacopo Salvarani
AutoTraf
Per rispondere alle moderne esigenze di infomobilità, Autostrade ha sviluppato
un sistema di rilevazione dei tempi di percorrenza sulle tratte autostradali. Tale sistema, denominato AutoTraf, consiste nell’effettuare in modo completamente automatico la stima delle condizioni di viabilità basandosi su una misura oggettiva:
il tempo di percorrenza tra due stazioni successive.
Ogni giorno la rete autostradale è percorsa da 4 milioni di veicoli che al loro
ingresso in autostrada ricevono un biglietto (fisico o virtuale) che viene ritirato in
uscita. Quando un veicolo entra ed esce dalla rete autostradale vengono registrate
la stazione, la data e l’ora di transito. È possibile quindi ricostruire il tempo di
percorrenza da una stazione all’altra e, nota la distanza tra queste stazioni, la velocità media mantenuta. Confrontando i tempi di percorrenza con dei tempi medi
stimati per ciascuna tratta è possibile determinare lo stato della viabilità sulla rete
autostradale.
AutoTraf calcola il tempo necessario per percorrere una tratta base, intesa come tratta autostradale tra due accessi (entrata/uscita) consecutivi, utilizzando i
dati provenienti dalle piste Telepass, ed integrandoli con quelli provenienti da una
rete di sensori collocati in itinere. Nel seguito parleremo dettagliamente della
sensoristica utilizzata. [4]
1.3.1
Interfaccia di AutoTraf
Il sistema dispone di un’interfaccia web che mostra, nella prima schermata, lo
stato della percorrenza sull’intera rete autostradale, attraverso l’uso di colori che
esprimono le condizioni di viabilità attualmente stimate per ogni tratto.
22
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 1. PRESENTAZIONE DEL LAVORO E DI AUTOSTRADE PER L’ITALIA S.P.A.
Figura 1.3: Rete Autostradale gestita da AutoTraf [53]
Il colore blu indica una situazione indeterminata per carenza di dati, mentre il
traffico regolare, rallentato, o con code viene indicato rispettivamente con i colori
verde, giallo o rosso. L’attribuzione di un colore ad un tratto avviene in base
all’indice di percorrenza stimato ed alle soglie definite per quel tratto: se l’indice
di percorrenza è minore di 1.5, ovvero se il tempo stimato non supera il 150% del
tempo di riferimento, il colore è verde, giallo se l’indice è compreso tra 1.5 e 2.0,
23
1.3. AUTOTRAF
Carlo Caligaris, Iacopo Salvarani
e rosso se è maggiore di 2.0. Con un click su un’area della cartina, si accede ad
una visione di dettaglio della rete. Il sistema offre attualmente un dettaglio per
ognuno dei nove tronchi.
Figura 1.4: Dettaglio della A4 e della A8 [53]
È possibile avvicinare ulteriormente il punto di vista dell’utente visualizzando
una particolare tratta compresa nella schermata precedente.
Figura 1.5: Il tratto Milano-Brescia [53]
Da queste pagine è possibile collegarsi a pagine di supporto in grado di visualizzare informazioni sui vari tipi di congegni elettronici distributi lungo la rete;
24
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 1. PRESENTAZIONE DEL LAVORO E DI AUTOSTRADE PER L’ITALIA S.P.A.
ogni telecamera, boa in itinere, stazione etc. è collegata ad un pop-up che propone
diverse elaborazioni dei dati ricevuti da quel dispositivo. [4]
1.3.2
Possibili Implementazioni
Dalla breve descrizione che abbiamo fornito di AutoTraf, appare chiaro come
esso sia in grado di fornire esaurienti informazioni sullo stato presente della rete
autostradale, ma non abbia la possibilità di fornire alcuna informazione di tipo
previsionale su ciò che più probabilmente è in procinto di accadere. Il nostro
compito è proprio quello di elaborare uno strumento che sia in grado di attingere
dalle stesse risorse di AutoTraf ma che possa fornire indicazioni di massima sulla
situazione del traffico nell’immediato futuro.
25
1.3. AUTOTRAF
Carlo Caligaris, Iacopo Salvarani
26
Capitolo 2
Strumenti Matematici
Figura 2.1: Atlanta traffic jams at the interstate connector in downtown [63]
27
2.1. L’OBIETTIVO
2.1
Carlo Caligaris, Iacopo Salvarani
L’Obiettivo
Come già illustrato nella sezione precedente l’obiettivo proposto è quello di studiare e cercare di prevedere, almeno nell’immediato futuro, il comportamento del
traffico veicolare in un momento qualsiasi e su un tratto autostradale.
Per raggiungere questo proposito occorre passare dallo studio del fenomeno
in sè allo studio di una sua modellizzazione. Occorre pertanto seguire i seguenti
punti.
• Trasformare in informazioni matematiche tutti i dati relativi all’autostrada,
quali la condizione del traffico (scorrevole, congestionato, rallentato, ecc.),
le caratteristiche della carreggiata (velocità massima delle corsie, capienza
massima di veicoli, ecc.), la quantità di veicoli in ingresso ed in uscita dalle
stazioni di pedaggio e molte altre.
• Scegliere un insieme di grandezze che, ad ogni istante di tempo t, descrivano in maniera esauriente lo stato in cui si trova il sistema. Esse prendono il
nome di variabili di stato del sistema:
– ρ(x, t) è la densità veicolare e definisce quanti veicoli stanno impegnando la carreggiata autostradale al tempo t ed in x;
– q(x, t) è il flusso veicolare e definisce quanti veicoli attraversano la
sezione in x, in un determinato intervallo di tempo t;
– v(x, t) è la velocità media e definsce la velocità media che i veicoli
mantengono al tempo t ed in x.
• Scegliere un insieme di grandezze dinamiche che ad ogni istante di tempo
t descrivano in maniera esauriente l’interazione fra l’esterno ed il sistema.
Esse prendono il nome di variabili di ingresso del sistema e sono:
– r(x, t) è il flusso di veicoli in ingresso e definisce quanti veicoli si
immettono, in un determinato intervallo di tempo, sulla carreggiata, al
tempo t ed in x;
28
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
– s(x, t) è il flusso di veicoli in uscita e definisce quanti veicoli fuoriescono, in un determinato intervallo di tempo, dalla carreggiata, al
tempo t ed in x.
• Scegliere un insieme di grandezze statiche che descrivano in maniera esauriente quelle che sono le caratteristiche fisiche della carreggiata autostradale. Esse prendono il nome di parametri fisici del sistema e sono:
– vmax (x) è la velocità massima e definisce la velocità che mediamente
possono tenere i veicoli, in x con condizioni di traffico scorrevole e
carreggiata libera;
– ρmax (x) è la densità massima (o densità di congestionamento) definisce, in x, il valore di densità di veicoli che comporta un congestionamento e quindi il relativo blocco del traffico;
– τ, ν e χ sono ulteriori parametri che definiscono altre proprietà della
carreggiata ed il cui significato fisico verrà illustrato successivamente.
• Definire in quale maniera gli elementi del fenomeno reale interagiscono
e dipendono fra di loro. Gli stessi comportamenti dovrebbero essere descritti anche dal modello matematico. Le interazioni e le dipendenze fra
tutte le grandezze in gioco dovranno trasformarsi in equazioni e funzioni
matematiche che agiranno sulle variabili di stato del modello.
29
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
2.2
Carlo Caligaris, Iacopo Salvarani
Introduzione ai Modelli di Traffico
La realtà è multidimensionale. Questa ovvia affermazione è, in sostanza, il motivo
dell’interesse a sviluppare modelli matematici basati su equazioni a derivate parziali. Spesso, anche un modello che utilizza equazioni differenziali ordinarie è il
risultato della semplificazione di un modello originariamente formulato in più variabili. Nella riduzione del modello si utilizzano solitamente ipotesi che, talvolta,
permettono un’utile semplificazione; tuttavia, questa non può essere la situazione
generale.
Per determinati obiettivi la forma particolare di un corpo, la sua composizione
eterogenea e la presenza di stati transitori non possono essere trascurati senza che
il modello perda di utilità. Di conseguenza si ha un aumento nel numero delle dimensioni spaziali e/o l’introduzione di una variabile temporale. Il modello cresce
in complessità, ma, in corrispondenza (almeno questa è la speranza), aumenta la
sua capacità di rappresentare un fenomeno reale.
Tuttavia, la potenzialità informativa di un modello matematico dipende, in
maniera essenziale, dalla sua risolubilità.
2.2.1
L’Utilità dei Modelli di Traffico
Il crescente numero di veicoli che ogni giorno circola sull’intera rete autostradale
italiana comporta inevitabilmente la generazione di ingorghi e rallentamenti che,
oltre a creare un notevole disagio agli automobilisti, aumenta il rischio di incidenti. Esistono due possibili soluzioni, diametralmente opposte, a questo annoso
problema.
La prima prevede di aumentare la capacità delle arterie stradali con l’aggiunta
di nuove corsie. Tale approccio, seppur molto efficace, risulta essere molto costoso e di forte impatto ambientale, in quanto richiede sovente la costruzione di
nuovi ponti, gallerie e altre infrastrutture. Inoltre, nella maggior parte dei casi, la
capacità di sopportazione del traffico da parte di strade ed autostrade risulta essere
insufficiente solo in alcune particolari fasce orarie della giornata (fasce di punta).
Per tale ragione si è cercata una soluzione alternativa che consiste nello sfrut30
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
tare la massimo le potenzialità delle attuali infrastrutture andando a monitorare
continuamente le condizioni del traffico e, attraverso azioni preventive, tentare di
evitare la creazione di ingorghi.
La modellizzazione di strade urbane ed extraurbane ha attirato l’attenzione di
molti studiosi del settore già a partire dalla seconda metà degli anni ’50. Negli
ultimi anni, poi, si è notato un notevole aumento dell’interesse e del lavoro di
ricerca dedicato alla risoluzione dei problemi legati al traffico stradale ed autostradale, proprio a causa della sopracitata crescita del numero di veicoli circolanti
ed ai sempre più frequenti problemi di sovraccarico della rete stradale.
Gli sforzi degli esperti del settore hanno condotto alla creazione di modelli
matematici che potessero riprodurre fedelmente la realtà. In tal maniera è stato
possibile ottenere strumenti informatici i quali permettono principalmente due tipi
di analisi.
Una di queste è quella simulativa e consiste nell’osservare come il modello
si comporta se sollecitato da particolari condizioni esterne, senza che queste debbano per forza verificarsi nella realtà. Infatti, potrebbe sicuramente interessare al
gestore di una tratta stradale sapere cosa accadrebbe se, per un qualsiasi motivo
che esula dalla quotidianità, la tratta in questione fosse temporaneamente sottoposta a condizioni ben diverse da quelle di regime (per esempio un drastico aumento
dei veicoli dovuto ad una eventualità particolare o una diminuzione del numero di
corsie percorribili).
La seconda analisi è di tipo previsionale, e consiste nel monitorare, istante
per istante (quindi on-line e real-time), le condizioni del traffico veicolare e da
queste trarre importanti indicazioni sulla possibile evoluzione, nel breve futuro,
del comportamento del sistema reale. Questo chiaramente permette di anticipare
l’accadimento di fenomeni critici quali ingorghi o rallentamenti, eventualmente
prevenirli, oppure, qualora non sia comunque possibile restare in una situazione
di traffico scorrevole, attrezzarsi per affrontare nella maniera migliore la criticità.
In generale, fin dall’inizio, gli studiosi hanno seguito due vie distinte nella
creazione di modelli matematici: modelli microscopici e macroscopici. Negli ultimi anni, inoltre, si sta affermando una terza famiglia di modelli, detti mesoscopici,
31
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
i quali si pongono come una via di mezzo tra i due sopra citati.
2.2.2
Modelli Microscopici
I modelli di simulazione del traffico basati sull’approccio microscopico permettono di determinare la posizione, la velocità e l’accelerazione dei singoli veicoli
o di un gruppo di essi. La simulazione di tali sistemi viene fatta considerando il
comportamento che ogni singolo veicolo viene a tenere in relazione ai veicoli con
i quali condivide il tratto stradale.
L’idea è che, per ogni veicolo, la posizione a tempo t + ∆t dipende dalla posizione e dalla velocità che caratterizzavano quel veicolo al tempo t; la velocità
al tempo t invece è definita da una serie di grandezze relative al veicolo in questione ed a quello immediatamente davanti, quali la distanza, la velocità relativa,
il tempo di reazione dell’autista, la presenza di altri veicoli nelle corsie adiacenti
e quanto altro può rendere più simile il comportamento del modello a quello di un
automobilista reale.
I modelli di simulazione microscopici vengono applicati a reti di traffico urbano ed extraurbano e sono caratterizzati da due principali elementi di modellistica
che stanno a rappresentare il comportamento reale dei veicoli:
• car following;
• lane change con gap acceptance.
Car Following
La dinamica di car following, detta anche follow the leader, si basa sul fatto che
ogni veicolo deve mantenere una distanza di sicurezza dal veicolo che gli sta immediatamente davanti e la misura di tale distanza è funzione della velocità relativa
fra i due veicoli (come peraltro indicano e il Codice Stradale e il buon senso).
In linea del tutto generale, i modelli microscopici assumono la forma riportata
nella (2.1):

v(t + ∆t) = f g(t), v(t), ṽ(t), ξ(t), p
x(t + ∆t) = x(t) + v(t) · ∆t
32
(2.1)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
dove
g(t) = x̃(t) − x(t) − s
è la distanza effettiva fra il veicolo ed il suo predecessore (con s lunghezza del
veicolo).
• v(t) e x(t) sono rispettivamente velocità e posizione al tempo t del veicolo
in esame;
• ṽ(t) e x̃(t) rappresentano la velocità e la posizione del veicolo che precede
quello in esame, ∆t è il tempo di campionamento;
• ξ(t) è una componente di rumore che può essere introdotta per modellizzare
il fatto che ogni autista, essendo un individuo dotato di un suo modo di agire,
si comporterà in maniera non uguale a parità di condizioni;
• p è un vettore di eventuali parametri presenti nel modello.
Figura 2.2: Schematizzazione del modello car following
I primi modelli microscopici sono attribuiti a Reuschel e Pipes ([38], [37]). Essi
descrivono il fenomeno del moto di una coppia di veicoli uno seguente l’altro
tramite l’espressione:
xn − xn+1 = L + Sẋn+1
(2.2)
dove xn+1 è la posizione del veicolo considerato e xn la posizione del veicolo che
sta davanti.
33
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
Figura 2.3: Il modello di Reuschel e Pipes
In questa formula si suppone che ogni automobilista mantenga una distanza
di sicurezza proporzionale alla velocità del proprio veicolo più una distanza L
relativa al caso in cui le auto sono ferme ed idealmente attaccate (ẋn+1 = ẋn = 0)
e che in pratica comprende la lunghezza dell’auto davanti.
Passando alle derivate, dall’equazione (2.2) otteniamo:
ẍn+1 =
1
(ẋn − ẋn+1 )
S
(2.3)
(proposta per la prima volta dall’americano Chandler in [7]) che dal punto di vista
fisico significa che l’accelerazione o decelerazione di un veicolo è proporzionale
alla sua velocità relativa rispetto al veicolo che lo precede. Se definiamo fattore
1
di sensibilità λ = ed introduciamo un ritardo temporale τ di risposta alla solS
lecitazione (nessun essere umano può reagire in tempo nullo ad alcuno stimolo),
otteniamo dalla (2.3):
ẍn+1 (t + τ) = λ[ẋn (t) − ẋn+1 (t)]
(2.4)
che è generalmente nota come l’equazione di base dei modelli car following.
Si possono ottenere risultati più accurati se il fattore di sensibilità λ viene
espresso con la formula
λ = λ0
ẋn+1 (t + τ)m
[xn (t) − xn+1 (t)]l
34
(2.5)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
dove λ0 è una costante e l e m sono esponenti interi.
Vari modelli car following non lineari sono caratterizzati da coppie di valori specifici (l, m). Per esempio, il modello lineare (2.4) è caratterizzato da (0, 0).
Nel 1958 Chandler e altri ricercatori provarono la correttezza e consistenza del
modello proposto da Reuschel e Pipes con i dati forniti dal General Motors Technical Center. Questi mostrarono, per via sperimentale, che per condizioni tipiche
di traffico autostradale, τ era approssimativamente 1, 5 s e λ assumeva valore pari
0.37 s−1 .
Quello presentato da Pipes sembra il modello migliore tra quelli presentati
nella classe dei microscopici. È stato mostrato come, con questo modello, sia
possibile simulare il comportamento dei flussi veicolari in un transitorio.
Lane Change e Gap Acceptance
Come appare chiaro, nel voler modellare tratti stradali che rappresentino adeguatamente grosse arterie, sarà sicuramente necessario considerare la possibilità di
effettuare dei cambi di corsia e sorpassare veicoli che si muovono a velocità inferiore; lo stesso dicasi per quei casi in cui una tratta principale presenta, lungo
il suo snodarsi, corsie di ingresso e di uscita che logicamente vengono impegnate
dagli automobilisti con cambi di corsia e di velocità.
Per rispondere a questa esigenza i modelli car following sono stati migliorati
aggiungendo un’importante componente modellistica.
Gipps è stato il primo a presentare la formulazione di un modello che tenesse
conto anche di cambi di corsia (lane change), in [17], non vincolando la possibilità di superare il veicolo che precede. Questo modello viene sviluppato ed implementato con MITSIM, che è appunto un simulatore microscopico, dove i guidatori
possono decidere, se sono rallentati dal veicolo che li precede, di operare un cambio di corsia. Il cambio di corsia viene effettuato tenendo in considerazione la
corsia attuale, quella prescelta, l’eventualità di veicoli in arrivo già presenti sulla
corsia futura, la velocità e la distanza di tali veicoli e la propensione al rischio
dell’autista che sta decidendo se effettuare o meno il cambio di corsia.
In pratica, è necessario definire una funzione di gap acceptance, con cui si
35
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
riescono a descrivere le situazioni di sorpasso e tutti i tipi di intersezioni non regolate da semafori, ove siano identificabili una strada principale ed una secondaria.
Il gap, definito come la distanza della macchina che arriva dalla strada principale
rispetto al veicolo che si trova nella strada secondaria, varia a seconda dell’automobilista: dipende da quanto un guidatore è disposto a rischiare piuttosto che
rimanere fermo all’incrocio.
Figura 2.4: Manovra di Lane Change
Pertanto, viene modellata una funzione di rischio che dipende dalla velocità
dei veicoli che sopraggiungono, da quanto sono distanti e dal fattore di rischio che
caratterizza il conducente.
I campi di maggiore applicazione dei modelli di simulazione microscopici riguardano il test di tecniche adattative di controllo, di strategie real-time per le
autovetture, di priorità tra gli autobus e comunque sono di maggiore interesse in
ambito di applicazioni a traffico urbano. Questi simulatori sono inoltre utilizzati
per prevedere le emissioni inquinanti agli incroci stradali provvisti di segnaletica
semaforica e per testare l’efficienza dei sistemi di prevenzione per i rischi di incidenti nei flussi veicolari. Partendo dal car following ed integrandolo prima con
il lane change e poi con il gap acceptance si riesce a descrivere esaustivamente
anche il problema del traffico autostradale.
Nelle figure 2.5, 2.6, 2.7, 2.8 possiamo osservare un simulatore a modello
microscopico creato per studiare la risposta a determinate condizioni di flussi veicolari per alcuni tratti tipici comuni a tutte le autostrade (da [42]). Si può notare
l’interazione fra veicoli following e veicoli leader, la cui distanza di sicurezza è
36
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
effettivamente proporzionata alla velocità di crociera, cosı̀ come l’ingresso dalla
corsia di accelerazione sull’arteria principale.
È significativo il verificarsi dei fenomeni tipici del traffico, quali code, stop
and go, e propagazione di onde di velocità.
Figura 2.5: Simulatore Modello Microscopico [42]
Figura 2.6: Simulatore Modello Microscopico [42]
37
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
Figura 2.7: Simulatore Modello Microscopico [42]
Figura 2.8: Simulatore Modello Microscopico [42]
A fronte di una cosı̀ elevata capacità di rappresentare la realtà, i modelli microscopici richiedono una elevata mole di dati. Infatti, come è possibile notare
dalla (2.1), si suppone di conoscere in ogni istante la posizione e la velocità di
ogni veicolo. Oltre alla indiscutibile difficoltà computazionale -si hanno 2 × n
(con n numero dei veicoli mediamente presenti nella simulazione) variabili di
stato da aggiornare per ogni istante- è spesso troppo difficile riuscire a trasporre
in informazione matematica adattabile al modello la caratteristiche fisiche della
tratta stradale e quelle psico-attitudinali degli automobilisti.
È impensabile gestire un modello di questo genere per un’applicazione realtime. Ecco il motivo per cui l’uso dei modelli microscopici è limitato ai casi in
38
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
cui la rete stradale risulti relativamente semplice ed il numero di veicoli molto
ristretto.
2.2.3
Modelli Macroscopici
I modelli macroscopici si basano su una relazione empirica determinata osservando un sistema di traffico in condizioni stazionarie. La maggior parte dei modelli
matematici strutturati in maniera macroscopica partono dalla formulazione del
modello di traffico microscopico, prima analizzato, prendendo in considerazione
un flusso di veicoli tutti con la stessa rilevanza; in particolare, si prestano alla simulazione di corridoi di traffico veicolare ed arterie autostradali. Di conseguenza,
non essendo modellabili accelerazioni e decelerazioni di velocità, e non essendo
previste intersezioni nel flusso del traffico, questo tipo di modelli non si adatta ad
una applicazione in ambito urbano.
Fondamentalmente il modello macroscopico si è sviluppato seguendo un’analogia tra lo stato stazionario di comportamento del traffico e la legge di conservazione propria della teoria della fluidodinamica.
Infatti, il traffico può essere modellizzato come un fluido omogeneo, senza
porre alcuna distinzione tra le classi di veicoli. A differenza delle molecole dei
fluidi reali i singoli veicoli saranno interessati da una particolare caratteristica
origine-destinazione diversa per ognuno di questi; questa è un’informazione che
sarà persa. Nei modelli macroscopici, infatti, non si presta attenzione nel modellare il comportamento del singolo veicolo con posizione e velocità; si pensa invece
di descrivere l’intero sistema considerando file di veicoli come flussi di un fluido
incomprimibile e, di conseguenza, la posizione e la velocità del singolo veicolo
vengono espresse in relazione a quella degli altri veicoli.
Pertanto, un modello macroscopico del flusso veicolare implica la definizione di adeguate variabili di sistema che esprimano il comportamento mediamente
tenuto in un preciso punto della tratta stradale ad un istante di tempo.
Definizione 2.1
39
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
Definiamo la densità del traffico
ρ(x, t)
[veicoli/km]
come il numero di veicoli presenti mediamente per unità di lunghezza. Si misura
in veicoli per chilometro.
Definizione 2.2
Definiamo la velocità media dei veicoli
v(x, t)
[km/h]
Si misura in chilometri orari.
Definizione 2.3
Definiamo il flusso del traffico
q(x, t)
[veicoli/h]
come il numero di veicoli passanti da una specifica sezione della tratta stradale
nell’unità di tempo. Si misura in veicoli per ora.
Per un flusso di traffico omogeneo, si può mostrare, sulla base di considerazioni microscopiche, che le tre grandezze che abbiamo pocanzi definito sono legate
fra loro dalla relazione
q=ρ·v
(2.6)
analoga alla relazione presente in fluidodinamica. Inoltre, l’equazione (2.6) descrive approssimativamente il flusso di traffico anche in condizioni in cui l’omogeneità non è verificata, e pertanto è un’equazione presente nella maggior parte
dei sistemi macroscopici.
Vi è un’altra relazione che lega le variabili di stato definite, ma, a differenza
della precedente, non ha una analogia con la fluidodinamica, essendo propria dei
flussi di traffico. La velocità media del traffico decresce monotonamente al crescere della densità dei veicoli, come è stato anche dimostrato da parecchi rilevamenti
di misure di velocità-densità.
40
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Nel 1935 Greenshields ([19]) ipotizzò l’esistenza di una relazione lineare tra
velocità e densità del tipo
v(x, t) = vf 1 −
ρ(x, t) ρmax
(2.7)
dove vf è la velocità a corsia completamente libera (ovvero per densità di veicoli
nulla o molto prossima a zero) e ρmax è la densità di congestionamento, ossia il
valore di densità dei veicoli che causa un calo della velocità tale da farla andare a
zero e bloccare il movimento dei veicoli, come si può vedere in Figura 2.9.
Figura 2.9: Relazione Lineare Velocità-Densità
È molto interessante constatare che la relazione macroscopica (2.7) è la diretta
conseguenza del modello microscopico lineare (2.4) per (l = 2, m = 0).
Assumiamo di trovarci in condizioni di omogeneità e di regime stazionario
(τ = 0) ed introduciamo la distanza media fra i veicoli s.
s , xn − xn+1
Si ha che:
s=
1
ρ
e che:
L ,
1
ρmax
41
.
(2.8)
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
L’integrazione dell’equazione (2.4) rende:
v=−
λ0
+ b = −λ0 ρ + b
s
(2.9)
dove b è una costante di integrazione. Se assumiamo che, per ρ = ρmax , la
velocità media precipiti a zero, otteniamo:
b = λ0 ρmax .
Ponendo vf = λ0 /ρmax , l’equazione (2.9) diviene identica alla (2.7). Per differenti valori di (l, m) otteniamo diverse formule per la curva caratteristica velocitàdensità a regime stazionario. Chiaramente, una volta che si stabilisce di utilizzare
un modello macroscopico, il miglior approccio sarebbe quello di determinare la
curva caratteristica empiricamente con un set di misurazioni.
Una volta che la curva caratteristica velocità-densità è determinata, possiamo
usare l’equazione (2.6) per determinare la curva flusso-densità. Per esempio nel
caso della formulazione lineare (2.7) otteniamo:
ρ(x, t) q(x, t) = ρ(x, t) · v(x, t) = vf · ρ(x, t) 1 −
ρmax
(2.10)
il cui grafico è mostrato in Figura 2.10. È facile notare come il flusso veicolare
sia crescente con la densità fino a qmax che è raggiunto per un valore critico di
densità ρcr .
Un’ulteriore crescita del valore della densità dei veicoli comporta un calo del
flusso di traffico fino al raggiungimento di ρmax , che causa il congestionamento
dell’arteria e, pertanto, il flusso veicolare nullo.
Questo fenomeno, chiamato capacity drop, è comune a tutti i sistemi di veicolazione del traffico, ed è dovuto alle considerazioni sulla distanza di sicurezza fra
i veicoli dipendente dalla velocità dei veicoli stessi.
42
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Figura 2.10: Curva Caratteristica a Regime Stazionario Flusso-Densità
In questo caso, trovare ρcr è molto semplice: nota la funzione q(ρ) (2.10)
basta porre q 0 (ρ) = 0, da cui:
q 0 (ρ) = vf (1 −
2ρ
) = 0.
ρmax
ρmax
.
2
Tale proprietà risulta dal fatto che la regolazione della distanza di sicurezza è
In questo caso, si ha: ρcr =
effettuata dagli autisti delle vetture. Misurazioni sperimentali estensive mostrano
che autisti umani agenti come regolatori di distanza di sicurezza conducono a un
flusso veicolare instabile quando la densità supera il valore critico (ρ > ρcr ). Per
instabile si intende che, il flusso di traffico diventa, rapidamente ed, apparentemente, senza un’ovvia ragione, sempre più congestionato, fino a quando vengono
raggiunti i valori di densità prossimi a quello di congestionamento ρmax .
La zona intermedia è quella interessata dal fenomeno di stop and go. Infatti,
in termini microscopici, l’instabilità è dovuta ad un aumento dell’ampiezza della
perturbazione che viene propagata all’indietro (fenomeno delle shock waves o
back waves) lungo una fila di vetture, portando infine all’arresto delle vetture più
arretrate.
[31]
43
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
2.2.4
Carlo Caligaris, Iacopo Salvarani
Modelli Mesoscopici
Questa classe di modelli di simulazione sta guadagnando popolarità e si pone a
metà tra i modelli precedentemente illustrati, unendo l’approccio aggregato dei
modelli macroscopici con quello particolare e riferito al singolo elemento dei
modelli microscopici.
Tipicamente, i modelli microscopici descrivono le singole entità ad un elevato
livello di dettaglio, ma il loro comportamento e le loro interazioni sono gestite ad
un livello più generale.
Questi modelli possono assumere varie forme. Ad esempio, è possibile raggruppare i veicoli in piccoli insiemi in moto lungo la rete ([25]). Questi insiemi
agiscono come se fossero un elemento unico e la loro velocità lungo un percorso è ottenuta da una funzione velocità-densità definita per ciascun tratto stradale.
I cambiamenti di corsia e le accelerazioni o decelerazione dei veicoli non sono
modellate.
Una caratteristica importante del modello mesoscopico è che la velocità dei
veicoli non è determinata dalle decisioni del singolo guidatore, ma dal comportamento di gruppi di veicoli ([1]). In altri modelli ([21]), ([16]), ([27]) si utilizza
un sistema a coda dove la strada è vista come un insieme di zone di coda e di
zone in movimento. Le corsie possono essere descritte individualmente, sebbene
generalmente non lo siano.
In questi casi, i veicoli sono rappresentati individualmente e ciascuno è caratterizzato dalla propria velocità; tuttavia, il comportamento non è modellato nel
dettaglio. La parte in movimento viene percorsa con una velocità ricavata utilizzando una relazione velocità-densità di tipo macroscopico mentre la parte in coda
è gestita con un sistema coda-server.
Questo ultimo approccio combina i vantaggi dei modelli dinamici con flussi
di traffico disaggregati (i veicoli sono modellati singolarmente) con la facilità di
utilizzo delle relazioni macroscopiche velocità-densità. Incroci controllati da segnali come i semafori possono essere modellati rimpiazzando il server con un un
gate che apra e chiuda in accordo con gli stati del segnale.
Un altro tipo di modello mesoscopico utilizza una visione cellulare della stra44
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
da, che è discretizzata in celle unitarie che possono essere vuote o riempite da un
veicolo. Il veicolo in esame segue un insieme di regole di comportamento piuttosto semplici ([29]) che determinano, ad ogni istante di tempo, il numero di celle
attraversate dal veicolo ([2]).
Le principali aree di applicazione dei modelli mesoscopici sono quelle in cui
il dettaglio della simulazione microscopica, sebbene potrebbe risultare utile, non
è applicabile a causa delle grandi dimensioni della rete o della mancanza di alcune
risorse che sono necessarie per implementare uno strumento simulativo basato su
tale principio. [5]
2.2.5
Trattazione Analitica
Ora che abbiamo individuato le caratteristiche dei modelli macroscopici descriviamo il problema del traffico in maniera analitica, per cogliere a pieno il passaggio
della trattazione dalle singole vetture ad una descrizione globale del comportamento.
Ipotizziamo un tratto autostradale rettilineo monocorsia senza stazioni di entrata ed uscita. Il tratto in questione può essere suddiviso in ipotetiche sezioni.
Figura 2.11: Divisione in sezioni di un ipotetico tratto stradale
q(t1 , t2 , x) rappresenta il valore medio del flusso veicolare nella sezione stradale x e nell’intervallo di tempo [t1 , t2 ] e vale:
q(t1 , t2 , x) =
n(t1 , t2 , x)
t2 − t1
in cui n(t1 , t2 , x) indica il numero di veicoli che transitano nella sezione stradale
x e nell’intervallo di tempo [t1 , t2 ].
45
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
Abbiamo già introdotto i concetti di flusso, densità e velocità media. Li riproponiamo in questo contesto utilizzando una definizione un poco più precisa.
q(x, t) è il flusso istantaneo nella sezione stradale x; può essere misurato tramite
particolari sistemi di monitoraggio posti sulla sezione stradale, ed è definito come:
q(x, t) = lim q t − ∆t, t + ∆t, x .
∆t→0
ρ(x1 , x2 , t) è invece la densità media di veicoli fra la tratta x1 e la tratta x2 al
tempo t. Può essere misurata tramite osservazione diretta ed è definita come:
ρ(x1 , x2 , t) =
n(x1 , x2 , t)
x2 − x1
dove, in questo caso, n(x1 , x2 , t) indica il numero di veicoli presenti fra la sezione
x1 e la sezione x2 al tempo t.
Come fatto in precedenza, è possibile ottenere un’espressione della densità
locale nella sezione generica x al tempo t
ρ(x, t) = lim ρ x − ∆x, x + ∆x, t .
∆x→0
È importante ora determinare il legame tra le variabili fino ad ora introdotte; ci
viene quindi in aiuto la relazione fondamentale che si basa sull’equazione di conservazione della massa, con la quale si impone che le variazioni nell’intervallo
(t1 , t2 ) del numero di veicoli tra la sezione x1 e la sezione x2 deve essere uguale
alla differenza tra il numero di veicoli in ingresso alla sezione x1 e quelli in uscita
dalla x2 , considerando lo stesso intervallo temporale. Il legame cercato è definito
dalla seguente espressione:
Z x2
Z t2
ρ(t2 , x) − ρ(t1 , x) dx =
q(x1 , t) − q(x2 , t) dt.
x1
(2.11)
t1
Molti studiosi e ricercatori nel settore dei modelli di traffico hanno fornito
un’equazione che potesse rappresentare nella maniera più adeguata possibile le
dinamiche di relazione fra la densità dei veicoli e la loro velocità media. In Tabella
2.1 sono riportati i vari risultati che la letteratura offre. È possibile definire la
dipendenza di v da ρ in diversi, ragionevoli e più o meno efficaci modi.
46
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Come si vede dalla tabella 2.1 in ognuna delle forme proposte la velocità
decresce in maniera monotona al crescere di ρ.
Un esame più attento conduce ben presto a concludere che, quella introdotta
da Papageorgiou in [33] è senz’altro più flessibile e meglio adattabile a diverse
situazioni.
Infatti, la forma di Greenshields si ottiene per l = m = 1; quella di Drew
per l = 1 e m = λ. Per le altre tre, dopo qualche considerazione elementare,
possiamo accorgerci che, fondamentalmente, si riconducono alle prime due.
Infatti, poichè
ρmax
log
= = − log
ρ
ρ
ρmax
−1 +1 = =
1−
ρ
ρmax
+ ρω(ρ)
(2.12)
la forma di Greenberg è del tipo della forma di Greenshields per valori piccoli di
ρ
mentre, se teniamo conto che,
ρmax
ρ
ρ
e− ρmax = 1 −
ρmax
+ ρω(ρ)
(2.13)
vediamo che lo stesso si può dire della formula di Underwood.
La formula di May, infine, è un pò più flessibile, ma comunque si riduce a:
α
ρ
α( ρ ρ )
e max = 1 −
+ ρω(ρ)
(2.14)
ρmax
e quindi è molto simile a quella di Drew.
47
2.2. INTRODUZIONE AI MODELLI DI TRAFFICO
Carlo Caligaris, Iacopo Salvarani
Greenshields (1935)
v = vf 1 −
ρ
ρmax
[19]
Greenberg (1959)
v = vf ln
ρ
ρmax
[18]
Underwood (1961)
“
−ρ
v = vf e
ρ
max
”
[43]
Drew (1968)
v = vf 1 −
λ
ρ
ρmax
[14]
May (1988)
“
α −ρ
v = vf e
ρ
max
”
[28]
"
Papageorgiou (1995)
v = vf
1−
ρ
l # m
ρmax
[33]
Tabella 2.1: L’evoluzione della relazione tra velocità e densità
[6]
48
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
2.3
CAPITOLO 2. STRUMENTI MATEMATICI
Il Modello Macroscopico di Traffico Autostradale
Vogliamo qui descrivere brevemente le basi del modello macroscopico di traffico
autostradale e delle approssimazioni alle differenze finite che sono a loro volta
ispiratrici del modello discreto di Papageorgiou che abbiamo deciso di implementare.
La teoria poggia sulle semplici considerazioni che servono per giustificare
l’equazione di continuità dei fluidi.
Cominciamo con il vedere come si può giustificare tale equazione. Consideriamo una massa fluida che si muove lungo l’asse x nel tempo t. In analogia con
la Sezione precedente, assumiamo:
• x la coordinata relativa all’asse su cui avviene il movimento;
• t la variabile di tempo;
• ρ(x, t) la densità della sostanza che intendiamo studiare;
• q(x, t) il flusso attraverso x al tempo t.
Ricordiamo anche le dimensioni di ρ, che sono:
unità di massa
,
unità di lunghezza
e quindi la massa compresa tra x e x + ∆x può essere calcolata mediante la:
Z x+∆x
m(t, x, x + ∆x) =
ρ(t, s)ds.
x
Il flusso q(x, t) attraverso la sezione in x al tempo t è la quantità di massa che
transita per il punto x nell’istante t.
Le dimensioni di q sono:
unità di massa
.
unità di tempo
49
2.3. IL MODELLO MACROSCOPICO DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
Consideriamo un intervallo di lunghezza I = [x, x + ∆x] ed un intervallo di
tempo T = [t, t + ∆t].
Sia
µ(t, x)
la massa che è fluita attraverso il punto x fino all’istante t; il flusso istantaneo puo’
essere definito mediante la:
∂µ
µ(t, x) − µ(t + ∆t, x)
= − (t, x),
∆t→0
∆t
∂t
q(t, x) = lim
per cui:
q(t, x) − q(t, x + ∆x)
1 ∂
=−
(µ(t, x) − µ(t, x + ∆x)) =
∆x
∆x ∂t
Z
1 ∂ x+∆x
ρ(t, s)ds. (2.15)
=
∆x ∂t x
Scambiando derivata ed integrale si ha:
q(t, x) − q(t, x + ∆x)
1
=
∆x
∆x
Z x+∆x x
∂
ρ(t, s) ds.
∂t
Passando al limite per ∆x → 0 si ottiene l’equazione 2.16.
∂ρ(x, t)
∂q(x, t)
=−
.
∂t
∂x
(2.16)
Possiamo anche tenere conto di apporto o sottrazione di massa mediante un
termine k(x, t) a secondo membro:
∂ρ(x, t)
∂q(x, t)
=−
+ k(x, t).
∂t
∂x
(2.17)
Tuttavia, fino a questo punto, l’equazione 2.17 contiene troppe incognite (ρ e
q) e quindi occorre introdurre qualche ulteriore condizione.
A tale scopo occorre ipotizzare una dipendenza tra ρ e q. Ad esempio possiamo supporre che:
q = q(ρ),
cosı̀ che:
∂q
=
∂x
dq
dρ
50
∂ρ
∂x
.
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
L’equazione 2.17 diventa allora:
∂q(ρ(x, t))
∂ρ(x, t)
∂ρ(x, t)
=−
+ k(x, t).
∂t
∂ρ
∂x
(2.18)
Per definire la dipendenza q(ρ) possiamo supporre, che:
q(ρ) = v(x, t)ρ.
Consideriamo quindi l’ipotesi di advezione; v(x, t) ha dimensione:
unità di lunghezza
unità di tempo
cioè ha le dimensioni di una velocità che rappresenta la velocità con cui la materia
si muove lungo l’asse x; infatti:
v=
q
unità di massa unità di lunghezza
=
.
ρ
unità di tempo unità di massa
Il caso più semplice si incontra quando v(x, t) = c.
L’equazione, quindi, prende la forma:
∂(ρ(x, t)v(x, t))
∂ρ(x, t))
=−
+ k(x, t).
∂t
∂x
2.3.1
(2.19)
Un esempio di trasporto nel caso della velocità costante
Consideriamo il caso in cui la velocità con cui avviene il moto del fluido sia costante. Si tratta di un caso particolarmente semplice ma permette di mettere in
luce alcune interessanti caratteristiche del fenomeno di trasporto
Supporremo anche che ci sia una diminuzione della densità proporzionale alla
densità stessa.
Fisicamente possiamo trovare un significato pratico a questa equazione considerando l’evoluzione di un inquinante organico in un fiume che scorre a velocità
c ed è metabolizzato proporzionalmente alla densità stessa.
L’equazione quindi è:
∂
∂
ρ(x, t) = −c ρ(x, t) − µρ(x, t).
∂t
∂x
51
(2.20)
2.3. IL MODELLO MACROSCOPICO DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
Riscriviamo la 2.20 nella forma:
∂
∂
ρ(x, t) + c ρ(x, t) = −µρ(x, t).
∂t
∂x
Il primo membro è la derivata rispetto a t della funzione
R(x, t) = ρ(x + ct, t)
e quindi
d
d
R(x, t) = ρ(x + ct, t) =
dt
dt
∂
∂
= ρ(x + ct, t) + c ρ(x + ct, t) =
∂t
∂x
= −µρ(x + ct, t) = −µR(x, t).
Integrando rispetto a t l’equazione differenziale lineare che ne risulta si ottiene:
ρ(x + ct, t) = h(x)e−µt .
Imponendo le condizioni iniziali ρ(x, 0) = ρ0 (x) (è nota la densità iniziale in
ogni luogo del fiume) si ha:
ρ0 (x) = ρ(x, 0) = h(x),
da cui:
ρ(x + ct, t) = ρ0 (x)e−µt
e:
ρ(x, t) = ρ0 (x − ct)e−µt .
Consideriamo ora la situazione in cui si verifichi, in una locazione x = 0, che
possiamo supporre coincidente con l’origine, una immissione di inquinante con
flusso costante γ.
Allo scopo, posto:

0
γ(t) =
γ
t<0
0
52
t≥0
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
possiamo imporre nella 2.3.1 che:
γ(t) = ρ(0, t) = ρ0 (−ct)e−µt .
x
Da cui, posto x = −ct si ricava t = − e quindi:
c
x
x
γ(− ) = ρ0 (x)eµx/c , ρ0 (x) = γ(− )e−µx/c .
c
c
Se ne conclude:
ρ(x, t) = ρ0 (x − ct)e−µt = γ(
ct − x −µ(x−ct)/c −µt
)e
e .
c
Ed infine:
x
ρ(x, t) = γ(t − )e−µx/c .
c
In questa espressione, possiamo osservare che si evidenzia il fatto che, per
x
t − < 0, cioè per x > ct, l’inquinante ha densità ρ nulla. (L’inquinante, in quel
c
momento non ha ancora raggiunto quel punto del fiume).
2.4
Modelli Differenziali di Traffico Autostradale
Veniamo ora a considerare il caso del traffico lungo un’autostrada utilizzando un
modello di trasporto in cui il flusso dipende dalla densità delle auto.
Denotiamo con x la variabile di spazio che identifica un punto sulla retta che
descrive l’autostrada e con t, come al solito, il tempo; ρ(x, t) è la densità delle
auto mentre indichiamo ancora con q(x, t) il flusso.
L’equazione che usiamo è di tipo advettivo, di trasporto e, per semplificare la
trattazione, che ha lo scopo di mettere in evidenza le caratteristiche elementari del
modello, non prevediamo che nel tratto in esame esistano ingressi od uscite.
Occorre anche ipotizzare il comportamento del flusso q rispetto alla densità ρ
delle auto.
A tale scopo possiamo fare riferimento alla più semplice, dal punto di vista algebrico, delle dipendenze che nell’arco dell’evoluzione del modello macroscopico
sono state proposte da vari autori: quello di Greenshields del 1935 ([19]).
Se ρm è la massima densità possibile, supponiamo che:
53
2.4. MODELLI DIFFERENZIALI DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
1. la velocità delle auto sia compresa tra 0 e vm , quest’ultimo valore essendo
conseguenza dei limiti di velocità o delle condizioni stradali;
2. la velocità delle auto dipenda dalla densità mediante la:
ρ
.
v(ρ) = vm 1 −
ρm
(2.21)
Dalla 2.21 si ricava:
• se ρ = 0 allora v = vm ;
• se ρ = ρm allora v = 0.
Tenuto conto che:
q(ρ) = v(ρ)ρ = vm
ρ2
ρ−
ρm
,
da cui:
d
2ρ
q(ρ) = vm 1 −
q (ρ) =
,
dρ
ρm
0
l’equazione che regola lo scorrere del traffico autostradale potrà essere scritta
nella forma:
∂ρ(x, t)
2ρ(x, t) ∂ρ(x, t)
= −vm 1 −
∂t
ρm
∂x
(2.22)
o, più brevemente,
ρt = −vm
2ρ
1−
ρm
ρx = −q0 (ρ)ρx .
(2.23)
Possiamo studiare la soluzione dell’equazione individuandone le curve di livello; possiamo cercare cioè di trovare le curve descritte dalle equazioni (x(t), t)
sulle quali risulta:
ρ(x(t), t) = costante = ρ0 .
Se:
ρ(x(t), t) = costante = ρ0
54
(2.24)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
avremo che:
q0 (ρ) = q0 (ρ0 ) = q00
è esso pure costante.
Pertanto, possiamo riscrivere la 2.23 come segue:
ρt = −q00 ρx .
(2.25)
D’altro canto, derivando la 2.24, si ha:
ρt + ẋ(t)ρx = 0.
(2.26)
Da 2.26 e 2.25 possiamo dedurre che:
ẋ(t) = q0o
da cui, ricordiamo che: q00 = q0 (ρ0 )
x(t) = q00 t + x0 .
Le curve di livello (x(t), t) della soluzione ρ(x, t) sono rette di equazione
x = q00 t + x0 .
Se ρ(x, 0) = ρ0 (x) si ha:
ρ(q00 t + x0 , t) = ρ(x0 , 0) = ρ0 (x0 )
(2.27)
E se supponiamo nota la densità iniziale ρ0 (x):
ρ(x, t) = ρ(x − q0 (ρ0 )t) = ρ0 (x − q00 t).
Esaminiamo ora due casi molto interessanti che possono offrire spunti per
ulteriori studi.
2.4.1
Ripartenza dopo un blocco
Supponiamo che le auto siano incolonnate ad un semaforo prima del quale la
densità è massima e dopo il quale la densità è nulla.
55
2.4. MODELLI DIFFERENZIALI DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
Sia t = 0 l’istante in cui il semaforo diventa verde.
Il flusso di traffico successivo può essere descritto dall’equazione 2.22 con la
condizione iniziale:

ρm
ρ(x, 0) = ρ0 (x) =
0
x<0
(2.28)
x > 0.
In corrispondenza di tali dati iniziali avremo che:

vm
x > 0 (ρ0 = 0)
0
0
0
q0 = q0 (ρ(x, 0)) = q0 (ρ0 (x)) = =
.
−v
x
<
0
(ρ
=
ρ
)
m
0
m
La densità risulta costante su rette che si chiamano linee caratteristiche dell’equazione e sono date da:

vm t + x0
x=
−v t + x
m
x0 > 0
0
.
x0 < 0
Su ognuna di tali rette la densità è ρ0 ed il flusso corrispondente è:
q00 = q0 (ρ(x, 0)) = q0 (ρ0 ).
Tali rette coprono solo una parte del semipiano t > 0, ma non forniscono
alcun dato su quanto accade nella zona del semipiano che è compresa tra le rette
x = ±vm t.
La zona non coperta corrisponde al caso x0 = 0 e non è ragionevole fissare il
valore della densità per x0 = 0; infatti:
• a destra di zero la densità è nulla;
• a sinistra è massima;
e quindi la densità presenta in zero una discontinuità di tipo “salto”.
In tale zona ci interessa definire una soluzione ρ(x, t) in grado di raccordare il
valore ρm con il valore 0.
56
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Figura 2.12: Le linee caratteristiche
Per x0 = 0 le curve di livello della densità ρ sono:
x = q0 (ρ(0, 0))t = q0 (ρ0 (0))t
(2.29)
ma la densità iniziale ρ0 (0) non è definita, possiamo soltanto affermare che:
ρ0 (0) ∈ [0, ρm ].
Quindi:
0
q (ρ0 (0)) = vm
2ρ0 (0)
1−
ρm
∈ [−vm , vm ].
Pertanto, per x0 = 0 possiamo considerare non una, ma infinite rette sulle
quali ρ è costante.
Se in t = 0 assumiamo un valore della densità ρ, tale valore si manterrà
costante sulla retta
0
x = q (ρ)t = vm
2ρ
1−
ρm
t.
Ricavando ρ si ottiene:
1
x
ρ = ρm 1 −
.
2
vm t
Osserviamo che per t = 0 la 2.30 non è definita.
57
(2.30)
2.4. MODELLI DIFFERENZIALI DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
Figura 2.13: Grafico e livelli della 2.30
La 2.30 soddisfa l’equazione 2.22; infatti si ha:
ρt =
x
2vm t2
,
ρx =
−1
.
2vm t
Per cui, trascurando la costante 12 ρm :
x
2ρ
−1
+ vm 1 −
=
vm t2
ρm
vm t
1
2ρ
x
−
+
=
=
vm t2 t ρm t
=
x
1 ρm 1 − vm t
x
−
+
vm t2 t
ρm t
= 0.
La soluzione cosı̀ definita ha linee di livello che sono rette per l’origine, esse
corrispondono ai diversi valori di densità che possono essere assunti nell’origine.
Tali valori vanno da:
• ρm , in corrispondenza del quale x = −vm t
• a 0 caso in cui x = vm t.
Infatti:
x
1
ρ = ρm 1 −
=k
2
vm t
⇐⇒ x = vm
58
2k
1−
ρm
.
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Le rette (al variare di k ∈ [0, ρm ] hanno pendenza crescente da −vm a vm e
coprono la zona lasciata scoperta dalle precedenti considerazioni. Sono le curve
caratteristiche che passano per l’origine.
I punti della retta x = −vm t caratterizzano i tempi ed i luoghi in cui inizia il
movimento di un’auto in coda al semaforo.
Al tempo t iniziano a muoversi le auto che per t = 0 si trovano alla posizione
x = −vm t mentre al tempo t l’auto che si trova in x = 0 per t = 0 avrà raggiunto
la posizione x = vm t.
La velocità con cui le auto si muovono nella zona in esame, sarà:
ρ
v = vm 1 −
ρm
(2.31)
e quindi dalla soluzione 2.30 trovata per ρ,
1
x
v = vm 1 −
1−
2
vm t
per cui:
v = vm
x
1
+
2 2vm t
e
v=
vm
x
+ .
2
2t
Se x(t) è la posizione di un’auto avremo che ẋ(t) = v. Si ottiene:
ẋ(t) =
vm
x
+ .
2
2t
Si è in questo modo trovata una equazione differenziale che definisce il movimento dell’auto alla partenza dopo il verde.
Una condizione iniziale può essere dedotta tenendo conto che l’auto comincia
a muoversi da x0 al tempo t0 = −x0 /vm ;
Ne viene:

ẋ(t) = x(t) + vm
2t
2
x(− x0 ) = x .
0
vm
59
2.4. MODELLI DIFFERENZIALI DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
L’integrale generale dell’equazione è:
√
x(t) = C1 t + vm t;
e imponendo che:
x0
x0 = x(− ) = C1
vm
r
x0
x0
+ vm −
−
vm
vm
si ricava:
√
C1 = −2 −x0 vm
per cui la cui soluzione del problema di Cauchy è
√
√ √ √ √
√
√
x(t) = −2 −x0 vm t + vm t t vm
vm t − 2 −x0 .
Si calcola che l’auto raggiungerà il semaforo al tempo t̃ tale che x(t̃) = 0; si
ricava:
t̃ = −4
x0
.
vm
La figura seguente mostra come si muove un’auto in coda al semaforo dopo
che il semaforo è diventato verde.
Figura 2.14: Traiettoria di un’auto inizialmente in attesa al semaforo
60
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
2.4.2
CAPITOLO 2. STRUMENTI MATEMATICI
La formazione di code
Una situazione opposta si verifica quando la densità di traffico aumenta. In tal
caso il metodo delle caratteristiche presenta inconvenienti e si rendono necessari
degli aggiustamenti.
La densità iniziale sia data da:
ρ(x, 0) = ρ0 (x) =

 ρm
x<0
ρ
m
x > 0.
4
(2.32)
Avremo che:
q00
=
q00 (ρ(x, 0))
=
q00 (ρ0 (x))
= =

 vm
x < 0 (ρ0 =
−v
m
x > 0 (ρ0 = ρm ).
2
ρm
)
4
Le curve caratteristiche su cui risulta costante la densità dell’equazione, saranno date da:
x=

 vm t + x0
x0 < 0
−v t + x
m
0
x0 > 0
2
come si vede nella figura seguente.
Figura 2.15:
61
2.4. MODELLI DIFFERENZIALI DI TRAFFICO AUTOSTRADALE
Carlo Caligaris, Iacopo Salvarani
È evidente che la situazione non è affatto chiara: esiste una zona del piano in
cui le caratteristiche si sovrappongono.
Ciò causa la mancanza di unicità della soluzione, o meglio la sua indeterminatezza. Questo è dovuto alla discontinuità del dato iniziale Dobbiamo pertanto
operare una scelta tra le due soluzioni.
Poichè la densità è discontinua la 2.16 può causare problemi.
Ad esempio può non essere lecito lo scambio tra derivata ed integrale in 2.15.
La 2.15 afferma:
q(t, x) − q(t, x + ∆x) =
d
=
dt
Z x+∆x
ρ(t, s)ds.
x
Se σ(t) ∈ [x, x + ∆x] è un punto in cui si verifica la discontinuità la 2.15
applicata agli intervalli [x, σ+ (t)] e [σ− (t), x + ∆x] assicura
d
dt
Z σ(t)
x
d
ρ(s, t)ds +
dt
Z x+∆x
ρ(s, t)ds =
σ(t)
= q(σ− (t), t) − q(x + ∆x, t) − q(σ+ (t), t) + q(x, t).
σ(t)
x
σ−
σ+
x + ∆x
62
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
D’altro canto, per le solite regole di derivazione, si ha:
Z
Z
d x+∆x
d σ(t)
ρ(s, t)ds +
ρ(s, t)ds =
dt x
dt σ(t)
Z σ(t)
∂ρ(s, t)
−
= σ̇(t)ρ(σ (t), t) +
ds − σ̇(t)ρ(σ+ (t), t)+
∂t
x
Z x+∆x
∂ρ(s, t)
ds.
+
∂t
σ(t)
Quindi, se x → σ(t)− e x + ∆x → σ(t)+ otteniamo:
σ̇(t)ρ(σ− (t), t) − σ̇(t)ρ(σ+ (t), t) = − q(σ+ (t), t) + q(σ− (t), t).
Più brevemente:
σ̇(t)ρ− − σ̇(t)ρ+ = −q+ + q−
ovvero
σ̇(t) =
q+ − q−
ρ+ v+ − ρ− v−
=
.
ρ+ − ρ−
ρ+ − ρ−
Nel nostro caso, si verifica subito che:
ρ+ = ρm
v+ = 0
Per cui:
σ̇(t) = −
vm
4
,
,
ρm
,
4
3vm
.
v− =
4
ρ− =
e σ(t) = −
63
vm
t.
4
(2.33)
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
La 2.33 rappresenta l’equazione della curva lungo la quale si passa da velocità
3vm
a velocità v+ = 0 ed ivi si riscontra una brusca interruzione del traffico;
v− =
4
quindi σ(t) individua il punto in cui in traffico subisce uno shock e ne descrive
l’andamento nel tempo; solitamente σ(t) viene indicata come “shock wave” (onda
d’urto).
2.5
2.5.1
Metodi di calcolo numerici alle Differenze Finite
Generalità Sulle Equazioni Iperboliche
Per poter offrire una più comprensibile trattazione del metodo di calcolo alle differenze finite, partiamo illustrando come esse vengono applicate ai diversi tipi di
equazioni differenziali.
L’esempio di base di equazione differenziale di tipo iperbolico è dato dall’equazione del trasporto lineare:
ut + aux = 0
(2.34)
dove a è una costante, t rappresenta la variabile temporale e x è la variabile spaziale. Data la funzione u = u(x, t) ad un istante iniziale t = 0, imponendo la
condizione:
u(x, 0) = u0 (x)
(2.35)
per una certa funzione data u0 , vogliamo determinare il valore di u per tempi successivi (∀ t ≥ 0). Questo è un problema ai valori iniziali o di Cauchy. Risolvere
questa equazione significa pertanto risolvere in maniera analitica il problema del
traffico, ovvero stimare quale sarà il flusso veicolare lungo la variabile spaziale negli istanti successivi a t = 0, avendo come dato iniziale il flusso lungo la variabile
spaziale a t = 0. Purtroppo, come vedremo in seguito, questo tipo di trattazione
è effettuabile soltanto in casi molto semplici e specifici e non sulle tratte autostradali, le quali presentano forti caratteristiche di discontinuità o elementi che danno
vita ad equazioni di difficile risoluzione.
64
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
L’unica soluzione di questo problema è data da:
u(x, t) = u0 (x − at).
(2.36)
Dalla formula (2.36) possiamo dedurre alcune importanti indicazioni. Innanzitutto, la soluzione non è altro che la traslazione (verso destra se a > 0 o verso sinistra
se a < 0) del dato iniziale, con “velocità dell’ondà’ pari ad a. Inoltre, lungo le
rette ξ = x − at, la soluzione è costante e vale u0 (ξ). Queste rette sono le linee
caratteristiche dell’equazione. Possiamo ritrovare la soluzione utilizzando questo
concetto di caratteristica. Si effettui il cambio di variabili da (x, t) a (ξ, τ) definito
da:
ξ = x − at
τ = t.
La sua inversa è data da:
x = ξ + aτ
t = τ.
Possiamo allora definire una nuova funzione ũ(ξ, τ) = u(x, t). Nelle nuove
coordinate, l’equazione (2.34) diventa:
ũτ =
∂t
∂x
ut +
ux = 0.
∂τ
∂τ
Questa è una semplice equazione differenziale in τ che ha come unica soluzione:
ũ(ξ, τ) = u0 (ξ)
da cui si può ottenere anche la (2.36). Analogamente è possibile dimostrare che
la soluzione dell’equazione
ut + aux + bu = f(x, t)
con la condizione iniziale (2.35) è data dalla funzione:
Zt
−bt
u(x, t) = u0 (x − at)e
+ e−b(t−s) f(x − a(t − s), s)ds.
0
65
(2.37)
(2.38)
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Anche in questo caso si vede come la soluzione sia influenzata solo dai valori dei
dati u0 ed f lungo la retta caratteristica ξ = x − a(t − s).
Si osservi che, nonostante l’equazione richieda la differenziabilità della soluzione u, le (2.36) e (2.38) hanno senso per dati iniziali molto generali. Questo permette di trattare soluzioni generalizzate eventualmente discontinue. Questi metodi si possono estendere facilmente, benché in quel caso non ci sia più
necessariamente una soluzione esplicita, alle equazioni semilineari.
ut + aux = f(x, t, u)
(2.39)
Come vedremo in seguito, porre a costante è un caso particolare che mal si
adatterebbe a trattare dal punto di vista matematico il fenomeno che andremo a
studiare.
Un’ulteriore estensione della teoria è data da equazioni e sistemi a coefficienti
variabili, eventualmente con termine di sorgente dipendente dall’incognita. Si
consideri per esempio l’equazione scalare:
ut + a(x, t)ux = 0
(2.40)
dove a(x, t) è una funzione regolare.
Se cerchiamo un cambio di variabili che, come prima, ci riporti ad un’equazione differenziale ordinaria, eseguiamo la trasformazione da (x, t) a (ξ, τ) definita
da:
τ=t
lasciando per ora ξ indeterminata.
Tramite questa trasformazione possiamo definire una nuova funzione ũ(ξ, τ) =
u(x, t). Nelle nuove coordinate, l’equazione (2.40) diventa
ũτ =
∂t
∂x
ut +
ux = 0
∂τ
∂τ
se imponiamo che
dx
= a(x, τ).
dτ
66
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
In pratica, si risolve il sistema di equazioni differenziali ordinarie:

 dũ = 0
ũ(ξ, 0) = u0 (ξ)
dτ
 dx = a(x, τ)
x = ξ.
(2.41)
0
dτ
Essendo x0 = ξ, almeno per piccoli valori di τ, la relazione x = x(ξ, τ) è invertibile per τ fissato tramite una funzione ξ = ξ(x, τ). La soluzione del problema
(2.40) sarà allora data dalla funzione
u(x, t) = ũ(ξ, τ) = u0 (ξ(x, t), t).
Osserviamo infine che le idee qui esposte non si applicano direttamente al
caso in cui le velocità possano dipendere dall’incognita u, poichè, come vedremo
in seguito, le caratteristiche possono intersecarsi e generare soluzioni discontinue,
che necessitano un trattamento particolare.
2.5.2
Introduzione al Metodo delle Differenze Finite
Il metodo alle differenze finite è fondamentale per riuscire a risolvere le equazioni
differenziali con algoritmi numerici. In pratica, con questo metodo si modifica il
dominio dell’analisi dal caso continuo al caso discreto. Le equazioni differenziali
funzionano in un insieme continuo e le derivate stesse sono definite su intervalli infinitesimi. Evidentemte, questi comportamenti non possono essere simulati
nel modo reale, ma devono essere discretizzati (considerazione, questa, che si
apre a molte obiezioni di natura filosofica, oltre che matematica, ma che aiuta a
comprendere la necessità di questo passaggio).
Definiamo quindi una griglia di punti nel piano cartesiano (x, t) e, per semplicità, ipotizziamo che il piano rappresenti le coordinate spazio/temporali di un
qualsiasi fenomeno he abbia luogo in una sola dimensione spaziale. Fissati un
passo di discretizzazione spaziale ∆x = h ed un passo di discretizzazione temporale ∆t = k, la griglia sarà data dai punti nodali del piano (xm , tn ) = (mh, nk),
per valori interi arbitrari m e n.
Per una funzione v definita sulla griglia, scriveremo vm,n per il suo valore
al nodo (xm , tn ), e questa notazione sarà estesa naturalmente a funzioni definite
ovunque per indicare i valori sui nodi.
67
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Figura 2.16: Una rappresentazione bidimensionale della griglia
L’idea di base dei metodi alle differenze finite è quella di sostituire nell’equazione da approssimare, ad ogni derivata, un rapporto incrementale finito.
Per esempio, per una funzione regolare u, la derivata temporale ∂t u(xm , tn )
può essere approssimata sia dalla differenza in avanti (forward):
∆+t u
u(mh, (n + 1)k) − u(mh, nk)
,
;
∆t
k
sia dalla differenza all’indietro (backward):
∆−t u
u(mh, nk) − u(mh, (n − 1)k)
,
;
∆t
k
sia, infine, dalla differenza centrata (central):
∆t u
u(mh, (n + 1)k) − u(mh, (n − 1)k)
,
.
2∆t
2k
Si procede analogamente nel caso di una derivata spaziale, ed eventualmente anche nel caso di più variabili spaziali. In particolare, la derivata seconda spaziale
68
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
sarà spesso approssimata dalla differenza seconda centrata
∆2x u
u(mh, (n + 1)k) − 2u(mh, nk) + u(mh, (n − 1)k)
,
.
2
(∆x)
h2
Questi schemi sono definiti da un sistema algebrico
Ph,k v = 0
che agisce sullo spazio delle funzioni definite sui nodi della griglia.
Usando diverse approssimazioni per le derivate si ottengono chiaramente schemi numerici differenti. Per esempio, per l’equazione (2.34) otteniamo i seguenti
schemi:
vm,n+1 − vm,n
vm+1,n − vm,n
+a
=0
k
h
vm,n − vm−1,n
vm,n+1 − vm,n
+a
=0
k
h
vm,n+1 − vm,n
vm+1,n − vm−1,n
+a
=0
k
2h
vm,n+1 − vm,n−1
vm+1,n − vm−1,n
+a
=0
2k
2h
vm,n+1 − 21 (vm+1,n + vm−1,n )
vm+1,n − vm−1,n
+a
= 0.
k
2h
(2.42)
(2.43)
(2.44)
(2.45)
(2.46)
Il primo schema (2.42) è un forward-forward o upwind con a > 0 (le differenze prendono la direzione delle caratteristiche), perchè in tale approssimazione è
usata la differenza in avanti sia per la variabile temporale che per quella spaziale. Lo schema (2.43) è un forward-backward o upwind con a < 0 ed il (2.44)
è un forward-central. Lo schema (2.45) è un central-central o leapfrog mentre il (2.46), che ha una struttura leggermente differente, è chiamato schema di
Lax-Friedrichs.
Come si è visto, il modo di derivare gli schemi è estremamente semplice e
permette di approssimare qualsiasi equazione differenziale, anche a coefficienti
variabili o non lineare. Questo non vuol dire che tutti gli schemi cosı̀ ottenuti
siano ugualmente efficienti e veloci, e in effetti non è detto nemmeno che tutti
approssimino la soluzione del problema (2.34). Nel seguito, ci occuperemo di
69
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
stabilire certi criteri che assicurino la convergenza, ossia la proprietà di approssimare la soluzione del problema limite quando i passi di discretizzazione spaziale
e temporale tendono entrambi a zero. Tra gli schemi convergenti cercheremo di
selezionare quelli che danno un’approssimazione più accurata con il minor numero di punti. Una prima osservazione da fare riguardo agli schemi (2.42), (2.43),
(2.44), (2.45) e (2.46) è che tutti possono essere riformulati esprimendo vm,n+1 come una combinazione lineare dei valori di v al livello n o, nel caso dello schema
central-central, anche al livello n − 1.
Per esempio lo schema (2.42) può essere riscritto come
vm,n+1 = (1 + aλ)vm,n − aλvm+1,n
avendo posto
λ,
k
.
h
(2.47)
Questo valore λ, detto anche rapporto di CFL (da Courant, Friedrichs, Lewy, noti
studiosi dell’argomento, con riferimento a [9]), apparirà spesso nel seguito e il suo
valore sarà determinante nello stabilire le proprietà degli schemi. Gli schemi che
dipendono dai valori al passo immediatamente precedente sono chiamati schemi
ad un passo, altrimenti, come nel caso dello schema central-central, si parla di
schemi multistep. Per gli schemi ad un passo, una volta fissato il dato iniziale ed
una sua ragionevole approssimazione sulla griglia di discretizzazione (per esempio il suo valore sui nodi), la soluzione approssimata viene costruita facilmente
per ricorrenza. Per gli schemi multistep a k passi, k > 1, bisogna invece prescrivere una procedura di inizializzazione per assegnare la soluzione nei livelli k
occorrenti. Per fare questo, usualmente si utilizza un metodo ad un passo per i
primi k passi e poi si continua con il metodo proposto.
Esempio 2.1
Prima di procedere con l’analisi degli schemi a differenze finite, analizziamo alcuni risultati numerici ottenuti utilizzando lo schema di Lax-Friedrichs. Si consideri
l’equazione
ut + ux = 0
70
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
con il dato iniziale
CAPITOLO 2. STRUMENTI MATEMATICI

1 − x per | x |≤ 1
u0 =
0 per | x |> 1
la cui soluzione è ottenuta semplicemente ponendo u(x, t) = u0 (x − t), ossia
traslando verso destra a velocità 1 il dato iniziale.
Figura 2.17: Lax-Friedrichs, λ = 0, 8 [30]
Per calcolare la soluzione noi ci limiteremo al caso 0 ≤ t ≤ 2, per cui il supporto della soluzione sarà contenuto solo nell’intervallo −1 ≤ x ≤ 3 e basterà
imporre le condizioni al bordo nulle per la v. La formula relativa allo schema di
Lax-Friedrichs è
1
1
vm,n+1 = (vm+1,n + vm−1,n ) − λ(vm+1,n − vm−1,n )
2
2
eccetto negli estremi destri e sinistri dove imporremo v = 0. La soluzione al
tempo t = 1, 6 per λ = 0, 8 appare in figura (2.17), dove la soluzione esatta è
data dalla linea continua. Si osserva allora un sostanziale rispetto della soluzione, che viene però smussata negli spigoli a causa del fenomeno della cosiddetta
71
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
viscosità numerica, che verrà discusso in seguito. Mantenendo fisso il valore di
λ e diminuendo il valore di h, e quindi di k, la precisione migliora e possiamo
constatare una sostanziale convergenza numerica. Se però usiamo λ = 1, 6, come mostrato nella figura (2.18) per il tempo t = 0, 8, vediamo che la soluzione
numerica si comporta in modo anomalo, oscillando in modo incontrollato intorno
alla soluzione esatta. Questo fatto, che verrà ripreso e spiegato in seguito, mostra
l’importanza di una corretta scelta del parametro λ.
Figura 2.18: Lax-Friedrichs, λ = 1, 6 [30]
Convergenza e Consistenza
Come già osservato, la proprietà principale di uno schema è la sua convergenza
verso la soluzione esatta al tendere dei passi di discretizzazione h e k verso lo
zero. Nel seguito estenderemo la nozione di schema convergente ad operatori più
generali, ma per ora vogliamo limitarci solo alle equazioni scalari del prim’ordine
iperboliche.
Definizione 2.4
Uno schema alle differenze finite ad un passo dato da un operatore discreto
72
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Ph,k v = 0 è convergente per l’equazione differenziale (2.34) se per qualsiasi soluzione u dell’equazione con la condizione iniziale (2.35), data la soluzione vm,n
dello schema alle differenze finite, tale che vm,0 converge a u0 quando mh converge a x, allora vm,n converge a u(x, t) se (mh, nk) tende a (x, t) al tendere di
h e k a 0.
Per gli schemi multistep la definizione si estende senza difficoltà specificando
la procedura di inizializzazione.
Per confrontare una soluzione discreta v con una definita ovunque u, dobbiamo introdurre delle opportune topologie. Sia Ω un’intervallo reale e JΩ l’insieme
dei valori dell’indice m tali che mh
∈
Ω. I valori di una discretizzazione
v = {vm,n } al livello temporale n saranno definiti da:
vn , {vm,n , m ∈ JΩ }.
Una notazione analoga sarà utilizzata per la restrizione della funzione u sui
nodi della griglia.
Possiamo allora considerare due tipi di norma. Per prima cosa la norma del
massimo, che è data da:
|| vn ||∞,h , max | vm,n |, m ∈ JΩ .
(2.48)
Utilizzando la stessa norma per valutare un avremo un’approssimazione (dal basso) della norma usuale in L∞ della funzione u(·, tn ), che in generale non coinciderà con essa.
Un’altra norma largamente utilizzata, specialmente nel contesto dei problemi
lineari, sarà la norma discreta L2 :
|| v ||2,h ,
n
X
h | vm,n |
2
21
.
(2.49)
m ∈ JΩ
La scelta della norma discreta da utilizzare non modifica in modo sostanziale
l’analisi degli schemi, se non dal punto di vista tecnico.
Nell’esempio precedente si vedeva che per λ = 0, 8 gli schemi di Lax-Friedrichs
e leapfrog erano convergenti, mentre lo schema di Lax-Friedrichs mostrava un
73
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
cattivo comportamento per λ = 1, 6. Dimostrare che uno schema è convergente
è spesso difficile per un problema di natura generale e procedendo in maniera diretta. Per le equazioni lineari a coefficienti costanti si può però caratterizzare la
convergenza in modo completo utilizzando delle condizioni di facile verifica, la
consistenza e la stabilità.
Definizione 2.5
L’errore di troncatura T di uno schema alle differenze finite per l’equazione (2.34)
Ph,k v = 0 è definito sostituendo nello schema della soluzione numerica una
soluzione esatta u di (2.34) abbastanza regolare, ossia:
T (x, t) = Ph,k u(x, t).
(2.50)
Definizione 2.6
Uno schema si dice consistente con l’equazione (2.34) se:
T (x, t) → 0 se h, k → 0
per ogni (x, t) nel dominio di interesse.
Per alcuni schemi dovremmo dare delle restrizioni al modo in cui h e k tendono a zero. Le soluzioni dovranno essere abbastanza regolari nel senso di essere
derivabili abbastanza volte per eseguire i calcoli.
Esaminiamo adesso la consistenza degli schemi proposti:
Esempio 2.2 Lo Schema Upwind con a < 0
In questo caso sia u soluzione di (2.34), e:
Ph,k v =
vm,n+1 − vm,n
vm+1,n − vm,n
+a
= 0.
k
h
Eseguendo lo sviluppo di Taylor di u in un intorno di (mh, nk) otteniamo
allora, ponendo um,n = u(mh, nk)
1
um,n+1 = um,n + kut + k2 utt + O(k3 ),
2
1
um+1,n = um,n + hux + h2 uxx + O(h3 ),
2
74
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
essendo le derivate calcolate nel punto stesso (mh, nk). Da questo si deduce che
1
1
T = Ph,k u = ut + aux + kutt + ahuxx + O(k2 ) + O(h2 )
2
2
(2.51)
che tende a zero se h e k tendono a zero, per cui lo schema è consistente.
Esempio 2.3 Lo Schema di Lax-Friedrichs
Per questo schema abbiamo:
Ph,k u =
um,n+1 − 12 (um+1,n + um−1,n )
um+1,n − um−1,n
+a
.
k
2h
Sfruttando nuovamente gli sviluppi di Taylor si può osservare che:
1
1
um±1,n = um,n ± hux + h2 uxx ± h3 uxxx + O(h4 )
2
6
ed otteniamo quindi:
1
1
(um+1,n + um−1,n ) = um,n + h2 uxx + O(h4 )
2
2
e anche:
um+1,n − um−1,n
1
= ux + h3 uxxx + O(h4 ).
2h
6
Sostituendo queste espressioni nello schema otteniamo:
1
1
1
Ph,k u = ut + aux + k2 utt − k−1 h2 uxx + ah3 uxxx + O(h4 + k−1 h4 + k2 ).
2
2
6
che, essendo u una soluzione, tende a zero se h e k tendono a zero con k−1 h2 → 0
Vediamo ora come l’errore di troncatura ci possa dare in alcuni esempi elementari una stima dell’errore di approssimazione numerica che stiamo commettendo. Per un dato schema denotiamo con Tm,n l’errore di troncatura in (xn , tm )
e sia data una stima di questo errore su di un intervallo fissato [0, T0 ) con
| Tm,n |≤ Γ
(2.52)
se nk ≤ T0 . Si denoti quindi con e l’errore v − u nell’approssimazione; più
precisamente sia:
em,n = vm,n − um,n .
75
(2.53)
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Analizziamo ora, per esempio, lo schema upwind con a < 0. Inserendo la
quantità em,n nello schema (2.42) troviamo:
em,n+1 = (1 + aλ)em,n − aλem+1,n − kTm,n .
(2.54)
Osserviamo allora che se −1 ≤ aλ ≤ 0, i coefficienti dei due primi termini
a destra sono non negativi e sommati danno 1. Introduciamo quindi la norma del
massimo dell’errore:
En , max | em,n |, m ∈ JΩ .
A questo punto utilizzando la non negatività dei coefficienti di em,n nella
(2.54) si ottiene facilmente:
En+1 ≤ En + kΓ.
(2.55)
En ≤ nkΓ ≤ T0 Γ.
(2.56)
ovvero, essendo E0 = 0:
Utilizzando la stima (2.51) abbiamo però che:
1
|a|
Γ ≤ k Mtt +
Mxx
2
λ
dove Mtt e Mxx sono la norma del massimo per le derivate utt e uxx rispettivamente.
Abbiamo quindi che l’errore tende a zero, ovvero l’approssimazione numerica
converge, al tendere di k = λh a zero, con λ costante, se la soluzione limite
ha le derivate seconde utt e uxx uniformemente limitate su tutto il dominio. Un
ragionamento analogo si applica allo schema di Lax-Friedrichs e ovviamente allo
schema upwind con a > 0.
In pratica la consistenza e la convergenza sono legate dal fatto che la prima
dice che la soluzione esatta è una soluzione approssimata dello schema numerico,
mentre la seconda dice che la soluzione dello schema numerico è una soluzione approssimata dell’equazione. Bisogna però porre attenzione al fatto che la
consistenza da sola non implica necessariamente la convergenza, come si vede
nell’esempio successivo.
76
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Esempio 2.4 Lo Schema Forward-Forward non Sempre Converge
Si riprenda lo schema (2.42), però con a = 1. Possiamo allora scrivere lo
schema come:
vm,n+1 = (1 + λ)vm,n − λvm+1,n
avendo posto come al solito λ ,

1
u0 =
0
(2.57)
k
. Si prenda, come dato iniziale:
h
per − 1 ≤ x ≤ 0
altrove.
La soluzione u sarà allora data da una semplice traslazione verso destra
con velocità t, ed in particolare ci saranno valori positivi di x per cui u = 1.
Analogamente, per lo schema alle differenze si prenda come dato iniziale
vm,0

1
=
0
per − 1 ≤ mh ≤ 0
altrove.
Dalla (2.57) si vede che la soluzione numerica dipende solo dai valori di m
maggiori o uguali al valore nel punto, per cui avremo:
vm,n = 0
per tutti i valori m > 0, n ≥ 0. Per questo, essendo l’approssimazione vm,n
identicamente nulla per x > 0 non può tendere a u nel limite in nessun senso
ragionevole.
Stabilità
Abbiamo visto che la sola condizione di consistenza non è sufficiente in generale
a garantire la convergenza. La condizione supplementare da tenere in considerazione è la stabilità. Per capire questa condizione si deve tener conto che se la
successione approssimante converge in una qualche topologia, allora deve essere
almeno limitata nella stessa topologia.
77
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Definizione 2.7
Uno schema alle differenze finite a un passo Ph,k v = 0 che approssima l’equazione (2.34) è stabile nella norma || · ||·,h nella regione Ω se per ogni T > 0 esiste
una costante CT tale che, per ogni v0 ,
|| vn ||·,h ≤ CT || v0 ||·,h
(2.58)
per 0 ≤ nk ≤ T
Ci concentreremo nel seguito sugli schemi ad un passo espliciti per l’equazione
(2.34) che possono dunque essere scritti come:
vn+1 = Cvn
dove C è un operatore lineare alle differenze indipendente da n del tipo:
X
vn,m+1 = (Cvn )m =
cm,k vk,n
(2.59)
(2.60)
k ∈ JΩ
I coefficienti cm,k potranno in effetti dipendere da m e k per poter includere in
seguito il caso a coefficienti variabili e le possibili condizioni al bordo. Eventuali
termini di sorgente potranno anche essere inclusi senza difficoltà e non cambieranno le proprietà essenziali dello schema.
Poichè stiamo trattando il caso lineare, è facile vedere che in generale la nostra
richiesta di stabilità equivale ad una condizione sui coefficienti dell’operatore C
del tipo:
|| Cn ||≤ CT
(2.61)
per 0 ≤ nk ≤ T usando un’opportuna norma operatoriale.
Diremo infine che uno schema è convergente nella norma prescelta se:
|| vn − un ||·,h → 0
(2.62)
con λ = k/h fissato e k → 0 e per nk → t ∈ (0, T ), per ogni dato iniziale u0
per cui il problema di Cauchy per la (2.34) è ben posto nella norma prescelta. Nel
caso presente per la norma del massimo serviranno dati limitati e per la norma
di tipo L2 serviranno dati nello stesso spazio. A questo punto abbiamo tutti gli
elementi per enunciare il risultato fondamentale che vale più generalmente per
tutti gli schemi alle differenze finite che approssimino problemi di tipo lineare.
78
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Teorema 2.1 Teorema di Equivalenza di Lax-Richtmyer.
Uno schema alle differenze finite consistente per un problema lineare ben
posto di evoluzione è convergente se e solo se è stabile.
Il Teorema di Equivalenza di Lax-Richtmyer, stabilito per la prima volta da
Peter Lax nel 1953 ([23]), quando aveva soltanto 27 anni, è un risultato di grande
importanza. Riesce a caratterizzare un concetto utile, ma difficile come la convergenza, essenzialmente legata a nozioni di carattere topologico, ad altri criteri più
semplici da stabilire come la stabilità e la consistenza. In pratica la consistenza
è un requisito abbastanza facile da verificare. La stabilità comporta un po‘ più
di difficoltà, ma come vedremo in seguito è possibile operare con manipolazioni
essenzialmente di tipo algebrico. Inoltre questa caratterizzazione è ottimale. Ossia non dice soltanto che la consistenza e la stabilità implicano la convergenza,
ma anche che uno schema instabile o non consistente non può essere convergente.
Questo permette di scartare eventuali candidati con una semplice verifica a priori.
Passiamo ora a considerare la classe degli schemi a tre punti, ossia degli
schemi della forma:
vm,n+1 = αvm+1,n + βvm,n + γvm−1,n
(2.63)
con α, β e γ costanti da fissare.
Abbiamo intanto questo primo risultato di stabilità in L2 .
Definizione 2.8
Sia dato uno schema a tre punti della forma (2.63) per l’equazione (2.34). Una
condizione sufficiente affichè lo schema risulti stabile rispetto alla norma (2.49) è
che valga la disuguaglianza:
|α|+|β|+|γ|≤1
(2.64)
Per assicurare la consistenza con l’equazione (2.34) abbiamo:
Definizione 2.9
Sia il rapporto
k
uguale ad una costante fissata λ > 0. Allora uno schema
h
79
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Schema
(α, β, γ)
q
Convergenza
Upwind con a < 0
(−λa, (1 + λa), 0)
−λa
−1 ≤ λa ≤ 0
Upwind con a > 0
(0, (1 − λa), λa)
λa
0 ≤ λa ≤ 1
0
Mai
1
| λa |≤ 1
Forward-Central
Lax-Friedrichs
(−λa/2, 1, λa/2)
1 − λa
1 + λa
, 0,
2
2
Tabella 2.2: Schema Coefficienti [30]
a tre punti della forma (2.63) è consistente con l’equazione (2.34) se e solo se
α + β + γ = 1 e γ − α = λa.
Si osservi che stiamo in effetti imponendo una limitazione nel modo di convergere delle discretizzazioni spaziali e temporali, richiedendo che λ sia una costante. Da questa proposizione si vede che la classe degli schemi lineari a tre punti
che sono consistenti con l’equazione (2.34) forma una famiglia ad un parametro.
Ponendo:
q=α+γ
(2.65)
possiamo riscrivere tutti questi schemi nella forma cosiddetta viscosa;
vm,n+1 = vm,n −
aλ
q
(vm+1,n − vm−1,n ) + (vm+1,n − 2vm,n + vm−1,n ). (2.66)
2
2
Il parametro q è legato infatti alla viscosità numerica dello schema, in quanto
formalmente lo schema è consistente all’ordine 2, con l’equazione viscosa;
1
q
ut + aux = λh( 2 − a2 )uxx .
2
λ
(2.67)
In particolare, abbiamo la tabella dei coefficienti 2.2.
Le condizioni di stabilità trovate grazie alla (2.64) sono in questo caso anche
necessarie. Osserviamo tuttavia che, tra gli schemi esaminati, la viscosità massima, in regime di stabilità, è quella dello schema di Lax-Friedrichs, mentre il
forward-central, che come si potrebbe dimostrare non è mai stabile, ha viscosità
negativa nell’equazione equivalente.
80
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
La Condizione di CFL
Prima di passare a discutere più in dettaglio la stabilità dei vari schemi, essenzialmente grazie all’analisi di von Neumann, presentiamo una condizione necessaria
per la convergenza di facile verifica e che permette quindi una veloce analisi preliminare. Questa condizione fu proposta nel 1928 da R. Courant, K.O. Friedrichs e
H. Lewy nel loro lavoro fondamentale sui metodi alle differenze finite ed è conosciuta oggi come la condizione di CFL. Essa esprime una condizione necessaria
di convergenza nei termini del dominio di dipendenza della soluzione. Prendiamo
ad esempio la soluzione del problema dato dalle equazioni (2.34) e (2.35). Questa
soluzione è completamente determinata in un punto (x, t) a partire dal valore del
dato iniziale nel punto (x − at). La condizione di CFL stabilisce che per uno
schema convergente il dominio di dipendenza dello schema numerico deve contenere il dominio di dipendenza dell’equazione differenziale. Nel caso dell’equazione (2.34), eventualmente anche nel caso disomogeneo (2.38), questo si riduce
alla caratteristica retrograda uscente dal punto (x, t), ossia la retta di equazione
ξ = x − a(t − s).
Teorema 2.2
k
= costante per uno schema esplicito a tre punti
h
per l’equazione (2.34) della forma (2.63), allora una condizione necessaria per
Se fissiamo il rapporto λ =
la stabilità è la seguente, detta condizione di CFL:
| λa | ≤ 1
(2.68)
In particolare è facile estendere questo risultato ai sistemi lineari fortemente
iperbolici del tipo (2.40) per cui vale quindi la seguente regola generale: non
ci sono schemi espliciti incondizionatamente stabili e consistenti alle differenze
finite per sistemi fortemente iperbolici. La stabilità incondizionata potrà infatti
essere solo recuperata al prezzo di una perdita di accuratezza dello schema per la
classe dei cosiddetti schemi impliciti.
81
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Monotonia
Un modo semplice per trovare stime della norma del massimo è quello di costruire
degli schemi che verifichino la proprietà del confronto monotono, ossia se due dati
iniziali discretizzati verificano vm,0 ≤ ṽm,0 allora per ogni n > 0 vale:
vm,n ≤ ṽm,n .
Definizione 2.10
Uno schema nella forma (2.60) è detto essere monotono se tutti i coefficienti
cm,k ≥ 0.
Si vede facilmente che lo schema è monotono se e solo se verifica la proprietà
del confronto monotono. Abbiamo la seguente stima di limitatezza.
Teorema 2.3
Sia dato uno schema monotono della forma (2.60). Allora, posto
vmin , min{vm,0 }
e
vmax , max{vm,0 }
avremo che
vmin ≤ vm,n ≤ vmax
(2.69)
Dal Teorema di Lax-Richtmyer abbiamo immediatamente la convergenza di
tutti gli schemi consistenti e monotoni (per una dimostrazione diretta si può procedere anche stimando direttamente l’errore numerico come nelle (2.54)-(2.56).
È facile inoltre caratterizzare gli schemi monotoni tra tutti gli schemi consistenti
a tre punti della forma (2.63). Per enunciare questa caratterizzazione utilizziamo
però la forma viscosa (2.66).
Definizione 2.11
Uno schema esplicito a tre punti consistente con l’equazione (2.34), nella forma
viscosa (2.66), è monotono se e solo se
λ|a|≤q≤1
82
(2.70)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Per dimostrare tale risultato basta osservare che valgono le seguenti uguaglianze:
1
α = (q − aλ)
2
β=1−q
1
γ = (q + aλ)
2
Vediamo dunque che la condizione di CFL è ancora necessaria per la convergenza. Inoltre gli schemi upwind e Lax-Friedrichs sono monotoni. In particolare
lo schema monotono con la più bassa viscosità numerica è lo schema upwind,
mentre Lax-Friedrichs è quello con la più alta. Osserviamo infine come la condizione (2.70) sia in effetti equivalente alla condizione (2.64) che avevamo trovato
per la norma L2 .
Sfortunatamente la classe degli schemi monotoni è troppo ristretta per contenere
delle approssimazioni più accurate, per cui sarà necessario considerare la stabilità
di tipo L2 , che risulterà essere meno restrittiva.
L’Analisi di Von Neumann
Lo strumento più efficace per l’analisi delle equazioni lineari alle derivate parziali è senz’altro l’uso estensivo della trasformata e delle serie di Fourier. Nel
caso a coefficienti costanti questo permette di stabilire in modo diretto la buona
disposizione e le proprietà qualitative delle soluzioni di larghe classi di problemi
differenziali. In particolar modo è possibile caratterizzare in modo completo se,
in L2 , i problemi di tipo iperbolico e parabolico siano ben posti, e nel caso scalare
e per i sistemi.
Se si considera una funzione v = {vm } definita su una griglia spaziale di passo
h, la sua serie di Fourier è data da:
∞
1 X
^v(ξ) = √
he−imhξ vm
2π m=−∞
per
83
(2.71)
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
ξ ∈
dà:
Carlo Caligaris, Iacopo Salvarani
π π
π
π
− ,
. Si ha allora che ^v −
= ^v
e la formula di inversione
h h
h
h
Zπ
h
1
vm = √
eimhξ ^v(ξ)dξ.
(2.72)
2π − hπ
che, di solito, si parte con una funzione periodica sull’intervallo
Si noti
π π
e si mostra che sotto opportune ipotesi vale la formula di rappresenta− ,
h h
zione (2.71) con i coefficienti dati da (2.72).
Prima di addentrarci ulteriormente nell’analisi degli schemi numerici, vale la
pena di dare un cenno alle proprietà della trasformata di Fourier che viene utilizzata per la risoluzione dei problemi differenziali. Sia ad esempio u una soluzione
dell’equazione (2.34) e u
^ la sua trasformata di Fourier nella variabile spaziale,
Z∞
1
u
^ (ω) = √
e−iωx u(x)dx.
2π −∞
Allora u
^ risolve l’equazione differenziale ordinaria
ossia:
(2.73)
u
^ t = −iaω^
u
che ha come unica soluzione:
u
^ (ω, t) = e−iatω u
^ 0 (ω).
La norma L2 viene conservata nell’evoluzione dell’equazione e le proprietà di
regolarità della soluzione vengono trasformate in proprietà di decrescenza all’infinito della u
^ e viceversa. Questo spiega perchè le soluzioni irregolari presentano
oscillazioni sulle frequenze più alte, che in questo caso si trovano ad avere grande
ampiezza.
Per illustrare il metodo di Von Neumann considereremo un caso particolare,
lo schema forward-backward (2.43) per l’equazione (2.34):
vm,n − vm−1,n
vm,n+1 − vm,n
+a
=0
k
h
(2.74)
che riscriviamo in forma compatta come:
vm,n+1 = (1 − aλ)vm,n + aλvm−1,n
84
(2.75)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
k
.
h
Dalla (2.83) abbiamo:
sempre ponendo λ ,
vm,n
1
=√
2π
Zπ
h
eimhξ ^vn (ξ)dξ.
π
−h
Sostituendo quindi nella (2.75) si ottiene la relazione
Zπ
h
1
vm,n+1 = √
eimhξ [(1 − aλ) + aλe−ihξ ]^vn (ξ)dξ
π
2π − h
(2.76)
da cui si deduce la relazione per ricorrenza
^vn+1 (ξ) = g(hξ)^vn (ξ)
(2.77)
con
g(hξ) , (1 − aλ) + aλe−ihξ .
Questo mostra come l’avanzamento di un passo temporale dello schema provochi un’amplificazione di un fattore g(hξ) della trasformata numerica, ottenendo
cosı̀
^vn (ξ) = g(hξ)n ^v0 (ξ).
(2.78)
Daremo adesso la condizione per la stabilità in L2 per le approssimazioni numeriche dell’equazione (2.34), nonostante questa analisi sia valida più in generale per problemi iperbolici e parabolici che siano ben posti in questa topologia.
Seguendo quanto illustrato nell’esempio precedente possiamo affermare che per
ogni schema alle differenze ad un passo e su 2l + 1 punti della forma (2.59),
possiamo scrivere la relazione:
^vn+1 (ξ) = g(hξ)^vn (ξ)
con
g(hξ) ,
l
X
(2.79)
cl eilhξ .
k=−l
La funzione g è detta fattore di amplificazione e contiene tutte le informazioni importanti sullo schema e, cosa più importante, risulta essere uno strumento
abbastanza facile da analizzare.
85
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Teorema 2.4
Uno schema alle differenze ad un passo per l’equazione (2.34) è stabile se e solo
se esiste una costante K e alcuni valori fissati k0 e h0 tali che
| g(χ, h, k) |≤ 1 + Kk
(2.80)
per tutti i valori di χ, 0 < k ≤ k0 , e 0 < h ≤ h0 . Se inoltre g(χ, h, k) è
indipendente da h e k allora basta porre K = 0 nella (2.80).
Si osservi che si può dimostrare che la condizione di Von Neumann è necessaria per i sistemi a coefficienti costanti, se applicata agli autovalori della matrice
di amplificazione, e continua ad essere anche sufficiente per tutti gli schemi ad un
passo per le equazioni scalari con una sola derivata nel tempo.
Terminiamo infine osservando che l’analisi di Von Neumann può essere adattata opportunamente, anche se non direttamente, allo studio delle equazioni a
coefficienti variabili, mediante il metodo del congelamento dei coefficienti. Per
esempio per l’equazione a coefficienti variabili
ut + a(x, t)ux = 0
(2.81)
varrà ancora la condizione di stabilità | a(xm , tn )λ | ≤ 1 per tutti i punti della
griglia (xm , tn ) nel dominio computazionale.
Ordine di Accuratezza e Schema di Lax-Wendroff
Fino a questo momento abbiamo considerato gli schemi solamente in base alla
loro convergenza o meno, ossia in ultima analisi in base alla loro consistenza e
stabilità. Tuttavia dal punto di vista numerico è altrettanto importante stabilire la
velocità di convergenza degli schemi. Questo sarà fatto come conseguenza della
nozione di accuratezza dello schema che definiamo qui di seguito.
Definizione 2.12
Uno schema consistente con l’equazione (2.34) si dice accurato di ordine q in
spazio e di ordine p in tempo, in breve accurato di ordine (q, p), se:
| T (x, t) |= O(kp ) + O(hq )
86
se (h, k) → 0
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
per ogni (x, t) nel dominio di interesse. Nel caso in cui k = K(h) diciamo che lo
schema è di ordine r se:
| T (x, t) |= O(hr )
se h → 0.
In pratica l’accuratezza è una nozione più forte di consistenza, che corrisponde
ad un errore di troncatura solamente dell’ordine di o(1).
Cominciamo adesso a verificare l’ordine di accuratezza di alcuni degli schemi
conosciuti. Lo schema di Lax-Friedrichs dà uno sviluppo del tipo:
1
1
1
T = kutt − k−1 h2 uxx + ah2 uxxx + O(h4 + k−1 h4 + k2 ).
2
2
6
Fissando k = λh per una costante λ fissata, vediamo che lo schema è di ordine
1.
Analogamente abbiamo lo schema upwind con a < 0 che dà:
1
1
T = kutt + ahuxx + O(k2 ) + O(h2 ),
2
2
corrispondente ad uno schema di ordine (1, 1) o, fissando k = λh per una costante
λ fissata, ancora uno schema di ordine 1.
Più in generale vale la seguente proprietà:
Teorema 2.5
Uno schema lineare monotono nella forma (2.60) è al più del primo ordine, a
meno che non sia lo schema banale vm,n+1 = vm,n con λ | a |= 1.
Si prenda la forma generale (2.66) di uno schema a tre punti consistente per
l’equazione (2.34). Uno schema di questo tipo può essere di ordine (2, 2), oppure
per λ = k/h fissato, di ordine 2, se e solo se vale la condizione:
q = (aλ)2 .
(2.82)
Questo significa che esiste un solo schema lineare a tre punti consistente che sia
di ordine 2. Questo schema, chiamato schema di Lax-Wendroff, è stato proposto
per la prima volta nel 1960 e si scrive:
vm,n+1 = vm,n −
aλ
a2 λ2
(vm+1,n −vm−1,n )+
(vm+1,n −2vm,n +vm−1,n ). (2.83)
2
2
87
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
La sua viscosità numerica è la più bassa possibile per lasciare l’equazione
equivalente (2.67) ancora parabolica. Chiaramente, poichè la condizione (2.70)
non è verificata, lo schema non è monotono.
Eseguiamo ora l’analisi di stabilità dello schema di Lax-Wendroff. Il suo fattore
di amplificazione si calcola facilmente ed è dato da
a2 λ2 iχ
aλ iχ
−iχ
−iχ
+
=
g(χ) = 1 −
e −e
e −2+e
2
2
χ
2
2 2
= 1 − iaλ sin(χ) − 2a λ sin
2
per cui
χ
2
Abbiamo quindi che g(χ) ≤ 1 se e soltanto se | aλ |≤ 1. Lo schema risulta quindi
| g |2 = 1 − 4a2 λ2 (1 − a2 λ2 ) sin4
L2 -stabile. In generale vale anzi la seguente caratterizzazione degli schemi a tre
punti consistenti con l’equazione (2.34).
Definizione 2.13
Uno schema esplicito a tre punti consistente con l’equazione (2.34), nella forma
viscosa (2.66), è L2 -stabile se e solo se
(λa)2 ≤ q ≤ 1
(2.84)
Vediamo quindi che la stabilità L2 è meno restrittiva della stabilità nella norma
del massimo e permette quindi di trovare almeno uno schema del secondo ordine
stabile. Vediamo come si comporta lo schema di Lax-Wendroff nei confronti per
esempio dello schema upwind. Si prenda l’equazione (2.34) con il dato iniziale
uguale alla funzione caratteristica dell’intervallo (0.2, 0.4). La figura (2.19) mostra il risultato per lo schema upwind, mentre la figura (2.20) per lo schema di
Lax-Wendroff. Nello schema monotono si nota uno smussamento degli spigoli e
una piccola riduzione dell’altezza, mentre lo schema di Lax-Wendroff mantiene
l’altezza dei bordi molto meglio, producendo tuttavia delle piccole oscillazioni.
Riducendo h si vede un sostanziale miglioramento, anche se le oscillazioni persistono. Questo è dovuto al fatto che la nostra analisi dell’errore è valida solo
88
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
per soluzioni abbastanza regolari. Si veda infatti come si comporta lo schema di
Lax-Wendroff con un dato molto più regolare (di fatto ∈ C∞ ) nella figura (2.21).
In pratica, l’instabilità, essendo legata alla crescita delle frequenze elevate, appare prima per dati irregolari, come si vede nelle figure (2.20) e (2.21). Si osservi
anche che in generale questa instabilità è di fatto un fenomeno locale. Per esempio nella figura (2.2) si vede che l’instabilità nasce essenzialmente nel punto di
discontinuità della derivata e solo dopo si propaga a tutta la soluzione. Questo
permette di distinguere tra gli effetti di un errore di programmazione, che spesso
sono globali, e l’instabilità numerica dello schema.
89
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Figura 2.19: Trasporto lineare con il metodo upwind [30]
90
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Figura 2.20: Trasporto lineare con il metodo di Lax-Wendroff [30]
91
2.5. METODI DI CALCOLO NUMERICI ALLE DIFFERENZE FINITE
Carlo Caligaris, Iacopo Salvarani
Figura 2.21: Trasporto lineare (dato regolare) con il metodo di Lax-Wendroff [30]
92
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Accenniamo infine alla relazione che intercorre tra uno schema di ordine r e
la sua accuratezza. Vale il seguente risultato, e in particolare se ne può dimostrare
uno analogo nel caso parabolico e più generalmente per tutti i problemi di Cauchy
ben posti in L2 .
Teorema 2.6
Sia dato uno schema stabile per l’equazione (2.34) che sia accurato di ordine
r ≥ 1. Allora esiste un indice intero non negativo s ≥ r tale che se u0 ∈ Hs ,
per ogni fissato T > 0 esiste una costante CT tale che
|| un − vn ||2,h ≤ CT hr || u0 ||Hs
per ogni n tale che 0 ≤ kn ≤ T
In generale per i metodi iperbolici si trova s = r + 1 e per quelli parabolici
s = r + 2. [30]
93
2.6. IL MODELLO
2.6
2.6.1
Carlo Caligaris, Iacopo Salvarani
Il Modello
La Scelta del Modello
Dopo una attenta valutazione delle possibili equazioni che possono meglio rappresentare il comportamento della tratta autostradale di nostra competenza si è
scelto di usufruire, nell’implementazione del software, delle considerazioni modellistiche suggerite da Markos Papageorgiou, ingegnere e ricercatore matematico
greco che a lungo si è occupato di problemi di controllo del traffico e ha fornito
un metodo per utilizzare equazioni che rappresentano un modello macroscopico
di traffico veicolare.
Come già illustrato il tratto di competenza appartiene ad una categoria ben
definita: si tratta, infatti, di una autostrada multicorsia con numerose rampe di ingresso e uscita. Questo chiaramente comporta una ulteriore complicazione della
trattazione ma permette di adattare adeguatamente un modello di tipo macroscopico quale quello suggerito da Papageorgiou. è pertanto possibile considerare il
comportamento del flusso di traffico come quello di un fluido avente determinate
grandezze che lo caratterizzano.
Variabili di Stato del Modello
Riprendiamo le definizioni tipiche dei modelli macroscopici per il traffico:
Definizione 2.14
Si definisca la densità locale dei veicoli alla sezione x al tempo t
ρ(x, t)
come la grandezza che dà un’informazione su quanti veicoli stanno impegnando
la carreggiata. È misurata in veicoli per chilometro.
Definizione 2.15
Si definisca la velocità media dei veicoli alla sezione x al tempo t
v(x, t)
94
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
come la media delle velocità tenute dai veicoli nella sezione e al tempo indicato.
È misurata in chilometri orari.
Definizione 2.16
Si definisca il flusso veicolare
q(x, t)
come la grandezza che dà un’informazione su quanti veicoli attraversano una
sezione di carreggiata in un intervallo di tempo. È misurato in veicoli all’ora.
Agendo in maniera ricorsiva su queste variabili di stato è possibile farle evolvere
in maniera congruente al comportamento del traffico veicolare e da questo ottenere
una previsione sull’effettivo andamento futuro del traffico autostradale.
Le ulteriori variabili che verranno ad essere definite per necessità rappresentativa
del modello verranno illustrate e definite in seguito quando saranno introdotte nel
modello.
2.6.2
L’equazione fondamentale di Papageorgiou
Come già è stato illustrato una delle proprietà fondamentali dei modelli macroscopici è proprio la maniera in cui le variabili che lo descrivono interagiscono e
sono relazionate fra loro, e questo è tanto più vero nei modelli macroscopici ove le
variabili tentano di rappresentare non i singoli elementi ma l’insieme degli stessi.
Sicuramente è sempre valida la relazione
q(x, t) = ρ(x, t) · v(x, t)
ma non possiamo essere altrettanto sicuri della bontà della curva caratteristica velocità-densità che era stata definita partendo da ipotesi di omogeneità e condizione
stazionaria che sicuramente non sono proprie del tratto stradale in questione.
Abbiamo utilizzato una delle relazioni tra velocità e densità illustrate in Tabella 2.1, cioè quella proposta dallo stesso Papageorgiou, che chiameremo diagramma fondamentale o relazione fondamentale:
m
ρ l
vρ = vf 1 −
ρmax
95
(2.85)
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
dove l e m sono parametri determinabili in via sperimentale dall’osservazione di
casi reali. In altre parole è possibile raccogliere una grande quantità di dati sulle
coppie (ρ, v) per ogni singola sezione in cui è divisa l’autostrada. Tutti i dati puntuali raccolti vengono posti su un piano cartesiano (ρ, v). A tal punto mantenendo
la formulazione di Papageorgiou si può cercare la curva che meglio segue il comportamento della distribuzione dei punti semplicemente modificando i valori degli
esponenti l e m.
Applicando un qualsiasi algoritmo (ad esempio nel nostro caso abbiamo utilizzato
un semplice metodo di programmazione lineare volto alla minimizzazione della
somma dei quadrati delle distanze fra punti reali e punti della curva caratteristica)
è possibile cercare la curva caratterizzata dalla migliore approssimazione e fissare
i valori dei due esponenti.
I principali vantaggi della relazione fondamentale sono due. Innanzitutto è caratterizzata da una grande capacità descrittiva del comportamento dell’autostrada;
infatti possiamo definire una coppia di esponenti (l, m) per ogni singola sezione
in cui abbiamo suddiviso il percorso globale. Questo è molto importante poichè
ćhiaro che la relazione fra densità e velocità è influenzata soprattutto dalle caratteristiche della sezione stradale, che possono variare anche di parecchio anche su
uno stesso tronco autostradale.
In secondo luogo lo stesso Papageorgiou suggerisce i range entro i quali ricercare
i valori degli esponenti l e m, per cui la ricerca stessa dei valori ha una complessità computazionale relativamente bassa (lo stesso problema di minimizzazione
dei quadrati ne risulta molto semplificato). Si consiglia di tenere:
0, 5 ≤ m ≤ 2, 5
e
2 ≤ l ≤ 4.
Da ciò derivano le nuove curve caratteristiche velocità-densità e flusso-densità,
una diversa per ogni singola sezione autostradale.
96
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Figura 2.22: Curva Caratteristica velocità-densità
Figura 2.23: Curva Caratteristica flusso-densità
2.6.3
L’Equazione del Modello
Consideriamo nuovamente il caso in studio; si tratta come già detto di una lunga
autostrada multicorsia con numerose stazioni di ingresso e di uscita. L’obiettivo è
sviluppare un modello matematico del flusso di traffico che descriva l’evoluzione
97
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
dinamica delle variabili, che abbiamo definito per descrivere il comportamento
del traffico, lungo l’autostrada.
Come illustrato in precedenza osserviamo il flusso veicolare come un un fluido
avente un certo valore di densità e flusso. Da ciò possiamo desumere l’equazione
di conservazione della materia che già prima abbiamo trattato. La differenza è che
però in questo caso l’equazione:
∂ρ(x, t) ∂q(x, t)
+
=0
∂t
∂x
(2.86)
non è sufficiente e descrivere il comportamento del modello.
In effetti, mantenendo il paragone fra comportamento del traffico e comportamento del fluido, appare chiaro che nel nostro caso il canale di trasporto del fluido
non è assolutamente un canale chiuso, proprio a causa dei caselli di entrata e uscita da cui i veicoli possono liberamente entrare e uscire. Ciò fa sı̀ che l’equazione
che avevamo trattano analiticamente non sia più valida e impone la correzione del
modello.
Definizione 2.17
Definiamo il flusso di veicoli entrante alla sezione x e al tempo t
r(x, t)
come la grandezza che dà un’informazione su quanti veicoli entrino nell’unità di
tempo alla sezione e al tempo indicati. Si misura in veicoli per ora.
Definizione 2.18
Definiamo il flusso di veicoli uscente dalla sezione x e al tempo t
s(x, t)
come la grandezza che dà un’informazione su quanti veicoli escano nell’unità di
tempo alla sezione e al tempo indicati. Si misura in veicoli per ora.
Introdotti questi fondamentali elementi possiamo riscrivere l’equazione che regola
il modello.
∂ρ ∂q
+
=r−s
∂t
∂x
98
(2.87)
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Chiaramente il significato dell’equazione è identico, semplicemente viene anche
considerata la possibilità che alcuni veicoli entrino o escano dall’autostrada.
Trattandosi di un’equazione differenziale alle derivate parziali simile a quella vista nella trattazione analitica del problema del traffico, la sua risoluzione comporta
le medesime difficoltà che erano state riscontrate in precedenza; inoltre troviamo
due complicazioni in più che introducono ulteriore complessità alla risoluzione:
i due termini relativi agli ingressi e alle uscite dei veicoli e il fatto che la funzione v(ρ) non segue più la legge lineare (2.7) ma la relazione fondamentale di
Papageorgiou (2.85). Per farla breve sarebbe impensabile cercare di ottenere una
risoluzione analitica del problema.
Pertanto per poter avere una soluzione dell’equazione conviene passare attraverso
una soluzione numerica del problema sfruttando i metodi di risoluzione alle differenze finite.
Come è stato illustrato in precedenza l’idea di base dei metodi alle differenze finite
è quella di sostituire, nell’equazione da approssimare, ad ogni derivata un rapporto
incrementale finito. Se ad esempio ci troviamo a trattare un fenomeno che avviene
nel tempo e in una sola dimensione spaziale (ed è proprio questo il nostro caso),
ciò si ottiene definendo una griglia di punti nel piano cartesiano (x, t). Fissati un
passo di discretizzazione spaziale ∆x = h ed un passo di discretizzazione temporale ∆t = k, la griglia sarà data dai punti nodali del piano (xm , tn ) = (mh, nk),
per valori interi arbitrari m e n. Soluzioni di questo genere sono molto facilmente
implementabili e programmabili su calcolatore.
Si pone però a questo punto un problema dovuto principalmente alla natura fisica del problema. Scegliere un passo di discretizzazione ∆t per il tempo è cosa
concettualmente abbastanza semplice: se ci si dimentica per un attimo di tutti i
problemi relativi alla convergenza e alla stabilità delle soluzioni alle differenze
finite, basta scegliere una porzione di tempo non troppo piccola, dal momento
che appesantirebbe eccessivamente l’elaborazione, e non troppo grande, poiché
il problema potrebbe perdere capacità descrittiva. Molto più complicato sarebbe
scegliere un passo di discretizzazione spaziale da applicare alla lunghezza dell’autostrada. Per scegliere un ∆x sensato bisognerebbe tenere conto di numerosi
99
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
fattori: la lunghezza dei veicoli, la lunghezza dell’intera autostrada, la lunghezza
delle varie tratte fra una stazione di entrata/uscita e quella successiva.
Papageorgiou è riuscito a rispondere a questo problema adattando i metodi di risoluzione alle differenze finite al problema; ciò che ha fatto è stato imporre una
discretizzazione a passo costante sulla dimensione temporale (ovvero le variabili
di stato vengono calcolate solo per gli istanti nk). Quindi ha suddiviso il percorso
autostradale in numerose tratte, ognuna delle quali avesse al massimo una singola stazione di entrata e una singola stazione di uscita; infine lungo la dimensione
spaziale ha applicato una discretizzazione a passo variabile, in cui la lunghezza
del passo è uguale alla lunghezza delle singole tratte (ovvero le variabili di stato
sono calcolate in modo da dare un valore per ognuna delle tratte).
Quello che avviene in pratica è che ad ogni ricorsione del metodo numerico il modello avanza di un istante temporale e, per ogni singola tratta, vengono calcolati
i valori delle variabili di stato. Per effettuare questo calcolo vengono utilizzati i
valori delle variabili all’istante precedente riferiti a quella medesima tratta e alle
due tratte adiacenti (la precedente e la successiva).
2.6.4
Le Equazioni di Papageorgiou
L’equazione della densità
L’equazione alle derivate parziali della densità diventa l’equazione discretizzata:
ρi (k + 1) = ρi (k) +
T qi−1 (k) − qi (k) + ri (k) − si (k)
∆i
(2.88)
dove l’indice i è quello relativo alle tratte, mentre l’indice k è quello relativo agli
istanti temporali. T è il passo di discretizzazione temporale; pertanto ρi (k + 1) è il
valore della densità sulla tratta i-esima al passo di discretizzazione (k + 1)-esimo,
ovvero al tempo T · (k + 1). ∆i è invece la lunghezza della i-esima tratta.
qi (k) è il flusso veicolare in uscita dalla tratta i-esima al passo di discretizzazione
(k)-esimo; analogamente qi−1 (k) è il flusso veicolare in uscita al medesimo passo
di discretizzazione ma relativo alla tratta (i − 1)-esima, che è quella immediatamente prima; pertanto trattasi del flusso in entrata per la tratta i-esima.
100
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
ri (k) è il flusso veicolare entrante proveniente dalla stazione di ingresso nella tratta i-esima al passo di discretizzazione (k)-esimo; si (k) è il flusso veicolare uscente attraverso la stazione di uscita nella tratta i-esima al passo di discretizzazione
(k)-esimo.
Figura 2.24: Flussi veicolari relativi alla tratta i-esima
Significato dell’equazione della densità
L’equazione della densità ha un significato fisico molto chiaro: il termine
qi−1 (k) − qi (k) + ri (k) − si (k)
costituisce la somma algebrica dei flussi che interagiscono con la tratta i-esima
immettendo in essa veicoli e permettendo l’uscita degli stessi. Tale termine pertanto dà come risultante il differenziale nel tempo del numero dei veicoli (potremmo definirlo un flusso incrementale).
Moltiplicato tale valore per il periodo di discretizzazione del tempo
T qi−1 (k) − qi (k) + ri (k) − si (k)
otteniamo il differenziale effettivo di veicoli che si è verificato nel passo temporale
per quella tratta; volendolo vedere espresso dall’analisi dimensionale
numero veicoli
= [numero veicoli]
[tempo] ·
tempo
101
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
Dividendo poi il numero incrementale di veicoli per la lunghezza della tratta
T qi−1 (k) − qi (k) + ri (k) − si (k)
∆i
si ottiene il differenziale di densità per quella tratta
numero veicoli
= [densitá]
lunghezza
il quale va sommato al valore della densità al passo di discretizzazione temporale
precedente per ottenere il nuovo valore di densità.
ρi (k) +
T qi−1 (k) − qi (k) + ri (k) − si (k)
∆i
[densitá] + [densitá] = [densitá]
Convergenza della densità
Come appena mostrato l’equazione discretizzata della densità proposta da Papageorgiou sembra portare a riprodurre esattamente il comportamento dell’andamento di ρ(x, t). Non dobbiamo però dimenticare che questa affermazione è vera
solo se la discretizzazione è tale da assicurare la convergenza.
Ora però appare chiaro che tutta la trattazione introdotta nella sezione teorica
è valida per i metodi alle differenze finite di risoluzione di equazioni alle derivate parziali veri e propri. In realtà l’equazione discretizzata di Papageorgiou è
un adattamento dell’idea che regola i metodi alle differenze finite al principio di
conservazione della materia che porta ad un modello macroscopico del comportamento del traffico. Inoltre come già detto la discretizzazione stessa della variabile
spaziale non segue la trattazione dei metodi alle differenze finite ma si piega alla
necessità della rappresentazione delle tratte autostradali.
Detto questo proveremo ugualmente ad effettuare alcune considerazioni sulla convergenza delle equazioni di Papageorgiou, ma sottolineando che tale trattazione
non ha alcuna pretesa di rigore matematico. Semplicemente è nostro desiderio
mostrare che il metodo del matematico greco, che ha offerto in già numerosissime
applicazioni ottimi risultati, poggia le sue fondamenta sulla teoria matematica.
102
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Proviamo pertanto a controllare se è verificata la condizione di CFL (2.68),
che è condizione necessaria per la stabilità e la convergenza:
| aλ | ≤ 1;
applichiamola all’equazione
ρt + vf (1 − 2
ρ
ρmax
) ρx = 0.
Già ci troviamo davanti ad alcuni problemi: la condizione di CFL si riferisce a
equazioni in cui il termine a sia indipendente dalla funzione incognita, e quindi
soltanto a(x, t); nel nostro caso invece a dipende anche da ρ. Inoltre alcuni dei
termini costanti che determinano il valore di a nel nostro caso non sono costanti
ma variano da tratta a tratta. Infine λ, ovvero il rapporto fra i passi di discretizzazione, dovrebbe essere costante, ma come ben sappiamo il passo di discretizzazione sulla coordinata spaziale è variabile e corrisponde alle lunghezze delle tratta
autostradali.
Proviamo pertanto a porci nella condizione peggiore possibile, ovvero lasciamo
che | aλ | resti in funzione di ρ e assumiamo che i vari elementi (che dovrebbero
essere costanti ma nel nostro caso sono variabili) che concorrono a determinare il
suo valore siano sfavorevoli e quindi tali da massimizzare | aλ |.
Quindi poniamo:
· vf = 130 km/h;
· ρmax=150 auto/km ;
· ∆t = 0.0167 h;
· ∆x = 2.4 km.
ed otteniamo il grafico di Figura 2.25.
103
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
Figura 2.25: | aλ | in funzione della densità
Possiamo notare che la condizione di CFL è verificata fino a valori di densità
di circa 160 veicoli per km. Questo è già abbastanza positivo; infatti i valori massimi di densità si aggirano di solito intorno a 180 veicoli per km, questo significa
che la stabilità e la convergenza sono plausibili per quasi la totalità delle situazioni di traffico, senza contare che ci si era posti volutamente in una condizione
fortemente negativa che non si realizza mai.
Proviamo adesso a porre delle condizioni comunque sfavorevoli alla verifica della
condizione di CFL, ma il cui accadimento è possibile; per la precisione ricerchiamo la condizione che si può realizzare col valore | aλ | maggiore.
Quindi poniamo:
· vf = 130 km/h;
· ρmax=180 auto/km ;
· ∆t = 0.0167 h;
· ∆x = 2.6 km.
104
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
ed otteniamo il grafico di Figura 2.26
Figura 2.26: | aλ | in funzione della densità
E osserviamo che la condizione di CFL decade per valori di densità di circa
200 veicoli per km. Come detto pocanzi i valori massimi di densità che si riscontrano raramente superano i 180 veicoli per km, pertanto si può dire che anche nella
situazione più sfavorevole la condizione di CFL è verificata per qualsiasi condizione del traffico veicolare.
Teniamo a sottolineare per l’ultima volta che questo non equivale a sostenere la
convergenza di un metodo alle differenze finite, ma certamente si può dire che non
solo i risultati sperimentali, ma anche la teoria matematica confermano la bontà
del modello di Papageorgiou.
L’equazione della velocità
Una volta che per il passo di discretizzazione k-esimo è nota la distribuzione di ρ
su tutte le tratte i per conoscere la distribuzione delle velocità allo stesso istante
si potrebbe semplicemente utilizzare la relazione fondamentale v = V(ρ). L’e105
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
sperienza convinse però Papageorgiou a non operare semplicemente in questa maniera. Infatti la relazione fondamentale non tiene conto del tempo che impiega il
traffico ad adeguare la propria velocità media alla nuova situazione di densità. Si
potrebbe dire che il traffico agisce con un certo ritardo, e, pertanto, è opportuno
ipotizzare:
v(x, t + τ) = V ρ(x, t)
(2.89)
ove τ è appunto il ritardo di risposta.
Evidentemente passando alla discretizzazione dell’equazione vale la relazione:
v(x, t + τ) = v(x, t) + τ
dv(x, t)
dt
(2.90)
e perciò
v̇ =
1
1
v(x, t + τ) − v(x, t) = V(ρ(x, t)) − v(x, t) .
τ
τ
(2.91)
La relazione (2.91) è alla base dell’equazione della velocità che Papageorgiou
inserisce nel suo modello. Alla base poichè oltre a tale termine differenziale, in
seguito a prove sperimentali, sono aggiunti altri due termini correttivi che cercano
di rappresentare l’interazione con il comportamento delle due tratte adiacenti.
T
T
vi (k + 1) = vi (k) + V(ρi (k)) − vi (k) + vi (k) vi−1 (k) − vi (k) + (2.92)
τ
∆i
νT ρi+1 (k) − ρi (k)
.
−
τ∆i ρi (k) + χ
Significato dell’equazione della velocità
L’equazione delle velocità merita particolare attenzione. Sulla tratta generica iesima la velocità al passo temporale (k + 1)-esimo è calcolato come la velocità
sulla medesima tratta al passo temporale precedente variata da tre fattori incrementali. Il primo dei tre termini come si è visto proviene dall’equazione discretizzata della velocità nel continuo; gli altri due termini sono stati ritenuti significativi
da Papageorgiou a seguito delle prove sperimentali che ha effettuato.
106
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
Il primo termine
T
V(ρi (k)) − vi (k)
τ
dà un’indicazione su quanto può variare la velocità dal suo valore al passo temporale precedente k-esimo rispetto ad valore massimo teorico stabilito dall’equazione fondamentale di Papageorgiou.
Se al passo temporale k-esimo la velocità sulla tratta i-esima valeva
vi (k)
e la densità dei veicoli valeva
ρi (k)
e per V(ρ) si indica la relazione fondamentale di Papageorgiou, allora la velocità
potrà variare all’istante (k + 1)-esimo di un valore incrementale dato proprio da
V(ρi (k)) − vi (k) .
La rapidità con cui la velocità accetta tale variazione dipende dal coefficiente τ
1
V(ρi (k)) − vi (k)
τ
che rappresenta il ritardo che il traffico impiega per adeguarsi, data una densità veicolare, al valore di velocità medio dato dalla relazione fondamentale di
Papageorgiou per quella densità.
Il secondo termine
T
vi (k) vi−1 (k) − vi (k)
∆i
dà un’indicazione su quanto può variare la velocità sulla tratta i-esima a causa
del diverso valore di velocità che si verifica sulla tratta precedente. Si presuppone
infatti che i veicoli entranti in una tratta mantengano la velocità che avevavno
sulla tratta precedente (ciò è valido chiaramente se la densità rimane costante, e
infatti ρ non compare nel secondo termine). Con tale termine si traspone tale
comportamento nel modello.
107
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
Se al passo temporale k-esimo le velocità sulle tratte (i − 1)-esima e i-esima
sono rispettivamente:
vi−1 (k)
e
vi (k)
allora
vi−1 (k) − vi (k)
indica di quanto può variare la velocità a causa dell’effetto descritto. La rapidità
con cui la velocità accetta la variazione dipende da quanto celermente i veicoli con
la velocità relativa al passo temporale precedente lasciano la tratta in questione, e
quindi
T
vi (k) vi−1 (k) − vi (k)
∆i
dipende dalla lunghezza della tratta e dalla velocità precedente dei veicoli.
L’ultimo termine
νT ρi+1 (k) − ρi (k)
−
τ∆i ρi (k) + χ
dà un’informazione su come si evolve la velocità in relazione alla diversa densità
sulla tratta successiva. Una densità di traffico sulla tratta successiva
ρi+1 (k)
molto diversa, in termini relativi, rispetto alla densità sulla tratta per cui si sta
calcolando la velocità
ρi+1 (k) − ρi (k)
[ρi (k)]
provoca rapidamente un effetto all’indietro di variazione della velocità dovuto al
fenomeno delle back waves già incontrato nella trattazione dei modelli microscopici. Infatti, come si era visto, in una fila di veicoli il comportamento della vettura
di testa viene seguito, ritardato nel tempo e amplificato nell’ampiezza, dalle vetture che seguono.
108
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
La rapidità con cui la velocità varia a causa di tale fenomeno dipende dalla lunghezza della tratta, dalla costante di ritardo del traffico τ, dalla costante ν che dà
una misura della velocità di propagazione all’indietro dell’onda, e dalla costante
χ che attenua la misura della differenza relativa fra i valori delle densità delle due
tratte contigue
ν ρi+1 (k) − ρi (k)
.
−
τ∆i ρi (k) + χ
L’equazione del flusso
L’equazione del flusso permette di calcolare il flusso veicolare; essendo noti per
la tratta i-esima al passo temporale k-esimo il valore della densità dei veicoli
ρi (k)
ed il valore della velocità media dei veicoli
vi (k)
entrambi calcolati utilizzando le due precedenti equazioni, il flusso relativo alla
medesima tratta sarà:
qi (k) = vi (k) · ρi (k).
2.6.5
(2.93)
Inizializzazione del modello
L’inizializzazione del modello è sicuramente una delle fasi fondamentali per il
funzionamento della simulazione. Infatti da un diverso tipo di inizializzazione
dipende fortemente il tipo di risposta che otterremo dal modello.
Ipotizziamo infatti di trascurare completamente l’inizializzazione delle variabili di stato di densità dei veicoli, velocità media e flusso veicolare. Questo significa che la simulazione parte con valori casuali, oppure nulli, oppure, per non ritrovarsi in una situazione iniziale troppo peculiare, con i valori relativi a condizioni
di traffico regolare.
109
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
Ovviamente i valori immediatamente successivi all’istante di partenza della
simulazione daranno risultati non congruenti con la realtà. Però, lasciando continuare la simulazione per un tempo (simulato, ovviamente) sufficientemente lungo,
le variabili di ingresso e i parametri inerenti all’autostrada, se sono stati stimati
con buona accuratezza, porteranno l’andamento della simulazione verso risultati
coerenti col reale comportamento del traffico.
Da questo si evince che se il modello viene utilizzato per uno scopo prettamente simulativo, l’inizializzazione delle variabili di stato riveste un ruolo altamente
marginale e addirittura è un passaggio che può essere sacrificato.
Naturalmente è altrettanto vero l’opposto: se il modello viene utilizzato come strumento previsionale on-line e real-time, la corretta inizializzazione delle variabili
di stato acquista un’importanza addirittura drastica. è evidente che se l’intenzione
è di avere una previsione per gli N passi di discretizzazione temporale successivi,
con N abbastanza piccolo, la bontà della stima dipende quasi esclusivamente dalla
bontà dell’inizializzazione delle variabili di stato.
Il problema in tal caso diventa, oltre che sistemistico, anche sensoristico; spesso
infatti è difficile poter avere buone misurazioni in tempo reale della velocità, del
flusso veicolare e soprattutto della densità delle vetture.
In tal caso addirittura diventa necessario trovare un modo per stimare in maniera
adeguata anche le variabili di ingresso del sistema. Infatti se l’intento del modello
è quello previsionale, l’ingresso del sistema sarà costituito dai flussi veicolari in
ingresso e in uscita dalle stazioni, relativi ai passi di discretizzazione temporale
successivi, che in quanto futuri sono ignoti. Per ottenere buoni risultati dalla simulazione previsionale occorre che l’inizializzazione delle variabili di ingresso
all’inizio della simulazione sia il più precisa possibile, e che la stima dei valori
futuri sia accurata e coerente con il successivo verificarsi nella realtà.
2.6.6
Pregi e difetti del modello
I principali vantaggi del modello sono i seguenti:
• Capacità di modellare sistemi assai vasti. Come si è visto i sistemi macroscopici come quello di Papageorgiou sono i più indicati per affrontare situa110
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
zioni complesse o molto vaste sia per lunghezza della strada, sia per numero
di veicoli in gioco. In una situazione autostradale un modello microscopico si troverebbe nell’assoluta difficoltà di gestire l’eccessivo numero di
variabili di cui necessita.
• Bontà dei risultati una volta ben tarati i parametri. Applicazioni sperimentali (molte di queste condotte dallo stesso padre del modello Papageorgiou) dimostrano che, una volta che tutti i parametri che descrivono
la tratta autostradale sono stimati in maniera da rendere perfettamente il
comnportamento reale, i risultati delle simulazioni sono sorprendentemente
validi.
• Maneggevolezza dal punto di vista informatico. Come si può facilmente
notare le equazioni di Papageorgiou sono molto semplici da implementare
in maniera ricorsiva tramite un qualsiasi linguaggio di programmazione.
I dati in uscita dal modello sono altrettanto maneggevoli, in quanto sono
in effetti facilmente rappresentabili in forma matriciale. Il che permette
una grande semplicità di aggregazione secondo la necessità di chi vuole
usufruire dei dati in uscita.
• Adattabilità perfetta ai tipi di autostrada compatibili. Le equazioni di Papageorgiou sono facilmente applicabili a qualsiasi tipo di autostrada che
rappresenti un sistema chiuso (ovvero ove si possono avere informazione
su tutti gli elementi che entrano ed escono dal sistema). Per applicare le
equazioni ad un nuovo tratto sarà sufficiente modificare il sistema di acquisizione dei dati iniziali, delle variabili di ingresso e i parametri relativi
alle tratte autostradali; le equazioni di Papageorgiou restano perfettamente
immutate.
I pricipali svantaggi del modello sono i seguenti:
• Difficoltà di settaggio dei parametri fisici e di simulazione. Per poter settare
tutti i paraetri relativi alle varie tratte occorre effettuare, come già illustrato,
111
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
una serie di misurazioni di prova. Pertanto è necessario consultare un archivio di dati storici oppure, se non si è in possesso di dati storici, sfruttare
una sensoristica distribuita capillarmente che permetta di effettuare le misurazioni che occorrono.
Quando capita che manchino entrambe le soluzioni occorre stimare i parametri secondo il buon senso per poi affinarli effettuando continue simulazioni e valutandone la bontà.
• Necessità di dati per il settaggio iniziale e difficile reperibilità dei suddetti. Come spiegato precedentemente, se il modello viene utilizzato in ottica
previsionale, e non simulativa, il problema di una corretta inizializzazione
diventa di fondamentale importanza. Purtroppo non sempre è facile effettuare rilevamenti e misurazioni del fenomeno reale per inizializzare le variabili di stato. Specialmente in ambito autostradale la sensoristica spesso
difetta in quantità e qualità e il rischio di inficiare in maniera determinante
la previsione con dati iniziali poco accurati diventa tangibile.
• Impossibilità di prevedere nel futuro le variabili di ingresso. Un grosso
limite del modello di Papageorgiou quando viene utilizzato in ottica previsionale è l’impossibilità di avere i valori esatti per le variabili di ingresso.
Infatti, ad eccezione dell’istante 0 in cui parte la simulazione ed è possibile
acquisire i dati tramite misurazione sensoristica, i valori futuri dei flussi in
ingresso e in uscita relativi alle stazioni non sono noti nè fissi. Chiaramente
nell’arco della giornata i flussi veicolari ai caselli seguono un comportamento abbastanza standard, che può essere stimato in maniera anche abbastanza
precisa, se si è in possesso dei dati storici relativi agli ingressi e alle uscite.
Ad ogni modo la previsione di questi valori, per accurata che sia, raramente
centrerà perfettamente il valore reale, e di sicuro non potrà prevedere situazioni occasionali (che sovente si manifestano).
L’unico modo sensato di dare una soluzione accettabile a questo problema è
quello di integrare le informazioni sul comportamento standard delle variabili di ingresso con il dato reale misurato all’istante iniziale di simulazione
112
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 2. STRUMENTI MATEMATICI
e ottenere da questi due elementi la stima più corretta possibile dei valori
futuri.
• Necessità di compatibilità con la tipologia di autostrada. Nella trattazione
analitica del problema si era parlato di equazione di conservazione della
materia, che è l’equazione che regola il sistema, mettendo in relazione i
flussi e le densità. Tale equazione presuppone che la tratta autostradale in
esame sia un sistema chiuso, ovvero che si possa avere l’informazione dettagliata su tutti gli elementi che varcano il confine del sistema, entrandone o
uscendone. Nelle strade extraurbane dove non sia possibile misurare i flussi
di ingresso o uscita relativi alle stazioni, oppure ove il flusso entrante nella
prima tratta o quello uscente dall’ultima non sono nè noti nè misurabili è impossibile applicare il modello di Papageorgiou, in quanto alcuni dei termini
delle equazioni sono mancanti, e se i loro valori non sono trascurabili chiaramente la previsione delle variabili di stato risulta ampiamente distorta. Per
nostra fortuna le autostrade, essendo munite dei sistemi di pagamento del
pedaggio agli ingressi e alle uscite, raramente sono caratterizzate da questo
tipo di problemi.
[31]
113
2.6. IL MODELLO
Carlo Caligaris, Iacopo Salvarani
114
Capitolo 3
Strumenti Informatici Utilizzati
Figura 3.1: Boston Traffic [57]
115
3.1. JAVA
3.1
3.1.1
Carlo Caligaris, Iacopo Salvarani
Java
Introduzione al Linguaggio di Programmazione Java
Quasi tutto il software da noi prodotto è stato scritto in Java. Java è un linguaggio
di programmazione molto potente ed è diventato lo standard di riferimento per
l’implementazione di applicazioni basate su Internet e per lo sviluppo di software
per dispositivi che comunicano attraverso una rete. Gran parte della nuova tecnologia si basa su questo linguaggio: in particolare dispositivi wireless come i
telefoni cellulari comunicano tramite la cosiddetta wireless Internet usando applicazioni di rete basate su Java. Java è di fatto entrato prepotentemente nel terreno
delle applicazioni di larga scala; non è più un linguaggio utilizzato per rendere
vive le pagine web, ma è diventato il linguaggio preferito di riferimento di molte
aziende ed organizzazioni. [10]
Figura 3.2: Gli Aspetti di Java [49]
3.1.2
Linguaggi Macchina, Assembly e di Alto Livello
I programmatori possono scrivere le istruzioni in vari linguaggi di programmazione. Alcuni linguaggi vengono compresi direttamente dai computer, mentre
altri richiedono dei passaggi intermedi di traduzione. Allo stato attuale vengono
116
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
utilizzati centinaia di linguaggi di programmazione diversi, che possono essere
raggruppati in tre grandi categorie:
1. linguaggi macchina;
2. linguaggi assembly;
3. linguaggi di alto livello.
Un computer è in grado di capire direttamente soltanto il proprio linguaggio macchina, che deve essere considerato come il suo linguaggio naturale, in quanto è
definito dalla progettazione dell’hardware. In genere i linguaggi macchina consistono di stringhe di numeri (che si riducono infine a sequenze di 0 ed 1) che
ordinano al computer di eseguire operazioni elementari, una alla volta. I linguaggi macchina dipendono dall’architettura del computer per cui sono stati definiti e
sono assolutamente oscuri agli occhi di un essere umano. Con l’aumentare della
popolarità dei computer ci si rese conto che continuare a programmare in linguaggio macchina era un’operazione decisamente noiosa e lenta. Anziché scrivere
stringhe di numeri che i computer potevano capire direttamente, i programmatori cominciarono a far uso di abbreviazioni che rappresentavano le operazioni
elementari dei computer. Tali abbreviazioni costituirono la base dei linguaggi
assembly. Parallelamente furono sviluppati dei programmi di traduzione, detti assembler, che convertono i programmi scritti in linguaggio assembly in linguaggio
macchina. L’utilizzo dei computer aumentò sensibilmente con l’introduzione dei
linguaggi assembly, ma in definitiva essi richiedevano ugualmente un gran numero
di istruzioni per eseguire anche il compito più banale. Per velocizzare la programmazione furono allora inventati i linguaggi di alto livello, nei quali una singola
istruzione poteva eseguire compiti anche complessi. Programmi di traduzione
detti compilatori convertono poi i programmi scritti nel linguaggio di alto livello
in linguaggio macchina. I linguaggi di alto livello consentivano ai programmatori
di scrivere delle istruzioni che suonavano all’incirca come una normale frase in
lingua inglese e che contenevano alcuni simboli matematici. I linguaggi C, C++,
Java e quelli della piattaforma Microsoft .NET sono tra i linguaggi ad alto livello
più potenti ed utilizzati al giorno d’oggi.
117
3.1. JAVA
Carlo Caligaris, Iacopo Salvarani
La compilazione di un programma ad alto livello in linguaggio macchina può
comunque richiedere un considerevole tempo di elaborazione. Perciò furono anche inventati i cosiddetti interpreti, in grado di eseguire direttamente i programmi
scritti in linguaggio ad alto livello senza doverli prima convertire in linguaggio
macchina. Anche se i programmi compilati sono molto più veloci di quelli interpretati, gli intrepreti sono spesso utilizzati negli ambienti di sviluppo in cui è
necessario apportare continue modifiche ai programmi, cosı̀ da non doverli compilare frequentemente. Una volta raggiunta la versione definitiva di un programma,
però, è possibile compilarlo per avere un’efficienza migliore.
A questo punto è chiaro che esistono fondamentalmente due modalità diverse
di tradurre un programma scritto con un linguaggio di alto livello in una forma
che sia direttamente comprensibile da un computer: la compilazione e l’interpretazione. Java utilizza un’approccio ibrido combinando queste due modalità.
[10]
3.1.3
La Storia dei Linguaggi C e C++
Il linguaggio Java è una evoluzione del linguaggio C++ che costituisce l’evoluzione naturale del linguaggio C, il quale a sua volta discende da altri due linguaggi,
BCPL e B. Il linguaggio BCPL fu sviluppato nel 1967 da Martin Richards per
scrivere sistemi operativi e compilatori. Ken Thompson modellò poi molte delle
caratteristiche del suo linguaggio B sulla base del BCPL ed utilizzò il B per creare
le prime versioni del sistema operativo UNIX presso i Bell Laboratories nel 1970.
Il linguaggio C si sviluppò dal B grazie a Dennis Ritchie presso i Bell Laboratories, e fu implementato originariamente nel 1972. Il C fu noto inizialmente
come linguaggio di sviluppo del sistema operativo UNIX. Oggi la maggior parte dei sistemi operativi che possiamo trovare nei computer portatili, nei normali
computer da tavolo, nelle workstation e persino nei piccoli server sono scritti in C
o C++.
Il linguaggio C++, estensione del C, è stato sviluppato da Bjarne Stroustrup
118
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
agli inizi degli anni ’80 presso i Bell Laboratories. Il linguaggio C++ offre una
serie di funzionalità che potenziano il C e, cosa più importante, lo rendono adatto
per la programmazione orientata agli oggetti. Il C++ è un linguaggio ibrido poiché è possibile scrivere programmi nel vecchio stile procedurale del C, nello stile
orientato agli oggetti, o in entrambi. Gli oggetti o, più precisamente, le classi di
oggetti, sono essenzialmente componenti software riutilizzabili. Possiamo creare
oggetti che rappresentano varie tipologie di dati. Ogni nome può essere utilizzato
per rappresentare un oggetto software in termini di proprietà e comportamento.
Gli sviluppatori di software si stanno rendendo conto che usare un approccio modulare ed orientato agli oggetti nella programmazione e nell’implementazione può
rendere i team di programmazione molto più produttivi rispetto alle tecniche del
passato, come la programmazione strutturata. I programmi orientati agli oggetti, infatti, sono spesso più semplici da capire, da correggere e da modificare. In
questo scenario, Java è ormai divenuto il linguaggio di programmazione orientato
agli oggetti più utilizzato. [10]
3.1.4
La Storia di Java
Il contributo più importante della rivoluzione dei microprocessori è stato forse lo
sviluppo dei personal computer, che hanno avuto un profondo impatto sulla vita
delle persone ed ancora di più sulle organizzazioni e sulle aziende. Sono in molti a credere che il prossimo settore in cui i microprocessori avranno un impatto
di questo tipo sia quello dei dispositivi elettronici intelligenti di uso comune. In
vista di questa nuova rivoluzione, Sun Microsystems ha finanziato, nel 1991, un
progetto di ricerca interno, chiamato Green. Questo progetto ha dato vita ad un
linguaggio basato su C e C++, inizialmente chiamato Oak dal suo creatore, James Gosling. Il nome è stato poi modificato in Java (nome di una marca di caffé)
quando si è scoperto che già esisteva un linguaggio chiamato Oak. Il progetto
Green ha incontrato delle difficoltà, in quanto il mercato dei dispositivi elettronici
di consumo non si è sviluppato tanto rapidamente quanto Sun credeva. Fortunatamente, nel 1993 è esploso il World Wide Web e Sun ha intravisto immediatamente
il potenziale di Java per creare pagine web con contenuti dinamici ed animazioni.
119
3.1. JAVA
Carlo Caligaris, Iacopo Salvarani
Sun ha presentato ufficialmente Java in una conferenza tenutasi nel Maggio del
1995, sollevando un clamoroso interesse. Java viene attualmente utilizzato per
sviluppare applicazioni industriali su larga scala, per estendere le funzionalità dei
server web, per realizzare applicazioni destinate ai dispositivi di consumo e per
molti altri scopi. [10]
3.1.5
Le Librerie di Classi Java
I programmi di Java si compongono di parti dette classi, che a loro volta contengono metodi, i quali eseguono vari compiti e, alla fine, ritornano delle informazioni.
Sebbene sia possibile creare ogni parte di un programma Java, normalmente un
programmatore cerca di riutilizzare l’enorme quantità di classi già esistenti, racchiuse nelle librerie di classi Java. Le librerie di classi sono conosciute anche
come Java API (Application Programming Interface). Per conoscere il mondo
di Java, quindi, è necessario studiare due cose: il linguaggio vero e proprio, per
realizzare le proprie classi, e le librerie di classi già esistenti. [10]
Nel corso del nostro lavoro abbiamo utilizzato un gran numero di classi predefinite, ma abbiamo anche costruito alcune classi personalmente, al fine di raggruppare comandi ripetitivi in funzioni o al fine di avere dei metodi che ci consentissero
di trattare i tipi di dati di nostro interesse.
3.1.6
Gli Elementi Fondamentali di un Tipico Ambiente Java
Un programma attraversa generalmente cinque fasi per essere eseguito:
1. scrittura e modifica;
2. compilazione;
3. caricamento;
4. verifica;
5. esecuzione.
120
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Scrittura e Modifica di un Programma
Per scrivere e modificare i files che costituiscono il nostro programma Java, si
utilizza generalmente un editor. I nomi dei file dei programmi Java terminano
generalmente con l’estensione .java. Le aziende che sviluppano grossi sistemi informativi utilizzano solitamente ambienti di sviluppo Java integrati (IDE), forniti
da vari distributori di software. Gli IDE mettono a disposizione del programmatore diversi strumenti per lo sviluppo di programmi e per la loro messa punto,
facilitando l’individuazione degli errori. I nostri supervisori aziendali ci hanno
consigliato Eclipse, un IDE dall’interfaccia e dalle funzioni molto simili a quelle
di Microsoft Visual Studio.
Compilazione di un Programma Java in Bytecode
Il compilatore Java converte il codice in bytecode, ossia le istruzioni comprese dall’interprete Java. Il compilatore Java può essere lanciato tramite linea di comando
(in ambiente Microsoft, ad esempio, si utilizza il prompt MS-DOS) con l’istruzione javac oppure, se l’IDE supporta questa possibilità, impostando il percorso
del compilatore tra le opzioni dell’IDE stesso e lanciando la compilazione con un
comando interno all’ambiente di sviluppo. Se il programma è stato compilato correttamente, viene prodotto un file con estensione .class contenente i bytecode
che verranno interpretati durante la fase di esecuzione.
Il compilatore Java traduce il codice sorgente in un bytecode che rappresenta
le operazioni che verranno eseguite in fase di esecuzione. I bytecode vengono
eseguiti dalla Java Virtual Machine (JVM), cioè una parte del JDK ed una componente fondamentale della piattaforma Java. Una macchina virtuale (VM) è una
applicazione software che simula un computer, nascondendo ai programmi che
con essa interagiscono sia il sistema operativo, sia l’hardware sottostanti. Se la
stessa macchina virtuale è disponibile per diverse piattaforme, le stesse applicazioni eseguite dalla VM possono automaticamente essere utilizzate in ognuna
di tali piattaforme. La macchina virtuale Java è una delle macchine virtuali più
diffuse.
121
3.1. JAVA
Carlo Caligaris, Iacopo Salvarani
A differenza del linguaggio macchina, che è specifico per ciascun diverso tipo
di hardware, il bytecode è costruito da istruzioni che sono indipendenti dalla piattaforma, ossia non sono specifiche per una particolare piattaforma hardware. In
questo modo il bytecode Java risulta essere portabile: lo stesso bytecode può essere eseguito in una qualunque piattaforma contenente una JVM compatibile con
la versione di Java nella quale il bytecode è stato originariamente compilato. La
JVM è richiamabile da linea di comando con l’istruzione java. La JVM avvia
tutti i passi necessari per eseguire l’applicazione.
Caricamento di un Programma in Memoria
Prima che un programma possa essere eseguito, deve essere posto in memoria.
Il programma class loader trasferisce nella memoria primaria i files .class.
Il class loader può anche caricare eventuali files messi a disposizione da Java
e richiamati dal nostro programma. La sorgente di questi files può essere una
sorgente hardware interna al sistema o una rete.
Verifica del Bytecode
Quando le classi vengono caricate, i loro bytecode vengono esaminati dal verificatore di bytecode. In questo modo si garantisce che i bytecode delle classi siano
validi e rispettino le norme di sicurezza Java. Java prevede infatti norme molto severe nell’ambito della sicurezza, affinché i programmi Java provenienti dalla rete
non possano danneggiare il sistema ospite.
Esecuzione
Finalmente, l’interprete, sotto il controllo del sistema operativo, interpreta il programma, un bytecode per volta, eseguendo tutte le azioni previste dal programma
stesso. Nelle prime versioni di Java, la JVM era un semplice interprete di bytecode. Questa caratteristica rendeva i programmi in esecuzione molto lenti poiché
la JVM interpretava ed eseguiva un bytecode alla volta. Le JVM attuali, invece,
eseguono i bytecode sfruttando una combinazione di due tecniche: l’interpreta122
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
zione e la cosiddetta compilazione just-in-time. Durante questo processo la JVM
analizza i bytecode non appena essi vengono interpretati, cercando di localizzare quelle parti di bytecode eseguite più spesso, dette hot spot. Una volta isolate
queste parti, esse vengono passate al compilatore just-in-time, il quale le traduce
nel linguaggio macchina specifico per la piattaforma corrente. Quando la JVM
ritrova le stesse parti una seconda volta durante l’esecuzione del programma, ciò
che viene effettivamente eseguito è il più veloce linguaggio macchina. In questo
modo i programmi Java passano per due fasi di compilazione distinte: la prima
in cui il codice sorgente viene tradotto in bytecode (favorendo la portabilità verso
JVM presenti in diverse piattaforme) e la seconda nella quale, durante l’esecuzione, i bytecode vengono tradotti in linguaggio macchina specifico per il computer
sul quale il programma è in esecuzione. [10]
3.1.7
Concetti Fondamentali della Tecnologia ad Oggetti
Concludiamo questa panoramica sul linguaggio di programmazione più utilizzato
per il nostro lavoro introducendo la metodologia orientata agli oggetti.
Ovunque si guardi nel mondo reale, si vedono oggetti: persone, animali, piante
e cosı̀ via. Le persone, inoltre, pensano in termini di oggetti. I programmi per
computer, e quindi i programmi Java, possono essere visti come oggetti costituiti
da tanti altri oggetti software interconnessi. La progettazione orientata agli oggetti
modella il software in termini simili a quelli utilizzati dalle persone per descrivere
gli oggetti del mondo reale. Essa sfrutta le relazioni di classe, in cui gli oggetti di
una certa classe hanno le stesse caratteristiche, e le relazioni di ereditarietà con
cui è possibile derivare nuove classi assorbendo le caratteristiche di classi esistenti
ed aggiungendone di nuove.
La progettazione orientata agli oggetti è un modo naturale ed intuitivo di vedere il processo di progettazione. Modellando i componenti software proprio come
descriviamo gli oggetti del mondo reale: usando i loro attributi ed il loro comportamento. La progettazione orientata agli oggetti modella anche la comunicazione
tra oggetti che avviene tramite messaggi. Questo tipo di progettazione incapsula
123
3.1. JAVA
Carlo Caligaris, Iacopo Salvarani
gli attributi e le funzionalità (il comportamento) negli oggetti: gli attributi e le
funzionalità di un oggetto sono strettamente legati tra loro. Gli oggetti hanno la
proprietà di nascondere le informazioni, Questo significa che, sebbene gli oggetti
sappiano come comunicare tra loro attraverso ben definite interfacce, non possono sapere come altri oggetti sono implementati; i dettagli dell’implementazione
sono nascosti all’interno degli oggetti stessi. Del resto, è possibile guidare una
macchina senza conoscere i dettagli del funzionamento interno del motore, della
trasmissione o del cambio.
Java è un linguaggio orientato agli oggetti; i linguaggi come il C, invece, sono
procedurali e la loro programmazione tende ad essere orientata all’azione. In C,
l’unità di programmazione è la funzione. Gruppi di azioni che svolgono qualche
compito comune vengono trasformati in funzioni e le funzioni sono raggruppate a
loro volta per formare programmi. In Java l’unità di programmazione è la classe
da cui gli oggetti vengono istanziati. Le classi Java contengono metodi, che implementano funzionalità, e campi, che implementano attributi. I programmatori
Java si concentrano sulla creazione di classi. Ogni classe contiene dei campi e
l’insieme dei metodi che manipolano questi campi per fornire determinati servizi
ai clienti. I programmatori usano le classi esistenti come mattoni per costruire
nuove classi. Da una stessa classe è possibile istanziare molti oggetti. Le relazioni tra classi vengono chiamate associazioni. Quando il software viene scritto
come aggregato di classi, queste possono essere riusate in sistemi software futuri.
Riusare classi esistenti nella costruzione di nuove classi e programmi fa risparmiare tempo e sforzi. Il riuso aiuta anche i programmatori a costruire sistemi più
affidabili dal momento che le classi ed i componenti esistenti sono stati a lungo
verificati e corretti. Con la tecnologia degli oggetti, possiamo costruire la maggior
parte del software che ci serve combinando delle classi. [10]
124
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.2
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Le Basi di Dati ed i Sistemi di Gestione di Basi
di Dati
Gran parte della nostra attività ha richiesto una costante interazione con una enorme base di dati dalla quale abbiamo cercato di ricavare le informazioni a noi più
utili. La raccolta e lo storage dei dati rappresenta un enorme campo di applicazione dei sistemi informatici quindi, prima di descrivere nel dettaglio come abbiamo operato per relazionarci con la banca dati, vogliamo introdurre i fondamenti
di questo argomento, proprio come abbiamo fatto e faremo con tutte le aree di
interesse scientifico che abbiamo toccato.
3.2.1
Introduzione alle Basi di Dati
Le attività di raccolta, organizzazione, conservazione dei dati costituiscono uno
dei principali compiti dei sistemi informatici; essi garantiscono che questi dati
vengano conservati in modo permanente su dispositivi per la loro memorizzazione, aggiornati per riflettere rapidamente le loro variazioni e resi accessibili alle
interrogazioni degli utenti, talvolta distribuiti in modo capillare sul territorio
Nello svolgimento di ogni attività, sia a livello individuale sia in organizzazioni di ogni dimensione, sono essenziali la disponibilità di informazioni e la capacità
di gestirle in modo efficace; ogni organizzazione è dotata di un sistema informativo, che organizza e gestisce le informazioni necessarie per perseguire gli scopi
dell’organizzazione stessa. L’esistenza del sistema informativo è in parte indipendente dalla sua automatizzazione. A sostegno di questa affermazione possiamo
ricordare che i sistemi informativi esistono da molto prima dell’invenzione e della diffusione dei calcolatori elettronici. Per indicare la porzione automatizzata
del sistema informativo viene di solito utilizzato il termine sistema informatico.
La diffusione capillare dell’informatica in quasi tutte le attività umane ha fatto
sı̀ che gran parte dei sistemi informativi fossero anche, in buona misura, sistemi
informatici.
Nei sistemi informatici si porta all’estremo il concetto di rappresentazione
125
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
e codifica: le informazioni vengono rappresentate per mezzo di dati che hanno
bisogno di essere interpretati. A livello concettuale possiamo dire che i dati da soli
non hanno alcun significato ma, una volta interpretati e correlati opportunamente,
essi forniscono informazioni che consentono di arricchire la nostra conoscenza
del mondo. Una base di dati è una collezione di dati, utilizzati per rappresentare
le informazioni di interesse per un sistema informativo.
L’attenzione ai dati ha caratterizzato le applicazioni dell’informatica fin dalle
sue origini, ma sistemi software specificamente dedicati alla gestione dei dati sono
stati realizzati solo a partire dalla fine degli anni Sessanta. Un sistema di gestione
di basi di dati (DBMS) è un sistema software in grado di gestire collezioni di
dati che siano grandi, condivise e persistenti, assicurando la loro affidabilità e
riservatezza. Come ogni prodotto informatico, un DBMS deve essere efficiente ed
efficace. Una base di dati è una collezione di dati gestita da un DBMS. Precisiamo
le caratteristiche dei DBMS su cui si basano le definizioni precedenti.
• Le basi di dati possono essere grandi, talvolta sono enormi (come quella
con cui abbiamo lavorato) e comunque in generale hanno dimensioni molto maggiori della memoria centrale disponibile. Di conseguenza, i DBMS
debbono prevedere una gestione dei dati in memoria secondaria. È importante che i sistemi possano gestire i dati senza porre limiti alle dimensioni,
oltre a quelli fisici imposti dai dispositivi usati.
• Le basi di dati sono condivise, nel senso che applicazioni ed utenti diversi
debbono poter accedere, secondo opportune modalità, a dati comuni. É importante notare che in questo modo si riduce la ridondanza dei dati, poiché
si evitano ripetizioni, e conseguentemente si riduce anche la possibilità di
inconsistenze: se esistono varie copie degli stessi dati è possibile che esse,
in qualche momento, non siano uguali. Per garantire l’accesso condiviso
ai dati da parte di molti utenti che operano contemporaneamente, il DBMS
dispone di un meccanismo apposito detto controllo di concorrenza.
• Le basi di dati sono persistenti, cioè hanno un tempo di vita che non è limitato a quello delle singole esecuzioni dei programmi che le utilizzano. In
126
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
contrasto, ricordiamo che i dati gestiti da un programma in memoria centrale hanno una vita che inizia e termina con l’esecuzione del programma; tali
dati, quindi, non sono persistenti.
• I DBMS garantiscono l’affidabilità, cioè la capacità del sistema di conservare sostanzialmente intatto il contenuto della base di dati (o almeno di permetterne la ricostruzione) in caso di malfunzionamenti hardware e software.
A questo scopo i DBMS forniscono specifiche funzionalità di salvataggio e
ripristino (backup e recovery).
• I DBMS garantiscono la riservatezza dei dati. Ciascun utente, riconosciuto
in base ad un nome di utente che è specificato all’atto di interagire con il
DBMS, viene abilitato a svolgere solo determinate azioni sui dati, attraverso
meccanismi di autorizzazione.
• Per efficienza si intende la capacità di svolgere le operazioni utilizzando un
insieme di risorse (tempo e spazio) che sia accettabile per gli utenti. Questa caratteristica dipende dalle tecniche utilizzate nell’implementazione del
DBMS e dalla bontà della realizzazione della base di dati da parte dei suoi
progettisti. Va sottolineato che i DBMS forniscono un insieme piuttosto
ampio di funzionalità che richiedono molte risorse, e quindi possono garantire efficienza solo a condizione che il sistema informatico su cui installati
sia adeguatamente dimensionato.
• Per efficacia intendiamo la capacità della base di dati di rendere produttive, in ogni senso, le attività dei suoi utenti. Questa definizione è chiaramente generica e non corrisponde ad un aspetto specifico, dato che un
DBMS fornisce vari servizi e funzionalità ad utenti differenti. L’attività di
progettazione della base di dati e delle applicazioni che la utilizzano mira
essenzialmente a garantire una buona efficacia complessiva del sistema.
I DBMS sono stati concepiti e realizzati per estendere le funzioni dei file system,
fornendo la possibilità di accesso condiviso agli stessi dati da parte di più utenti ed
applicazioni e garantendo anche molti altri servizi in maniera integrata. I DBMS
127
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
utilizzano a loro volta files per la memorizzazione ma i files cosı̀ gestiti ammettono
organizzazioni dei dati più sofisticate. [3]
3.2.2
Modelli dei Dati: il Modello Relazionale
Un modello dei dati è un insieme di concetti utilizzati per organizzare i dati di
interesse e descriverne la struttura in modo che essa risulti comprensibile ad un
elaboratore. Ogni modello dei dati fornisce meccanismi di strutturazione, analoghi ai costruttori di tipo dei linguaggi di programmazione, che permettono di
definire nuovi tipi sulla base di tipi elementari predefiniti e di costruttori di tipo.
Il modello relazionale dei dati, attualmente il più diffuso, permette di definire
tipi per mezzo del costruttore relazione, che consente di organizzare i dati in insiemi di record a struttura fissa. Una relazione viene spesso rappresentata per mezzo
di una tabella, le cui righe descrivono specifici record e le cui colonne corrispondono ai campi del record; l’ordine delle righe e delle colonne è sostanzialmente
irrilevante. Il modello relazionale, definito formalmente agli inizi degli anni Settanta, si è affermato negli anni Ottanta con una certa lentezza, dovuta all’elevato
livello di astrazione: non è stato immediato individuare relazioni efficienti per
strutture significativamente da quelle utilizzate allora.
Il modello relazionale quindi si basa sui concetti: relazione e tabella, che sono di natura diversa ma facilmente riconducibili l’uno all’altro. La nozione di
relazione proviene dalla matematica e, in particolare, dalla teoria degli insiemi,
mentre il concetto di tabella è semplice ed intuitivo. La presenza contemporanea
di un concetto prevalentemente formale e di uno intuitivo è responsabile del grande successo del modello: infatti, le tabelle risultano naturali e comprensibili anche
per gli utenti finali (che le usano nei più svariati contesti per diversi scopi, senza
un riferimento diretto alle basi di dati sottostanti). D’altra parte, la presenza di
una formalizzazione semplice e precisa ha permesso anche uno sviluppo teorico a
supporto del modello con risultati di interesse concreto.
Il modello relazionale risponde al requisito dell’indipendenza dei dati, che prevede una distinzione, nella descrizione dei dati, tra livello fisico e livello logico;
128
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
gli utenti che accedono ai dati ed i programmatori che sviluppano le applicazioni fanno riferimento solo al livello logico; i dati descritti al livello logico sono
poi realizzati per mezzo di opportune strutture fisiche, ma per accedere ai dati
non è necessario conoscere le strutture fisiche stesse. Infatti, i modelli proposti
precedentemente al modello relazionale, includevano espliciti riferimenti alla sottostante struttura realizzativa, attraverso l’uso di puntatori e l’ordinamento fisico
dei dati.
Il termine relazione viene utilizzato in questa trattazione in tre accezioni che
differiscono nella sostanza:
1. relazione matematica secondo la definizione normalmente data nella teoria
degli insiemi elementare;
2. relazione secondo la definizione del modello relazionale, che presenta alcune differenze rispetto a quella della teoria degli insiemi;
3. relazione come traduzione dell’inglese relationship, costrutto del modello
concettuale Entità-Relazione utilizzato per descrivere legami tra entità del
mondo reale.
[3]
3.2.3
Livelli di Astrazione nel DBMS ed Indipendenza dei Dati
Nelle basi di dati esiste una parte sostanzialmente invariante nel tempo, detta schema della base di dati, costituita dalle caratteristiche dei dati, ed una variabile nel
tempo, detta istanza o stato della base di dati, costituita dai valori effettivi. lo
schema di una relazione è costituito dalla sua intestazione, cioè dal nome della
relazione seguito dai nomi dei suoi attributi. L’istanza di una relazione è costituita dall’insieme, variante nel tempo, delle sue righe. Si dice anche che lo schema è la componente intensionale della base di dati e l’istanza è la componente
estensionale.
129
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
La nozione di modello e di schema può essere ulteriormente sviluppata tenendo presenti altre dimensioni nella descrizione dei dati. Esiste una proposta di
architettura standardizzata per DBMS articolata su tre livelli, detti rispettivamente
esterno, logico ed interno; per ciascun livello esiste uno schema.
• Lo schema logico costituisce una descrizione dell’intera base di dati per
mezzo del modello logico adottato dal DBMS.
• Lo schema interno costituisce la rappresentazione dello schema logico per
mezzo di strutture fisiche di memorizzazione.
• Lo schema esterno costituisce la descrizione di una porzione della base di
dati di interesse, per mezzo del modello logico. Uno schema esterno può
prevedere organizzazioni dei dati diverse rispetto a quelle utilizzate nello
schema logico, che riflettono il punto di vista di un particolare utente o
insieme di utenti. Pertanto, è possibile associare ad uno schema logico vari
schemi esterni.
Nei sistemi più moderni il livello esterno non è esplicitamente presente, ma è
possibile definire relazioni derivate (o viste).
L’architettura a livelli cosı̀ definita garantisce l’indipendenza dei dati, la principale proprietà dei DBMS. In generale, questa proprietà permette ad utenti e programmi applicativi che utilizzano una base di dati di interagire ad un elevato livello di astrazione, che prescinde dai dettagli realizzativi utilizzati nella costruzione
della base di dati. In particolare, l’indipendenza dei dati può essere caratterizzata
ulteriormente come indipendenza fisica e logica.
• L’indipendenza fisica consente di interagire con il DBMS in modo indipendente dalla struttura fisica dei dati. In base a questa proprietà è possibile
modificare le strutture fisiche (per esempio le modalità di organizzazione
dei files gestiti dal DBMS o la allocazione fisica dei files sui dispositivi di
memorizzazione) senza influire sulle descrizioni dei dati ad alto livello e
quindi sui programmi che utilizzano i dati stessi.
130
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
• L’indipendenza logica consente di interagire con il livello esterno della base
di dati in modo indipendente dal livello logico. Per esempio, è possibile
aggiungere uno schema esterno in base alle esigenze di un nuovo utente
oppure modificare uno schema esterno senza dover modificare lo schema
logico e perciò la sottostante organizzazione fisica dei dati. Dualmente,
è possibile modificare il livello logico, mantenendo inalterate le strutture
esterne (modificandone la definizione in termini delle strutture logiche) di
interesse per l’utente.
È importante sottolineare che gli accessi alla base di dati avvengono solo attraverso il livello esterno (che può coincidere con quello logico); è il DBMS che traduce
le operazioni in termini dei livelli sottostanti. L’architettura a livelli è quindi il
meccanismo fondamentale attraverso cui i DBMS realizzano l’indipendenza dei
dati. [3]
3.2.4
Definizioni Fondamentali
In questo contesto non riteniamo necessario assumere un livello di dettaglio eccessivamente profondo per quanto riguarda il modello relazionale e le sue interazioni
con i DBMS; tuttavia, ci sembra coerente con lo scopo di questa trattazione introdurre alcune definizioni fondamentali e chiarire alcuni concetti di base relativi a
questi argomenti in modo da consentire anche ad un neofita di comprendere per
sommi capi gli approcci che abbiamo utilizzato.
Definizione 3.1 Una relazione matematica su due insiemi D1 e D2 (chiamati domini della relazione) è un sottoinsieme di D1 ×D2 dove l’operatore × rappresenta
il prodotto cartesiano di due insiemi, ossia l’insieme di tutte le coppie possibili
in cui il primo elemento appartiene al primo insieme ed il secondo elemento al
secondo insieme.
A livello teorico si assume, ove necessario, che le basi di dati siano costituite
da relazioni finite su domini eventualmente infiniti. Generalmente le informazioni
131
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
che siamo interessati ad organizzare nelle relazioni delle nostre basi di dati hanno
una struttura che si può naturalmente ricondurre a quella dei record: una relazione
è sostanzialmente un insieme di record omogenei, cioè definiti sugli stessi campi. Nel casi dei record, ad ogni campo è associato un nome, detto attributo, che
descrive il ruolo giocato dal dominio stesso. Nella rappresentazione tabellare utilizziamo gli attributi come intestazioni per le colonne. Si noti come l’ordinamento
degli attributi risulti irrilevante.
Definizione 3.2 [3] Per formalizzare i concetti, stabiliamo la corrispondenza tra
attributi e domini per mezzo di una funzione dom : X → D, che associa a ciascun
attributo A ∈ X un dominio dom(A) ∈ D. Poi, diciamo che una t-upla su un
insieme di attributi X è una funzione t che associa a ciascun attributo A ∈ X
un valore del dominio dom(A). Possiamo quindi dare la nuova definizione di
relazione: una relazione su X è un insieme di t-uple su X. La differenza tra
questa definizione e quella tradizionale di relazione matematica risiede solo nella
definizione di t-upla: nella relazione matematica abbiamo n−uple in cui elementi
sono individuati per posizione, mentre nelle t-uple della nuova definizione gli
elementi sono individuati per mezzo degli attributi, cioè secondo una notazione
posizionale.
3.2.5
Relazioni e Basi di Dati
La base di dati nella Figura 3.2.5 mostra una delle caratteristiche fondamentali del
modello relazionale, che viene spesso indicata dicendo che esso è basato sui valori: i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori
dei domini che compaiono nelle t-uple. Va notato che gli altri modelli realizzano
le corrispondenze in modo esplicito attraverso puntatori e vengono pertanto detti
modelli basati su record e puntatori.
132
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Figura 3.3: Una base di dati relazionale
La Figura 3.2.5 rappresenta la stessa base di dati della Figura 3.2.5 con puntatori al posto dei riferimenti realizzati tramite valori.
Figura 3.4: Una base di dati non relazionale con puntatori
Rispetto ad un modello basato su record e puntatori, il modello relazionale
basato sui valori presenta diversi vantaggi:
133
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
• esso richiede di rappresentare solo ciò che è rilevante dal punto di vista dell’applicazione (dell’utente); i puntatori sono qualcosa di aggiuntivo, legato
ad aspetti realizzativi; nei modelli con puntatori, il programmatore delle applicazioni fa riferimento a dati che non sono significativi per l’applicazione;
• la rappresentazione logica dei dati (costituita dai soli valori) non fa alcun
riferimento a quella fisica, che può anche cambiare nel tempo: il modello
relazionale permette quindi l’indipendenza fisica dei dati;
• essendo tutta l’informazione contenuta nei valori, è relativamente semplice
trasferire i dati da un contesto ad un altro (per esempio se si deve trasferire
una base di dati da un calcolatore ad un altro); in presenza di puntatori
l’operazione è più complessa hanno un significato locale, relativo al singolo
sistema, che non è sempre immediato esportare.
In una base di dati relazionale, a livello fisico, i dati possono essere rappresentati secondo modalità che prevedono l’uso dei puntatori. La differenza, rispetto
ai modelli basati su puntatore, è nel fatto che qui i puntatori non sono visibili a
livello logico. Inoltre, nei sistemi di basi di dati ad oggetti, che rappresentano una
delle direzioni di evoluzione delle basi di dati, vengono introdotti gli identificatori
di oggetto, che, pur ad un livello di astrazione più alto, presentano alcune delle
caratteristiche dei puntatori. [3]
3.2.6
Linguaggi ed Utenti delle Basi di Dati
I DBMS sono caratterizzati, da un lato, dalla presenza di molteplici linguaggi per
la gestione dei dati; dall’altro, dalla presenza di molteplici tipologie di utenti.
Linguaggi per Basi di Dati
Su un DBMS è possibile specificare operazioni di vario tipo, in particolare quelle
relative agli schemi ed alle istanze. Al riguardo, i linguaggi per basi di dati si
dividono in due categorie:
134
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
• linguaggi di definizione dei dati o Data Definition Language (DDL), utilizzati per definire gli schemi logici, esterni e fisici e le autorizzazioni per
l’accesso;
• linguaggi di manipolazione dei dati o Data Manipulation Language (DML),
utilizzati per l’interrogazione e l’aggiornamento delle istanze di basi di dati.
Il linguaggio SQL, da noi estensivamente utilizzato, presenta in forma integrata le
funzionalità di entrambe le categorie.
L’accesso ai dati può essere effettuato con diverse modalità:
• tramite linguaggi testuali interattivi, per esempio il linguaggio SQL;
• tramite comandi simili a quelli interattivi immersi in linguaggi di programmazione tradizionali;
• tramite comandi simili a quelli interattivi immersi in linguaggi di sviluppo
ad hoc, spesso con funzionalità specifiche e varianti da sistema a sistema.
• tramite interfacce che permettono di sintetizzare interrogazioni senza usare
un linguaggio testuale
Varie categorie di persone possono interagire con una base di dati o con un
DBMS. L’amministratore della base di dati è il responsabile della progettazione, controllo ed amministrazione della base di dati. I progettisti e programmatori
di applicazioni definiscono e realizzano i programmi che accedono alla base di
dati. Gli utenti utilizzano la base di dati per le proprie attività. Gli utenti finali
utilizzano transazioni, cioè programmi che realizzano attività predefinite e di frequenza elevata, con poche eccezioni previste a priori. Gli utenti casuali in grado
di impiegare linguaggi interattivi possono invece essere specializzati ed interagire
frequentemente con la base di dati con interrogazioni non predefinite. [3]
3.2.7
Vantaggi e Svantaggi dei DBMS
In conclusione, possiamo riassumere come segue i vantaggi derivanti dall’utilizzo
dei DBMS.
135
3.2. LE BASI DI DATI ED I SISTEMI DI GESTIONE DI BASI DI DATI
Carlo Caligaris, Iacopo Salvarani
• I DBMS permettono di considerare i dati come una risorsa comune di una
organizzazione, a disposizione (con opportune forme di controllo) di tutte
le sue componenti.
• La base di dati fornisce un modello unificato e preciso della parte del mondo
reale di interesse per l’organizzazione, utilizzabile nelle applicazioni attuali
e, con possibili estensioni, in applicazioni future.
• Con l’uso di un DBMS è possibile un controllo centralizzato dei dati, che
può essere arricchito da forme di standardizzazione e beneficiare di economie di scala.
• La condivisione permette di ridurre ridondanze ed inconsistenze.
• L’indipendenza dei dati, caratteristica fondamentale dei DBMS, favorisce
lo sviluppo di applicazioni più flessibili e facilmente modificabili.
L’uso dei DBMS comporta anche alcuni aspetti negativi, o almeno delicati, fra cui
i seguenti.
• I DBMS sono prodotti costosi, complessi ed abbastanza diversi da molti
altri strumenti informatici. La loro introduzione comporta quindi notevoli
investimenti, diretti (acquisto del prodotto) ed indiretti (acquisizione delle risorse hardware e software necessarie, conversione delle applicazioni,
formazione del personale).
• I DBMS forniscono, in forma integrata, una serie di servizi, che sono necessariamente associati ad un costo. Nei casi in cui alcuni di questi servizi non
siano necessari, è difficile scorporare quelli effettivamente richiesti dagli
altri, e ciò può comportare una riduzione di prestazioni.
[3]
136
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.3
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Oracle9i
Il centro Infoblu della Società Autostrade per l’Italia utilizza un gestore di database relazionali tra i più noti e performanti: Oracle9i. Vediamo alcuni concetti
legati al software Oracle ed a questa versione in particolare.
3.3.1
Introduzione ad Oracle9i
Oracle è il fornitore leader nel mondo di software per l’information management
ma è conosciuto soprattutto per i suoi prodotti di gestione dei database relazionali
(in particolar modo la versione 9i). Questo software è stato il primo a supportare
l’SQL (Structured Query Language), che ora è uno standard del settore.
Come detto, Oracle è un DBMS, ovvero un programma che consente ad uno
o più utenti di computer di accedere ai dati nei database. In particolare, siamo di
fronte ad un RDBMS, cioè un programma che consente di creare, aggiornare ed
amministrare un database relazionale. [48]
Oracle è salita alla posizione di conclamata leadership da origini molto umili
che risalgono agli anni Settanta. Con prodotti come Oracle8, Oracle8i ed Oracle9i, Oracle ha aggiunto maggiore potenza espressiva alla sua già solida base.
Oracle8, lanciato nel 1977, ha messo a disposizione degli utenti un livello di performance clamorosamente superiore a tutti gli altri dell’epoca. Oracle8i, datato
1999, ha aggiunto una nuova serie di sviluppi in grado di rendere questo software
un punto focale nel nuovo mondo dell’informatica basata su Internet.
Lo Sviluppo dei Database Relazionali
Il concetto di database relazionale è stato inizialmente introdotto nel 1970 dal
Dott. Edgar F. Codd in una ricerca svolta per conto dell’IBM ed intitolata System
R4 Relational Databases. Inizialmente, non era affatto facile capire se un sistema
basato su questi concetti avrebbe potuto ambire al successo commerciale. Nonostante ciò, nel 1979, venne fondata la RSI (Relational Software Incorporated)
che mise sul mercato Oracle V.2, il primo database relazionale al mondo. Entro
137
3.3. ORACLE9I
Carlo Caligaris, Iacopo Salvarani
il 1985, Oracle poteva contare su più di 1000 clienti operanti con database relazionali. Abbiamo già visto in 3.2.5 i motivi che hanno portato questo modello a
dominare la scena mondiale.
Come Oracle Crebbe
Nel 1983, RSI è stata rinominata Oracle Corporation per evitare confusione con
un competitor chiamato RTI. Al tempo, gli sviluppatori decisero di creare una
versione di Oracle portabile, in grado di funzionare non solo su sistemi Digital
VAX/VMS, ma anche su Unix ed altre piattaforme. Nel 1985 Oracle ha reso nota
la possibilità di funzionare su 30 piattaforme differenti (che nel frattempo sono
arrivate a 70). Alcune di queste piattaforme, al giorno d’oggi non sono altro che
delle curiosità storiche mentre altre sono tuttora utilizzabili. Oggi, Oracle ha esteso la sua portabilità a sistemi come Microsoft Windows NT/2000/XP e Linux per
conquistare una importante fetta di mercato anche su queste piattaforme. Fin dalla metà degli anni Ottanta, il modello di sviluppo si è evoluto da applicazione per
database sui server ad una architettura client/server orientata all’utilizzo di Internet per accedere alla base di dati tramite un browser. A partire dalla versione 8i
Oracle ha messo a disposizione anche una JVM integrata nel database.
Oracle ha centrato lo sviluppo intorno ad un singolo nucleo di codice sorgente
fin dal 1983. Ogni versione successiva del database include alcune parti di codice sorgente specifiche per il sistema, mentre gran parte del codice è comune tra
le varie implementazioni. Le interfacce con cui gli utenti, gli sviluppatori e gli
amministratori hanno a che fare sono coerenti attraverso le varie versioni.
La Famiglia di Prodotti Oracle
La famiglia dei prodotti messi a disposizione da Oracle comprende 4 differenti
tipi di database.
1. Oracle Server/Standard Edition: la versione di Oracle per un server che
deve avere a che fare con un numero limitato di utenti e con una banca dati
di piccole dimensioni.
138
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
2. Oracle Enterprise Edition: la versione di Oracle per un grande numero di
utenti e per un grande database con componenti avanzate per estensibilità,
prestazione e gestione. È la versione da noi utilizzata.
3. Oracle Personal Edition: versione di Oracle per un singolo utente, tipicamente usato per lo sviluppo di applicazioni da utilizzare su altre versioni di
Oracle.
4. Oracle Lite: motore di piccole dimensioni per consentire il lavoro su dispositivi portatili come i notebooks.
[20]
3.3.2
Componenti per lo Sviluppo di Applicazioni su Database
Le applicazioni sono spesso costruite sulle fondamenta del sistema di base di dati
di Oracle.
Programmazione verso il Database
Oracle offre ai programmatori diversi linguaggi e diverse interfacce per consentire
l’accesso e la manipolazione dei dati. Il primo linguaggio naturalmente supportato
è l’SQL (si veda 3.4) che mette a disposizione funzioni di base per la manipolazione dei dati, il controllo delle transazioni ed il recupero dei dati dalla banca dati.
Molti utenti, utilizzano interfacce che nascondono comandi SQL semplificandone
l’utilizzo. L’SQL viene esteso in Oracle in PL/SQL, un linguaggio procedurale comunemente usato per implementare moduli applicativi contenenti elementi
logici di programmazione. PL/SQL può essere usato per costruire stored procedures e triggers, controlli in loop ed istruzioni condizionali oltre ad una gestione
degli errori. Le procedure PL/SQL possono essere compilate e memorizzate all’interno del database. I blocchi PL/SQL sono eseguibili anche via SQL*Plus, uno
strumento interattivo fornito con tutte le versioni di Oracle.
Con Oracle8isi è introdotto l’uso di Java come linguaggio procedurale appoggiato ad una JVM interna al database (inizialmente chiamata JServer). [20]
139
3.3. ORACLE9I
3.3.3
Carlo Caligaris, Iacopo Salvarani
Componenti di Connessione del Database
La connessione tra il client ed il server del database è una componente chiave dell’architettura globale di un sistema di computazione. La connessione al database
è responsabile di tutte le comunicazioni tra una applicazione ed i dati che essa usa.
Oracle include un numero di strumenti per stabilire e calibrare le connessioni al
database.
Gli utenti di Oracle si collegano al database tramite una connessione di rete.
L’interfaccia di rete utilizzata da Oracle è Oracle Net; questa può essere usata con
una ampia varietà di protocolli di rete, tra cui il più utilizzato TCP/IP. Oracle Names consente ai clients di collegarsi al server senza un file di configurazione per
ogni utente. Questo consente di ridurre il carico del lavoro di manutenzione, dal
momento che una modifica nella topologia della propria rete non richiede un corrispondente cambio nei files di configurazione su ogni macchina client. La stessa
funzione, ma con protocolli diversi da Oracle Net, è svolta da Oracle Internet
Directory.
Figura 3.5: Concentratori per un grande numero di utenti [20]
Ogni connessione al database sfrutta le risorse di rete in modo intensivo, al
punto di poter influenzare le performance globali di una applicazione per databa140
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
se. Il Connection Manager di Oracle (Figura 3.5) riduce il numero di connessioni
di rete verso il database tramite l’utilizzo di concentratori che eseguono un multiplexing per implementare connessioni multiple su una singola connessione di
rete. Questa tecnica consente grandi benefici nel caso in cui molti utenti siano
attivi contemporaneamente.
Il Connection Manager consente anche di provvedere ad una connettività multiprotocollo nel caso in cui client e server si servano di protocolli differenti. La
connessione di rete è resa sicura tramite un meccanismo di criptatura dei dati. [20]
3.3.4
Oracle9iApplication Server
Il successo delle applicazioni via Internet o Intranet ha condotto ad uno sviluppo
da una architettura di tipo client/server ad una che viene generalmente indicata
con il termine three tier (tre livelli).
Il modello three-tier si struttura su tre livelli. Il primo livello, quello dei client
che eseguono le richieste e gestiscono l’interfaccia con l’utente, resta sostanzialmente lo stesso del modello client-server, ma la parte server viene suddivisa in
due livelli, introducendo un middle-tier, su cui deve appoggiarsi tutta la logica di
analisi delle richieste dei client per ottimizzare l’accesso al terzo livello, che si
limita a fornire i dati dinamici che verranno usati dalla logica implementata nel
middle-tier per eseguire le operazioni richieste dai client. In questo modo si può
disaccoppiare la logica dai dati, replicando la prima, che è molto meno soggetta
a cambiamenti ed evoluzioni, e non soffre di problemi di sincronizzazione, e centralizzando opportunamente i secondi. In questo modo si può distribuire il carico
ed accedere in maniera efficiente i dati. [36]
Oracle9iAS (Application Server) funziona da middle-tier. Nella Figura 3.6
vediamo le diverse tipiche connessioni che si possono avere tra un client ed un
server in una architettura Oracle.
141
3.3. ORACLE9I
Carlo Caligaris, Iacopo Salvarani
Figura 3.6: Tipiche connessioni di un database Oracle [20]
3.3.5
Confronto con Altri RDBMS
Esistono altri sistemi di gestione dei database forse ancora più famosi di Oracle:
in particolare ci riferiamo a Microsoft Access e Microsoft SQL Server. MS Access
non è un vero sistema di gestione di database relazionali. Fornisce effettivamente le funzioni di un database relazionale, dal momento che memorizza i dati in
tabelle relazionali, ma non è un sistema di gestione. Infatti ha una scarsa implementazione dei concetti di transazioni multi-utente, di sicurezza multi-utente e
di altre caratteristiche che definiscono un gestore di database. D’altra parte MS
Access è stato progettato dall’inizio come un database per un singolo utente. [35]
SQL Server 2000 lavora solo su piattaforme Windows mentre Oracle lavora
anche su piattaforme alternative come Unix Linux Intel e Sun Solaris. È molto difficile fare un confronto di performance tra SQL Server 2000 ed Oracle 9i. Questa
caratteristica viene influenzata da fattori fortemente dipendenti dall’esperienza di
chi sviluppa ed amministra il database. A parità di piattaforma, SQL Server 2000
può vantare un valore del TPC-C più alto, mentre Oracle si rende preferibile sulle piattaforme alternative. Il TPC (Transaction Processing Performance Council)
è una organizzazione che determina le transazioni tipiche utilizzate in sistemi di
controllo di inventario, sistemi di prenotazione nelle linee aeree e sistemi bancari
ed alcune regole generali che queste transazioni dovrebbero soddisfare. Lo scopo
142
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
è produrre benchmarks che misurino le performance di un database nel processare
transazioni in una certa unità di tempo. Il TPC-C è il più popolare tra questi valori
di confronto. [8]
143
3.4. SQL
3.4
3.4.1
Carlo Caligaris, Iacopo Salvarani
SQL
Introduzione ad SQL
SQL è il linguaggio di riferimento per le basi di dati relazionali. Il nome SQL
inizialmente rappresentava l’acronimo di Structured Query Language, ma lo standard specifica ora che SQL deve essere considerato come un nome proprio. SQL
è ben più di un linguaggio per scrivere interrogazioni. Contiene, infatti, al suo
interno, sia le funzionalità di un Data Definition Language sia quelle di un Data
Manipulation Language. [3]
3.4.2
Standardizzazione dell’SQL
La diffusione di SQL è dovuta in buona parte alla intensa opera di standardizzazione dedicata a questo linguaggio, svolta principalmente nell’ambito degli organismi ANSI (American National Standards Institute, l’organismo nazionale statunitense degli standard) ed ISO (l’organismo internazionale che coordina i vari
organismi nazionali). Gran parte dei produttori del settore hanno avuto modo
di partecipare al processo decisionale. Il processo di standardizzazione ha avuto inizio nella prima metà degli anni Ottanta e continua tuttora. Sono state cosı̀
prodotte nel tempo diverse versioni, sempre più complesse e sofisticate, dello standard del linguaggio. La prima definizione di uno standard per il linguaggio SQL
è stata emanata nel 1986 dall’ANSI. Questo primo standard possedeva già gran
parte delle primitive di formulazione di interrogazioni, mentre offriva un supporto limitato per la definizione e manipolazione degli schemi e delle istanze. Sono
state poi sviluppare versioni successive come SQL-92 ed SQL:1999; quest’ultimo
è un linguaggio estremamente complesso ed è molto difficile trovare un sistema
commerciale che metta a disposizione tutte le funzionalità previste dal linguaggio.
Analizzando con cura i sistemi relazionali, si osserva che ciascuno di essi
offre in effetti piccole differenze nella implementazione del linguaggio SQL; le
differenze emergono soprattutto quando si conforntano fra di loro le funzionalità
innovative. Invece, per quanto riguarda gli aspetti più consolidati del linguaggio,
144
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
l’adesione allo standard è maggiore e questo permette agli utenti di dialogare in
SQL standard con sistemi completamente diversi, come possono essere l’implementazione di un DBMS per un personal computer monoutente ed una base di
dati su mainframe su cui si appoggia il sistema informativo di una grossa azienda.
[3]
In questo contesto non scriveremo nulla sui comandi dell’SQL, ma solo informazioni di alto livello riguardanti questo linguaggio.
3.4.3
Interrogazioni in SQL
La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML.
SQL esprime le interrogazioni in modo dichiarativo, ovvero si specifica l’obiettivo dell’interrogazione e non il modo in cui ottenerlo. In ciò SQL segue i principi
del calcolo relazionale e si contrappone a linguaggi di interrogazione procedurali,
come l’algebra relazionale, in cui l’interrogazione specifica i passi da compiere
per estrarre le informazioni dalla base di dati. L’interrogazione SQL per essere
eseguita viene passata all’ottimizzatore di query (query optimizer), un componente del DBMS il quale analizza l’interrogazione e formula a partire da questa
un’interrogazione equivalente nel linguaggio procedurale interno del sistema di
gestione di basi di dati. Questo linguaggio procedurale è nascosto all’utente. Per
questo, chiunque scriva interrogazioni in SQL può trascurare gli aspetti di traduzione ed ottimizzazione. Il grande sforzo dedicato allo sviluppo di tecniche di
ottimizzazione ha permesso di costruire strumenti che sono in grado di produrre
traduzioni molto efficienti per la maggior parte dei DBMS relazionali.
Esistono in generale molti modi diversi per esprimere la stessa interrogazione
in SQL: il programmatore dovrà effettuare una scelta basandosi non sull’efficienza, bensı̀ su caratteristiche come la leggibilità e la modificabilità dell’interrogazione. SQL agevola cosı̀ il lavoro del programmatore permettendogli di descrivere le
interrogazioni in un modo astratto e di alto livello.
145
3.5. JDBC
3.5
3.5.1
Carlo Caligaris, Iacopo Salvarani
JDBC
Cosa Significa JDBC?
JDBC (Java DataBase Connectivity è una interfaccia standard per connettere Java
con i databases relazionali. Lo standard JDBC è stato definito da Sun Microsystems con la possibilità per tutti gli utilizzatori individuali di implementare ed
estendere lo standard con i propri drivers JDBC. Si può usare JDBC per eseguire
queries ed updates su tabelle dove, per esempio, il numero ed il tipo di colonne
non sono noti fino al runtime. Questa possibilità si chiama SQL dinamico. JDBC
consente di utilizzare istruzioni di SQL dinamico in programmi Java. Evidentemente, non ci sono analisi o controlli delle istruzioni SQL: se queste fossero
sbagliate causerebbero errori durante il runtime. [47]
Nel software da noi progettato viene spesso utilizzata questa proprietà di JDBC:
ad esempio, uno dei nostri programmi genera a runtime una query in cui si richiede
una data dipendente dall’istante di lancio del programma.
JDBC fornisce un insieme di classi di alto livello che consentono a chiunque
conosca SQL e Java di scrivere applicazioni operanti su database. Componenti di
networking e protocolli del database sono trasparenti al programmatore dell’applicazione; questi sono gestiti da classi interne ai drivers JDBC. Le specifiche JDBC
sono concordate all’interno della comunità Java ed ogni concessionario di database deve provvedere ad implementare queste funzioni per rendere il suo prodotto
fruibile dagli utenti. [40]
3.5.2
Gli Oracle JDBC Drivers
Oracle fornisce 4 diversi JDBC drivers.
JDBC Thin Driver
Il JDBC Oracle Thind Driver è un driver al 100% puro Java e quindi è totalmente
indipendente dalla piattaforma su cui viene utilizzato. Non richiede alcuna componente software lato client aggiuntiva oltre al client di Oracle e comunica con il
146
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
server utilizzando TTC, un protocollo sviluppato da Oracle per accedere all’Oracle
RDBMS (Relational DataBase Management System).
JDBC OCI Driver
Questo driver deve essere utilizzato per applicazioni Java lato client, richiede l’installazione del client di Oracle e dipende dalla piattaforma Oracle su cui deve
funzionare. Questo driver è scritto con una combinazione di Java e C e converte le
richieste JDBC in chiamate all’Oracle Call Interface (OCI) usando metodi nativi
per chiamare punti di accesso in C. Queste chiamate sono spedite attraverso la
Oracle Net fino al server.
OCI è una Application Programming Interface (API) che consente di creare
applicazioni che utilizzano procedure native o chiamate di funzioni di un linguaggio di terza generazione per accedere al server di un database di Oracle e controllare tutte le fasi di esecuzione di una istruzione SQL. Il driver OCI è progettato
per costruire applicazioni in grado di sostenere un grande numero di utenti in
sicurezza.
JDBC Server-Side Thin Driver
Questo driver le stesse funzionalità dell’omonima versione client-side ma lavora
all’interno di una base di dati Oracle ed accede ad un database remoto. Questo
consente anche di accedere ad un server dall’interno di un altro. Questo driver
può essere usato indifferentemente dal server e dal client.
JDBC Server-Side Internal Driver
Il driver interno Oracle JDBC server-side supporta ogni tipo di codice Java che
funzioni dall’interno di un database, come ad esempio in una stored procedure, e
debba accedere al database stesso. Questo driver consente alla JVM di comunicare
direttamente con il motore SQL.
147
3.5. JDBC
Carlo Caligaris, Iacopo Salvarani
3.5.3
La Connessione da Java ad Oracle
Nei nostro lavoro abbiamo utilizzato molto spesso la possibilità di connessione al
database Oracle e lo abbiamo fatto usando il thin driver; riportiamo si seguito un
esempio della procedura seguita.
Estratto 3.1
....
Connection c =
connect (”oracle . jdbc . driver . OracleDriver” ,
” j d b c : o r a c l e : t h i n : @SchemaName : 1 5 2 1 : DBName” ,
”....”,
” . . . . ”);
....
p u b l i c s t a t i c C o n n e c t i o n c o n n e c t ( S t r i n g DbDriver ,
S t r i n g dbURL ,
S t r i n g dbUser ,
S t r i n g dbPwd )
throws ClassNotFoundException ,
SQLException
{
C l a s s . forName ( D b D r i v e r ) ;
C o n n e c t i o n dbCon= n u l l ;
dbCon =
DriverManager . g e t C o n n e c t i o n (
dbURL , dbUser , dbPwd ) ;
r e t u r n dbCon ;
}
148
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.6
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
XML
Nel corso del nostro lavoro, abbiamo spesso incontrato la necessità di comunicare dati da un programma ad un altro. Per questo, abbiamo scritto questi dati
migranti su files XML, un linguaggio universalmente accettato per lo scambio di
informazioni.
3.6.1
Introduzione ad XML
Apparentemente, l’XML (eXtensible Markup Language) sembra soltanto un altro
formato per la serializzazione dei dati, simile a tanti altri formati con i quali si è
lavorato in passato. Il suo successo non è però legato solamente alla sua semplicità, ma soprattutto alla sua estensibilità e flessibilità. XML è infatti basato sui
concetti di apertura e libertà. In termini di libertà, esso non obbliga ad utilizzare
una particolare API o uno specifico modello di documento (anche se esistono raccomandazioni a riguardo), e quindi gli sviluppatori sono liberi di decidere come
meglio programmare documenti XML all’interno del loro sistema. In un mondo dove lo scambio di informazioni tra applicazioni eterogenee sta diventando
una caratteristica sempre più comune, lo sviluppatore può utilizzare l’XML come uno standard de facto che rende possibile attraversare i confini solitamente
rappresentati dal sistema su cui si sta lavorando.
La storia dell’XML ha le sue radici nei primi anni Sessanta quando vennero
introdotti i linguaggi con marcatori, come l’HTML. Fin dall’inizio della storia dell’informatica, gli sviluppatori sono stati sempre alla ricerca del miglior modo per
strutturare le informazioni. Praticamente ogni applicazione(da quelle di gestione
database, ai word processor, ai software ingegneristici) hanno utilizzato dei formati binari personalizzati per strutturare le informazioni di cui avevamo bisogno.
A causa di ciò, le informazioni generate da un’applicazione non potevano essere
utilizzate da un’altra applicazione senza prima venire trasformate. Nei primi anni
Sessanta, ai tempi delle telescriventi e delle macchine da scrivere, quando si volevano effettuare delle correzioni ai testi prodotti dai primi elaboratori, venivano
utilizzati degli speciali simboli, chiamati marcatori, che apposti sui fogli prodotti
149
3.6. XML
Carlo Caligaris, Iacopo Salvarani
dalle stampanti, servivano, appunto, a marcare le indicazioni su come formattare una specifica riga, una parola o un paragrafo. Il gruppo di simboli utilizzati
divenne molto presto famoso come markup language. A quei tempi, c’erano fondamentalmente due tipi di linguaggi, quelli specifici per le indicazioni sul layout
e quelli generici per l’indicazione sulla struttura del documento. A questo proposito, il formato RTF (Rich Text Format) è un moderno esempio di specifiche di
formattazione. Al contrario dei linguaggi specifici per la formattazione dei testi,
i linguaggi di markup generici non si occupano dei dettagli della formattazione
quanto della struttura del documento (resta inteso che per ottenerne una specifica
rappresentazione questi dati dovranno essere trasformati). Ciò fa sı̀ che la struttura del documento possa essere codificata in un formato che ne facilita lo scambio
tra i computer. Questa scoperta aprı̀ la strada al successo dei linguaggi di markup
generici che ebbe, appunto, inizio nel corso degli anni Sessanta. [12]
3.6.2
HTML
L’HTML è un markup language che fu inizialmente sviluppato da uno studioso
del CERN ed offre uno specifico vocabolario di marcatori per formattare, strutturare, ma soprattutto collegare tra loro i documenti. La possibilità di effettuare
link tra i documenti ha permesso la creazione di una rete di documenti collegati
tra loro in grado di sfruttare il potenziale di Internet. Nacque cosı̀ il World Wide
Web (WWW). Furono velocemente sviluppati software in grado di visualizzare ed
elaborare documenti HTML (i cosiddetti browser), e a partire dal 1993, anno della comparsa di Mosaic (il primo browser sviluppato dall’NCSA) l’interesse per il
WWW iniziò ad esplodere. Grazie alla sua semplicità, l’HTML fu universalmente adottato ed un grande numero di pagine web iniziarono ad essere disponibili
tanto che a tutt’oggi il formato HTML è quello più usato al mondo. Il comitato
W3C (World Wide Web Consortium) nato nel 1994 al MIT/CERN sviluppa e raccomanda tutte le specifiche dell’HTML per favorirne e governarne l’evoluzione e
lo sviluppo. Il vocabolario implementato dall’HTML è tuttavia limitato alla formattazione ed al collegamento di documenti e per questo motivo non può essere
utilizzato al di fuori dell’ambito dei browser web.
150
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
L’XML fu proposto al W3C nel 1996 da Jon Bosak, che a quei tempi lavorava
in Sun, e che è considerato il padre di questo linguaggio. La sintassi consente di sviluppare un vocabolario di marcatori personalizzati. Oggi XML è usato
in una vasta gamma di applicazioni distribuite che richiedono un alto livello di
interoperabilità. [12]
3.6.3
Che Cosa È l’XML
L’XML è un metalinguaggio che permette di creare linguaggi di marcatura personalizzati per l’interscambio di dati tra siti web ed applicazioni, anche basati
su sistemi differenti. XML usa dei marcatori per definire la struttura delle informazioni (elementi): l’eventuale aggiunta di metadati (attributi) può ulteriormente
definire le specifiche delle informazioni stesse. [12]
Figura 3.7: Un esempio di file XML da noi utilizzato
3.6.4
Lo Stack di Protocolli XML
Fino a pochi anni fa i programmatori che parlavano di XML si riferivano alle
specifiche XML 1.0. Oggi, XML è composto da più parti rispetto alla specifica
nata nel 1998 e quando i programmatori si riferiscono ad esso, intendono l’intera
famiglia di specifiche. Queste vengono considerate come se fossero degli strati
151
3.6. XML
Astratto
Concreto
Carlo Caligaris, Iacopo Salvarani
Classi ed oggetti
Specifico dell’applicazione
Tipi ed istanze
XML Schema
Voci strutturali
XML Information Set
Elementi ad attributi
XML 1.0 + Namespace
Entità e documenti
XML 1.0
Files e pacchetti
Specifico dell’OS e del protocollo
Settori e streams di dati Specifico dell’hardware
Tabella 3.1: Lo stack di protocolli XML
(layers) sovrapposti, dato che le specifiche più recenti sono definite in termini di
specifiche precedenti. Questo meccanismo è simile allo stack di protocolli di rete
(ad esempio il TCP/IP) progettato in termini di strati isolati tra loro.
Al pari dei protocolli di rete, il protocollo XML ha sette distinti livelli. I
due strati di livello più alto definiscono il sistema dei tipi XML nei termini di
modello di dati astratto sottostante; essi definiscono inoltre in che modo le classi
e gli oggetti specifici dell’applicazione debbano essere mappati nei tipi XML. Lo
strato chiamato Infoset definisce l’XML in termini di un modello di dati astratto
che focalizza l’attenzione sulla strutturazione logica di un documento XML. In
altre parole, l’Infoset non si occupa di come debbano essere serializzati i dati
per modellare un documento XML logico. XML 1.0 ed i namespace servono a
definire i documenti XML in termini di elementi ed attributi. Lo strato successivo,
definito come XML 1.0, stabilisce come sono costituiti fisicamente i documenti
XML da entità come files e pacchetti. Il sistema operativo ed i protocolli di rete
rappresentano lo strato successivo in quanto offrono l’astrazione (in termini di
files e pacchetti) che incapsula la complessità relativa all’interfacciamento con i
dispositivi hardware. Il livello hardware non è altro che un insieme di settori e
flussi di dati. [12]
152
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.6.5
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Specifiche XML
XML 1.0 + Namespace
Una delle grandi potenzialità del linguaggio XML è la possibilità di leggere e
scrivere XML da qualsiasi piattaforma. Per ottenere questo risultato, però, si deve
costruire il documento XML seguendo una sintassi ben definita da due specifiche:
XML 1.0 ed i namespaces. Entrambe si occupano della rappresentazione lessicale
e binaria delle informazioni in un documento XML.
In maniera particolare esse hanno a che fare con:
• la sintassi per l’assegnazione dei nomi degli elementi e degli attributi;
• la sintassi per la strutturazione delle informazioni utilizzando gli elementi e
gli attributi;
• la sintassi per altri costrutti dell’XML come direttive di elaborazione, commenti, etc.;
• le modalità di composizione di documenti logici da entità fisiche;
• il set di caratteri usato nel documento;
• l’utilizzo di codifiche differenti in fase di serializzazione;
• l’associazione al documento di risorse binarie come immagini, files audio
ed altro.
Infoset
L’Infoset definisce il modello astratto dei dati e rappresenta il vero cuore dell’XML. Esso codifica il modello di dati astratto dell’XML, che altre specifiche
possono utilizzare per costruire documenti ben formati (well formed) e definisce i
differenti costrutti che servono per creare un documento XML e le relazioni tra di
essi. Per esempio, l’Infoset stabilisce che ogni documento deve contenere al suo
interno le informazioni sotto forma di un singolo elemento figlio. Questo, a sua
volta, può avere zero o più figli ordinati (anche di tipo diverso) ed un insieme di
153
3.6. XML
Carlo Caligaris, Iacopo Salvarani
attributi non ordinati. L’Infoset stabilisce inoltre che ogni elemento ed attributo
debbano contenere due parti di informazione: il nome locale ed il namespace URI.
Nell’Infoset non c’è nulla che abbia a che fare con la sintassi XML o con i dettagli
della serializzazione, in quanto esso è completamente astratto. Infatti, XML 1.0 +
Namespace è solo uno dei possibili formati di serializzazione dell’Infoset. [12]
3.6.6
Le Interfacce di Programmazione
Uno dei motivi di successo dell’XML è costituito dal fatto che non obbliga il
programmatore ad utilizzare una specifica interfaccia di programmazione. Nel
corso degli anni sono state sviluppate numerose API, che si sono avvicendate nel
panorama della programmazione dell’Infoset dell’XML, ma allo stato attuale due
sono le più comuni, quella che offre una vista a cursore e quella che fornisce una
vista del documento nella sua interezza.
Interfaccia per lo Streaming dell’Infoset (parser)
L’analisi (parsing) di un file XML in modalità a cursore, sia in lettura che in scrittura, viene offerta da una interfaccia di streaming per l’Infoset. È bene sottolineare
che allo stato attuale non esiste uno standard che supporti nessuna delle modalità
di streaming e quindi ogni produttore si è creato la sua particolare implementazione. L’implementazione dell’interfaccia di streaming si divide fondamentalmente
in due metodologie ben distinte: pull parsing e push parsing.
In un pull parser è il codice dell’applicazione che esplicitamente riceve gli
eventi dal parser. Solitamente è presente un ciclo nel quale il codice richiede
l’evento successivo dal parser. Poiché è l’applicazione che controlla il parser, si
possono scrivere programmi nei quali vengono gestiti specifici eventi e magari
completamente ignorati altri, che non sono di interesse per l’applicazione.
In un push parser gli eventi vengono spinti verso il client. Tipicamente, un
parser di tipo push richiede che l’applicazione registri un metodo di gestione per
ciascun evento. Durante la lettura del file da parte del parser, per ogni evento viene
154
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
richiamato il metodo appropriato ed il controllo rimane al parser fino al termine
della lettura del documento.
Interfaccia per la Navigazione dell’Infoset (DOM)
Spesso si ha bisogno di leggere (o scrivere) un file XML in maniera non sequenziale, e si potrebbe avere la necessità, per esempio, di invertire l’ordine degli elementi. Il DOM (Document Object Model) è una interfaccia per la manipolazione
dei contenuti e della struttura di un file XML in modalità object-oriented. Esso
definisce un modo standard per la manipolazione di documenti XML con operazioni accesso agli elementi, l’applicazione di stili, il caricamento in memoria, il
salvataggio su disco ed altro ancora.
Il DOM rappresenta il documento XML come un albero di oggetti. Ogni oggetto nell’albero è chiamato nodo. Esistono vari tipi di nodo che rispecchiano
praticamente tutte le componenti di cui è costituito un documento XML, tra cui
Document, Element, Attr. Alcuni nodi possono avere un sottonodo ed è possibile
anche specificare il tipo dello stesso.
Il DOM è indipendente dal linguaggio e dalla piattaforma utilizzata, il che
significa che può essere utilizzato con qualsiasi linguaggio o framework o sistema
operativo ed esiste praticamente un’implementazione di DOM in ogni linguaggio
di programmazione.
Essendo un’API molto potente, DOM appare come la scelta preferenziale da
applicare in qualsiasi scenario, ma in realtà non è detto che sia sempre la scelta
migliore. Infatti, quando un’applicazione deve lavorare con documenti di grosse
dimensioni, il sovraccarico dovuto all’implementazione del modello DOM può
essere un grosso problema e la modalità parsing diventa un’alternativa molto interessante. Grazie alla sua caratteristica di cursore, viene letto un solo nodo per
volta e, soprattutto nel modello pull, non si è nemmeno costretti a prenderlo in
considerazione se rappresenta un nodo non rilevante per l’applicazione. È anche
interessante notare che quasi tutte le implementazioni di DOM utilizzano le classi
di parsing per il caricamento e la scrittura dei file da/verso il disco. [12]
155
3.6. XML
Carlo Caligaris, Iacopo Salvarani
Figura 3.8: La Struttura ad Albero Tipica dell’XML [51]
3.6.7
Altre Specifiche XML
Esistono altre specifiche collaterali che vengono fornite allo sviluppatore tutta una
serie di funzionalità di elaborazione e gestione del file stesso.
XML Path
XPath definisce una sintassi uniforme per identificare sottoinsiemi dell’Infoset.
XML Path definisce un linguaggio basato su percorsi collegato alle relazioni di parentela che intercorrono tra i nodi dell’albero che è la rappresentazione in memoria
del documento XML.
XML Schema
Un XML Schema definisce i tipi di dato per una specifica applicazione nei termini
dell’Infoset. Una problematica collegata ai linguaggi di markup è quella della
156
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
validazione di un documento, e cioè la verifica che gli elementi e gli attributi
in esso contenuti rispettino determinati requisiti, stabiliti dall’applicazione. In
questo senso, ad un documento XML è possibile associare un file DTD, che serve
a descriverne la struttura in termini di nome e posizione di elementi ed attributi.
[12]
157
3.6. XML
Carlo Caligaris, Iacopo Salvarani
Nodo radice
Istruzioni di elaborazione
Documento
Commenti
Elemento
Attributo
Testo
Elemento
Elemento
Elemento
Attributo
Attributo
Testo
Testo
Elemento
Elemento
Figura 3.9: La Struttura di un file XML [12]
158
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.6.8
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Java ed XML
Il linguaggio Java consente di interagire con XML tramite librerie create appositamente. Nel nostro lavoro abbiamo utilizzato una libreria sviluppata internamente
alla Società Autostrade in grado di fornire un accesso tramite DOM ai files di nostro interesse. Le stesse classi sono state utilizzate anche per la scrittura su files
XML.
159
3.7. SVG
3.7
Carlo Caligaris, Iacopo Salvarani
SVG
I dati che abbiamo memorizzato nei files XML, spesso hanno avuto bisogno di
una rappresentazione grafica. Si è reso quindi necessario trovare un dispositivo
grafico in grado di leggere i files XML, estrarre i dati di interesse e mostrarli a
schermo previa una qualche trasformazione per migliorarne la leggibilità.
A questo scopo, abbiamo utilizzato l’SVG (Scalable Vector Graphics).
3.7.1
Cosa è SVG
SVG è un linguaggio utilizzato per definire elementi grafici vettoriali normalmente diffusi attraverso il Web. La grafica di SVG è definita in formato XML ed ha
la proprietà di non perdere qualità qualora dovesse essere ridimensionata. Inoltre, ogni elemento ed ogni attributo dei files SVG può essere animato. Il World
Wide Web Consortium (W3C) raccomanda l’utilizzo di questo standard. SVG
si integra con altri standard raccomandati dal W3C come il DOM e l’XSL. La
raccomandazione è divenuta ufficiale nel Gennaio 2003. [50]
3.7.2
Storia e Vantaggi di SVG
Sun Microsystems, Adobe, Apple, IBM e Kodak sono tra le organizzazioni più note
che sono state coinvolte nella definizione dell’SVG. I vantaggi di usare SVG in
luogo degli altri formati (come JPEG e GIF) sono:
• i file possono essere letti e modificati da un grande insieme di strumenti (tra
cui Notepad o un qualunque editor di testo);
• i files sono più piccoli e più facilmente comprimibili dei JPEG o GIF;
• le immagini sono scalabili;
• le immagini possono essere stampate con alta qualità a qualsiasi risoluzione;
• le immagini possono essere ingrandite ed ogni parte di una immagine può
essere ingrandita senza degradazione;
160
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
• il testo dell’SVG è selezionabile e può essere cercato all’interno della pagina (ideale per le mappe);
• SVG lavora con tecnologia Java;
• SVG è uno standard aperto;
• il files SVG sono puri XML.
Il principale competitor per SVG è Flash. I due hanno molte componenti simili.
Il più grande vantaggio che SVG ha rispetto a Flash è la compatibilità con altri
standard; Flash si affida a tecnologia di sua proprietà che non è open source. Il
difetto principale di SVG è che, al momento, non tutti i browser lo supportano.
Internet Explorer, in versioni successive alla 5, consente l’utilizzo di SVG; Mozilla Firefox sta lavorando per consentire ai suoi utenti la completa compatibilità
con questo standard.
Per vedere i files SVG, è comunque necessario scaricare gratuitamente dal sito
Adobe il plug-in SVG Viewer ed installarlo. [50]
161
3.8. JAVASCRIPT ED HTML
3.8
3.8.1
Carlo Caligaris, Iacopo Salvarani
JavaScript ed HTML
Cosa è JavaScript
JavaScript è un linguaggio di scripting, basato su oggetti, che viene utilizzato per
sviluppare applicazioni per Internet. Venne implementato per la prima volta nel
Giugno 1995 nella versione beta del browser Navigator 2.0 di Netscape. Tale
linguaggio ha apportato un notevole cambiamento alle pagine HTML: grazie ad
esso, alcuni effetti sono diventati più facili da realizzare e la dinamicità delle pagine Web non è più stata confinata alle sole GIF animate. Oggi tutti i browser più
importanti hanno al loro interno un interprete JavaScript.
Il 1995, inoltre, resta una pietra miliare nello sviluppo di Internet, perchè accanto a Netscape, un’altra azienda saliva all ribalta, la Sun Microsystems Inc.,
che aveva presentato ad inizio anno Java, il linguaggio evoluto che si proponeva
di diventare uno standard nella comunicazione in rete. Spesso si confonde Java
con JavaScript, ma i due linguaggi sono profondamente diversi, pur presentando
qualche aspetto in comune come:
• la somiglianza sintattica di molti costrutti ed espressioni, ereditati dal C;
• la possibilità che entrambi offrono di avviare contenuto eseguibile all’interno di pagine Web.
Anche il nome dei due linguaggi è simile, ma ciò è del tutto casuale: infatti JavaScript, alla sua prima apparizione, si chiamava LiveScript, per parallelismo con
LiveWire, un linguaggio che la stessa Netscape aveva messo a punto per la gestione
della programmazione dal lato server; i due linguaggi, affermatisi contemporaneamente, non potevano però che avere vite parallele ed infatti, nel Dicembre 1995,
la Netscape e la Sun annunciarono la decisione di collaborare sinergicamente allo
sviluppo di LiveScript, che finı̀ con il prendere il nome attuale di JavaScript. [15]
162
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.8.2
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
Scripting e Programmazione
Come accennato, JavaScript è un linguaggio di scripting e non un linguaggio di
programmazione. Pur avendo molti aspetti in comune, questi due tipi di linguaggi
presentano notevoli differenze. Un linguaggio di scripting può controllare il comportamento del browser ed il suo contenuto, ma non può effettuare elaborazioni
grafiche o gestire la rete, mentre un linguaggio di programmazione non ha alcuna
possibilità di controllare il browser nella sua interezza, ma può gestire la grafica,
la rete e possiede funzionalità avanzate che permettono di creare e gestire processi
paralleli, comportandosi come un sistema operativo in miniatura. JavaScript dispone di diverse caratteristiche appositamente progettate per renderlo semplice da
usare. Sotto questa apparente semplicità, però, si nasconde la completezza che si
riscontra in un linguaggio di programmazione. [15]
3.8.3
Principali Caratteristiche di JavaScript
JavaScript ha alcune caratteristiche peculiari:
• è un linguaggio interpretato;
• è un linguaggio basato sugli oggetti;
• è un linguaggio guidato dagli eventi;
• il nucleo del linguaggio è stato incorporato all’interno dei browser;
• esistono sia la variante lato client che quella lato server.
La variante lato client è quella più comune ed è anche quella da noi utilizzata
per i nostri scopi. Essa permette l’inserimento di contenuti eseguibili all’interno
di pagine Web; in questo modo, le pagine Web non sono più pagine statiche,
ma diventano pagine attive o dinamiche, cioè possono comprendere programmi
che interagiscono con l’utente, controllando il browser e creando dinamicamente
nuovi contenuti HTML.
163
3.8. JAVASCRIPT ED HTML
3.8.4
Carlo Caligaris, Iacopo Salvarani
Come Inserire uno Script in un Documento HTML
L’HTML prevede un tag apposito per gli script.
Estratto 3.2
<SCRIPT LANGUAGE=”Nome l i n g u a g g i o d i s c r i p t i n g ”>
Istruzioni
s c r i t t e con un l i n g u a g g i o d i s c r i p t i n g
< / SCRIPT>
Quando il browser, analizzando un documento HTML, incontra il tag <SCRIPT>,
interpreta il codice presente al suo interno e lo esegue dall’alto verso il basso. Se
durante l’esecuzione incontra un errore, può succedere che il documento venga visualizzato, ma il codice errato non sia eseguito oppure che il documento
resti bianco o visualizzato parzialmente, perché l’esecuzione del codice è stata
interrotta.
In linea di principio, uno script JavaScript può essere inserito in due modi
all’interno di un documento HTML:
• inserendo il codice nel documento HTML sia nel BODY che nell’HEAD;
• caricandolo da un file esterno.
Quando lo script è salvato in un file con estensione .js, può essere richiamato
mediante l’attributo SRC dell’elemento SCRIPT.
Estratto 3.3
<SCRIPT LANGUAGE=” J a v a S c r i p t ” SRC=” N o m e f i l e . j s ”>
< / SCRIPT>
Il file esterno viene eseguito all’interno del documento HTML. Ciò vuol dire che questo file viene solo letto come file di testo, trasferito nell’HTML nella
posizione di richiamo e poi eseguito. [15]
164
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
3.8.5
CAPITOLO 3. STRUMENTI INFORMATICI UTILIZZATI
ECMAScript
Lo Standard ECMA è uno standard di scripting basato su varie tecnologie, tra
cui le più note sono JavaScript (Netscape) e JScript (Microsoft). Lo sviluppo
di questo standard è iniziato nel Novembre 1996 e la sua prima edizione è stata
adottata dall’Assemblea Generale ECMA nel Giugno 1997.
[46]
165
3.8. JAVASCRIPT ED HTML
Carlo Caligaris, Iacopo Salvarani
166
Capitolo 4
Oggetto del Lavoro
Figura 4.1: Night Motorway [60]
167
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
4.1
Carlo Caligaris, Iacopo Salvarani
Presentazione del Tratto Milano-Brescia
Come abbiamo già detto in precedenza, il nostro obiettivo è stato quello di costruire un simulatore di traffico autostradale relativo alla tratta Milano - Brescia
della Autostrada A4. Questa tratta ha caratteristiche particolari sotto vari punti di
vista:
• è tra quelle che sopporta i maggiori flussi di traffico;
• ha moltissimi strumenti di rilevazione (se confrontati con quelli delle altre
tratte) lungo il tracciato;
• può essere considerata come un tratto “chiuso” (questo importante concetto
sarà approfondito in seguito).
Nelle seguenti Sottosezioni analizzeremo questi aspetti.
4.1.1
La Autostrada A4
Il tratto Milano - Brescia è una parte dell’Autostrada A4, detta Serenissima. Essa
attraversa da Ovest ad Est l’intera Pianura Padana, partendo da Torino, passando per Milano e terminando a Trieste. Numerose sono le interconnessioni con le
altre grandi arterie autostradali. La A4 dispone, nel tratto tra Torino e Venezia,
di tre corsie più una d’emergenza (ad eccezione di pochi tratti in concomitanza
del passaggio sopra fiumi come nel caso del viadotto sull’Adda situato tra Trezzo
sull’Adda e Capriate San Gervasio). Il tratto compreso tra Venezia e Trieste è, al
momento attuale, ancora con sole due corsie per ogni senso di marcia. Nel 2005
sono iniziati i lavori per aggiungere la quarta corsia nel tratto Milano-Bergamo,
mentre si attende la conclusione dei lavori che hanno interessato il tratto tra Torino e Milano, collegati ai cantieri dell’alta velocità ferroviaria. Da sempre questa
autostrada è considerata uno dei punti nevralgici della rete viaria italiana facendo
parte di uno dei più importanti corridoi europei che collegano l’estremità della
Penisola Iberica con le nazioni dei Balcani. Il suo percorso, di circa 530 km, è gestito da società diverse come Autostrade per l’Italia, Autostrada Brescia, Verona,
168
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Vicenza, Padova, Società delle Autostrade di Venezia e Padova e Autovie venete.
[52]
La Storia dell’Autostrada Torino-Milano inizia negli anni Venti dello scorso
Secolo, quando il Senatore Frola, appoggiato dalla Provincia e dal Comune di Torino, dal Touring, dall’ACI e da altri Enti pubblici e privati costituisce un Comitato
avente lo scopo di promuovere lo studio di fattibilità dell’opera ed iniziarne la progettazione preliminare. La reale costruzione iniziò però grazie al Senatore Agnelli
e all’Ing. Cartesegna che costituirono la S.A. Autostrada TorinoMilano, ne divennero rispettivamente Presidente ed Amministratore Delegato/Direttore Generale e
nel ’29 firmarono la convenzione per la costruzione e l’esercizio dell’opera.
Figura 4.2: Gli inizi della Torino-Milano [45]
Il Senatore Agnelli aveva infatti, tra i primi, intuito la necessità di una via
di trasporto speciale per i veicoli a motore, anche e soprattutto come fattore di
promozione commerciale dell’automobile. La costruzione durò meno di 3 anni e l’autostrada venne inaugurata nell’ottobre 1932. L’Autostrada attivava un
nuovo ed importante collegamento tra Torino e Milano e, assieme alle autostrade Bergamo-Milano, Brescia-Bergamo (già in esercizio) e Venezia-Padova (in
costruzione) si inseriva nel disegno della progettata “strada automobilistica pedealpina Torino-Trieste”. La ferrovia costruita nell’800 non aveva, infatti, ancora
creato un collegamento adeguato, diretto e veloce, tra le due città.
Il traffico fu sempre consistente, sin dai primordi dell’esercizio, grazie anche
169
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
alla politica tariffaria adottata dalla Società, che applicava tariffe di pedaggio relativamente basse; la media dei passaggi giornalieri raddoppiò nel breve volgere
di sette anni. Il flusso veicolare è passato dai circa 700.000 passaggi/anno dei
primi anni di vita dell’infrastruttura agli oltre 35.000.000 di oggi e l’infrastruttura
è molto cambiata adattandosi alle esigenze che si modificavano. In particolare,
nel 1953, in seguito ad un notevole incremento di traffico, la larghezza del piano
viabile venne portata dagli 8 metri originali ai 10 metri e, nel 1962, oramai alle
soglie della grande industrializzazione del Paese, l’autostrada venne raddoppiata.
Figura 4.3: Le due corsie dell’autostrada [45]
All’inizio degli anni Settanta, infine, si passò ad una configurazione a tre corsie
per senso di marcia. L’autostrada è divisa in due tratte: una cosiddetta “a sistema
aperto” ovvero dove il pedaggio viene corrisposto in una barriera e gli svincoli
intermedi sono privi di stazione di esazione, ed una “a sistema chiuso” dove il
pedaggio corrisposto dipende dalla percorrenza effettuata. In totale vi sono 4
interconnessioni con altre autostrade, 6 svincoli senza stazione di esazione, 13
stazioni di uscita con esazione e 2 barriere terminali. Interventi futuri prevedono,
inoltre, il collegamento autostradale con il nuovo Polo Fieristico Milanese (in zona
Pero) e il collegamento autostradale Carisio-Biella (18 km). [45]
170
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
4.1.2
CAPITOLO 4. OGGETTO DEL LAVORO
Il Tratto Milano-Brescia
Dopo un percorso denominato tratto urbano della A4 in cui l’autostrada passa
a Nord della città di Milano, attraversando le zone fortemente industrializzate di
Cormano, Cinisello Balsamo e Sesto San Giovanni e dove, in molte ore della giornata, il traffico risulta quasi paralizzato, nella A4 confluisce, nei pressi di Agrate
Brianza dove è situato il casello di Milano Est, il traffico in arrivo dall’autostrada A1 attraverso la Tangenziale Est di Milano. Con un percorso di quasi 90 km
l’autostrada si snoda completamente in territorio lombardo, presentando un percorso completamente pianeggiante e rettilineo ad eccezione di una impegnativa
curva in concomitanza con il casello autostradale di Bergamo. A Brescia viene
intersecata l’autostrada A21, anch’essa originata a Torino, ma con un percorso più
meridionale rispetto alla A4 attraverso Alessandria, Piacenza e Cremona. [52]
Figura 4.4: Il tratto Milano-Brescia [53]
In Figura 4.4 si può vedere il tratto Milano-Brescia cosı̀ come appare su AutoTraf. Nella Tabella 4.1, riportiamo invece le principali caratteristiche del tratto
mutuate dal database interno.
171
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
Tratta
Codice Ent.
Entrata
Codice Usc.
Uscita
Lunghezza
1
654
Milano Est
655
Tangenziale Milano
6.2 km
2
655
Tangenziale Milano
653
Agrate
2.4 km
3
653
Agrate
652
Cavenago
4.7 km
4
652
Cavenago
651
Trezzo
9.0 km
5
651
Trezzo
650
Capriate
2.6 km
6
650
Capriate
649
Dalmine
7.6 km
7
649
Dalmine
648
Bergamo
5.2 km
8
648
Bergamo
647
Seriate
7.1 km
9
647
Seriate
646
Grumello
9.1 km
10
646
Grumello
645
Ponte Oglio
3.8 km
11
645
Ponte Oglio
644
Palazzolo
2.7 km
12
644
Palazzolo
643
Rovato
8.7 km
13
643
Rovato
643
Ospitaletto
5.5 km
14
642
Ospitaletto
641
Brescia Ovest
9.4 km
Tabella 4.1: Le stazioni della Milano-Brescia
Sempre in Figura 4.4 vediamo anche tutta la sensoristica distribuita lungo il
percorso. I sensori sono sincronizzati attraverso il protocollo NTP (Network Time
Protocol), per garantire l’assoluta precisione nella determinazione dell’istante di
rilevamento del dato.
Figura 4.5: Legenda di AutoTraf [53]
172
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
In particolare, noi utilizziamo i dati provenienti da ingressi, uscite, spire e boe.
Nei paragrafi seguenti illustreremo in che modo il database riflette le informazioni
in arrivo dalla rete.
Ingressi
I dati provenienti dagli ingressi riguardano, tra le altre, le informazioni sull’ora di
ingresso di ogni veicolo, sul numero del biglietto a cui essa è associata o al codice
Telepass con il quale è entrata. In effetti, la sensoristica mette a disposizione altri
dati che però non sono di interesse per questa trattazione. Questi dati vengono
organizzati in quattro tabelle: TTPMA3 ENT, TTPMA3 ENT 1, TTPMA3 ENT 2
e TTPMA3 ENT 3. Ciascuna di esse contiene i dati relativi ad un numero di giorni
precedenti uguale all’ultimo numero del loro nome. Ad esempio, TTPMA3 ENT 2
contiene i dati relativi agli ingressi di due giorni prima rispetto al momento dell’interrogazione del database. In realtà, l’aggiornamento delle tabelle non avviene
precisamente alla mezzanotte, ma ad un’ora variabile intorno alle 02:03:00
AM. La struttura di queste tabelle è parzialmente simile alla seguente.
Estratto 4.1
◦ Codice Stazione Ingresso (C STZ)
◦ Ora di Ingresso (D ENT)
◦ Codice Biglietto (C APP)
◦ Codice Apparato Telepass (C APP)
◦ ...
Uscite
I dati provenienti dalle uscite sono organizzati in un modo molto simile a quello
con cui sono organizzati i dati provenienti dagli ingressi. L’articolazione in quattro
tabelle viene utilizzata anche in questo caso e la radice della famiglia di queste
tabelle è: TTPMA2 USC. Rispetto alla struttura precedente, viene aggiunto un
campo molto importante che riporta la stazione da cui è entrato il veicolo di cui si
173
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
sta rilevando l’uscita. Inoltre, viene anche riportata l’ora di ingresso del veicolo
stesso.
Estratto 4.2
◦ Codice Stazione Uscita (C STZ)
◦ Ora di Uscita (D MSG)
◦ Codice Stazione Ingresso (C STZ ENT)
◦ Ora di Ingresso (D MSG ENT)
◦ Codice Biglietto (C APP)
◦ Codice Apparato Telepass (C APP)
◦ ...
Purtroppo, lungo tutto il periodo del nostro lavoro, la stazione 655 non ha mai
funzionato: il problema è relativo al mancato trasferimento dei dati sul database.
Le uniche informazioni su questa stazione sono ottenibili dalle tabelle delle uscite: infatti, gli utenti entrati alla stazione 655 ed usciti in una qualunque stazione
del nostro tratto, vengono regolarmente rilevati grazie al campo di questa tabella
contenente il codice della stazione di ingresso.
Le piste Telepass accumulano i dati (messaggi) relativi all’entrata ed all’uscita
di veicoli in files che sono inviati circa ogni 10’ ad un server centrale, via FTP.
Il tempo che intercorre tra l’evento e l’invio del messaggio ad esso relativo, rende tuttavia inadeguato questo meccanismo di acquisizione per quanto riguarda il
progetto AutoTraf. Per questo motivo, è stato modificato il software delle piste, attivando un flusso di acquisizione parallelo a quello tradizionale della fatturazione,
che prevede l’invio del singolo messaggio al server centrale nel momento stesso
in cui viene generato. Per ridurre al minimo l’overhead delle piste, si è scelto di
utilizzare il protocollo UDP per l’invio dei dati, senza eseguire quindi alcun controllo sul recapito del messaggio. La perdita di una bassa percentuale di messaggi
non è, stata valutata come limitativa per un’applicazione di tipo statistico come
AutoTraf. [4]
174
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Sistemi PMT o Boe in Itinere
I sistemi PMT, detti boe in itinere, utilizzano la tecnologia Telepass per rilevare il
passaggio di veicoli dotati di apparato di bordo. Collocati in opportune posizioni
sopra la sede autostradale, in prossimità di PMV (Pannelli a Messaggio Variabile)
o di cavalcavia, inviano al sistema centrale un messaggio contenente il codice del
sensore, il codice dell’apparato e l’istante in cui la rilevazione ha avuto luogo,
utilizzando il protocollo UDP. Questi sistemi sono stati sviluppati a partire dalle
piste Telepass ritagliandone le funzionalità e personalizzando i meccanismi di autodiagnosi. [4] Le boe in itinere sono lo strumento di rilevazione più diffuso lungo
la rete, ma, purtroppo, sono anche quello meno affidabile. Infatti, è molto difficile
prevedere la percentuale di veicoli che le boe riusciranno a rilevare in rapporto al
totale dei veicoli transitati. In pratica, queste boe sono gruppi di rilevamento talvolta costituiti da una sola antenna, altri da due ed altri ancora da tre. Nel nostro
tratto, le boe hanno tutte due antenne: tuttavia, non esiste una relazione precisa e
sicura su quanti autoveicoli si perdano in funzione del numero di antenne.
La struttura delle tabelle TTPMA1 BOE (anche esse replicate per conservare i dati
dei giorni precedenti) è rappresentata in seguito.
Estratto 4.3
◦ Numero Progressivo della Boa (N PRG)
◦ Codice Apparato Telepass (C APP)
◦ Ora del Passaggio (D MSG)
◦ ...
Spire
Le spire sono lo strumento di rilevazione più affidabile e completo sul quale si
possa fare affidamento. Sono anche i sensori più costosi, dal momento che richiedono una tecnologia avanzata, e sono di difficile installazione a causa della loro
particolare locazione. Infatti, devono essere immerse nell’asfalto sotto il piano
stradale. Nel tratto di nostra competenza sono installate tre spire: una lungo la
175
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
tratta 6, una lungo la tratta 9 ed una poco dopo il casello di Brescia Ovest in
direzione di Venezia. La tabella contenente i dati provenienti dalle spire è unica:
questo significa che tutti i dati sono compresi in (TTPM66 DAT SPR), aggiornata
con un periodo inferiore ai 4 giorni. Quindi, i dati provenienti dalle spire sono mediamente più recenti di quelli provenienti dalle boe: volendo eseguire una analisi
incrociata retrospettiva, bisogna assumere la tabella delle spire come riferimento
postdatato per il tempo in corrispondenza del quale si possono ancora trovare informazioni.
I dati delle spire, al contrario di quelli degli altri tre strumenti sopra illustrati, vengono aggregati lungo il tempo. Quindi, mentre le altre tabelle hanno una nuova
riga per ogni mezzo rilevato, questa ha una riga che riassume i dati dell’ultimo
intervallo di tempo. L’intervallo di tempo è variabile, ma per le spire del nostro
tratto è sempre pari a 60 secondi. In pratica, ogni riga contiene la somma dei dati
del minuto precedente. I campi rilevanti sono quelli elencati di seguito.
Estratto 4.4
◦ Codice della Centralina Contenente la Spira (C CEN)
◦ Numero della Corsia (N CRS)
◦ Ora del Messaggio (D MSG)
◦ Somma dei Veicoli (N TOT VEI)
◦ Velocità Media (VEL MED)
◦ Deviazione Standard della Velocità (DEV STD VEL MED)
◦ Gap Medio (GAP MED)
◦ Deviazione Standard del Gap (DEV STD GAP MED)
◦ Headway Medio (HDW MED)
◦ Deviazione Standard dell’Headway (DEV STD HDW MED)
◦ Densità (DEN)
176
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
◦ ...
Le corsie sono numerate come in Figura 4.6
Figura 4.6: Numerazione delle corsie
Il gap è definito come la distanza media che intercorre tra la coda di un veicolo
e la testa del veicolo seguente. L’headway è invece la distanza media tra due teste
consecutive. In questa tabella, i vari dati calcolati come media possono essere
anche valutati alla luce della loro deviazione standard.
4.1.3
Quante Auto hanno il Telepass?
Per i nostri programmi, serve una percentuale piuttosto precisa che reppresenti
quante, delle auto che passano mediamente sotto una boa con due antenne, vengono rilevate. Come abbiamo già detto, le boe possono solo riconoscere le auto
con il telepass, ma tendono a “perdere” anche alcune di queste. Abbiamo cosı̀
calcolato il rapporto tra utenti con il telepass ed utenti totali ed abbiamo infine
cercato di calcolare il rapporto tra utenti rilevati sotto una boa ed utenti totali.
177
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
Percentuale di Telepass
Per calcolare la percentuale di auto con il Telepass, possiamo confrontare i dati
provenienti dagli ingressi del nostro tratto e valutare su quante di esse è montato
il Telepass. Per ottenere il totale delle auto entrate in ciascuna delle stazioni di
nostro interesse possiamo eseguire la query 4.5.
Estratto 4.5
SELECT C STZ COUNT(D MSG)
FROM TTPMA3 ENT
WHERE D MSG BETWEEN
TO DATE( ’ 08−11−2005 7 : 3 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 08−11−2005 1 3 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C STZ>=641 AND C STZ<=656
GROUP BY C STZ
Abbiamo considerato un intervallo di tempo di quattro ore e mezza in una
giornata “qualunque” (8 Novembre 2005). I risultati sono riportati in Tabella 4.2.
Vogliamo una struttura speculare anche per le entrate che riguardano i soli
utenti con il telepass.
Estratto 4.6
SELECT C STZ , COUNT( C STZ )
FROM TTPMA3 ENT
WHERE D ENT BETWEEN
TO DATE( ’ 08−11−2005 7 : 3 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 08−11−2005 1 3 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C STZ>=641 AND C STZ<=656
178
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Codice Stazione
Totale Entrate
641
6542
642
3827
643
3609
644
3250
645
1760
646
3032
647
4470
648
9831
649
3822
650
5885
651
4443
652
4009
653
6428
654
15986
656
4514
Totale
81408
Tabella 4.2: Il totale delle entrate per ogni stazione in un intervallo di quattro ore
e mezza
AND ( C APP<>’ 00000000 ’
AND C APP NOT LIKE ’ F%’
AND C RET = 1 )
GROUP BY( C STZ ) }
Otteniamo il risultato di Tabella 4.3.
Il rapporto 53875/81408 rende un risultato pari a 0.66.
Abbiamo anche seguito lo stesso procedimento estendendo il periodo di osservazione ad una giornata intera. Come prevedibile, il rapporto è leggermente sceso,
attestandosi a 0.63.
179
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
Codice Stazione
Totale Entrate
641
4396
642
2713
643
2404
644
2196
645
1164
646
2095
647
3061
648
6273
649
2499
650
3877
651
3040
652
2633
653
3932
654
10338
656
3164
Totale
53785
Tabella 4.3: Il totale delle entrate per ogni stazione, considerando i soli utenti
muniti di telepass, nello stesso intervallo di tempo della Tabella 4.2
180
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Percentuale di Veicoli Recepiti da una Boa
Secondo quanto già espresso, ci aspettiamo di trovare un coefficiente inferiore a
quello trovato in precedenza. Per ottenere una stima attendibile di questo fattore,
abbiamo sviluppato una analisi che sfrutta dati provenienti da vari strumenti di
rilevazione.
Consideriamo la situazione di Figura 4.7.
Figura 4.7: Posizionamento della spira 24
Anche in questo caso abbiamo un periodo di osservazione di quattro ore e
mezza. Cerchiamo di trovare il numero di veicoli transitati sopra la spira 24
(centralina 267).
Estratto 4.7
SELECT SUM( N TOT VEI )
FROM VTPM66 DAT SPR
WHERE D ORA BETWEEN
TO DATE( ’ 08−11−2005 7 : 3 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 08−11−2005 1 3 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C CEN=267 AND N CRS>=1 AND N CRS<=3
181
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
Il risultato è NTOT = 18393.
Contiamo quindi quante auto transitano sotto la boa 26 nello stesso intervallo di
tempo.
Estratto 4.8
SELECT COUNT( ∗ )
FROM TTPMA1 BOE
WHERE D MSG BETWEEN
TO DATE( ’ 08−11−2005 7 : 3 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 08−11−2005 1 3 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND N PRGA=26
Il risultato è NBOE = 9039.
Contiamo anche quante macchine sono uscite alla stazione 646. Le auto che sono
uscite nella direzione che ci interessa sono tutte quelle che sono entrate in una
delle entrate a monte della 646 (entrate comprese tra 647 e 656). Si noti come, in
questa query, si dovrebbe usare un riferimento temporale leggermente diverso (i
due estremi andrebbero leggermente aumentati). Infatti, se un’auto fosse passata
sopra la spira alle 7:00, non sarebbe potuta uscire se non dopo un tempo pari
a quello di percorrenza della distanza tra la spira e l’uscita. In questo caso si
assume che il flusso rimanga costante per qualche minuto intorno alle 7:00 ed alle
13:00.
Estratto 4.9
SELECT COUNT( ∗ )
FROM TTPMA2 USC
WHERE D MSG BETWEEN
TO DATE( ’ 08−11−2005 7 : 3 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 08−11−2005 1 3 : 0 0 : 0 0 ’ ,
182
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C STZ =646 AND C STZ ENT>646 AND C STZ ENT<=656
Il risultato è NUSC = 1037.
Il coefficiente che cerchiamo è quindi:
9039
NBOE
=
= 0.5208.
NTOT − NUSC
18393 − 1037
(4.1)
Come atteso, questo risultato è leggermente inferiore al precedente.
Questo coefficiente è molto importante: quando cercheremo di desumere il flusso di una tratta a partire dai dati rilevati da una boa, dovremo ricordarci di aver
rilevato solo una percentuale del flusso effettivo e dividere il valore trovato per il
coefficiente appena determinato.
4.1.4
Matrice di Ingresso ed Uscita
La matrice di ingresso ed uscita è una matrice quadrata con tante righe (e quindi
altrettante colonne) quante sono le stazioni del nostro tratto. Ogni elemento xij
della matrice indica quante auto entrano alla stazione i ed escono alla stazione j.
Da questa matrice, otteniamo una informazione statistica molto importante: per
ogni stazione possiamo prevedere, in percentuale, quante auto andranno in una
direzione e quante andranno nell’altra. Infatti, nessuno strumento presente sulla
rete è posizionato in modo tale da poterci fornire questa informazione.
Abbiamo deciso di utilizzare un approccio che prende le mosse dai dati ottenuti dalle entrate: l’idea è quella di considerare i codici telepass di tutti coloro che
sono entrati in autostrada tra le 4:00 e le 20:00 del giorno precedente alla data di
riferimento (in modo da dare a tutti il tempo di uscire). Ricordiamo che il nostro
obiettivo è quello di determinare la probabilità che un veicolo che entra in una
data stazione muova verso una direzione piuttosto che un’altra. Lo schema logico
è riassumibile come segue.
• Un telepass entra in una delle nostre stazioni.
183
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
• Andiamo a cercare il codice telepass tra le uscite delle nostre stazioni.
• Se lo troviamo, allora conosciamo il percorso fatto.
• Se non lo troviamo, allora non possiamo che concludere che sia uscito dalla
spira di Brescia.
Evidentemente, il caso della stazione 654 (la prima stazione del tratto) è piuttosto
semplice: chi entra da quella stazione non può che andare in direzione di Brescia.
Tuttavia, vige un sistema di gestione dei dati particolare e non intuitivo. Per illustrarlo, dobbiamo spiegare la configurazione dei tratti autostradali e non della
periferia di Milano. Le auto che escono alla barriera di Milano Est, si immettono
in un tratto autostradale a sistema aperto e che mette a disposizione alcune uscite (come, ad esempio, Milano Viale Zara) che non hanno un relativo casello di
esazione. Questo tratto può però condurre ad un’altra barriera, quella di Milano
Nord, da dove inizia nuovamente un tratto autostradale soggetto a tariffa fissa.
Se un mezzo entra nel nostro tratto, esce dalla barriera di Milano Est e rientra
dalla barriera di Milano Nord, la combinazione di uscita ed entrata viene eliminata dal database e si conserva solo il dato sull’entrata originale a cui si aggiunge
successivamente quello sull’uscita. Questo comportamento è stato desunto da osservazioni sperimentali che abbiamo fatto sul database. Le uscite effettivamente
assegnate a Milano Est sono quelle delle auto che escono in uno degli svincoli
“liberi” presenti tra le due barriere.
Questo problema rende inutilizzabili i dati provenienti dall’uscita di Milano Est.
Infatti, a noi interessano tutti i veicoli transitati dalla barriera, a prescindere dalla
loro destinazione finale. Fortunatamente, come si può vedere in Figura 4.8, subito
dopo Milano Est, è posizionata una boa, (la 231).
184
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Figura 4.8: La situazione alla barriera di Milano Est
Tutte le auto in uscita da Milano Est, devono transitare sotto lo boa 231. Abbiamo visto però che la boa non recepisce tutti i telepass in transito sotto le sue
antenne. In questo caso, abbiamo supposto che questo errore fosse trascurabile e non abbiamo introdotto un coefficiente correttivo desumibile da quelli della Sottosezione precedente (anche perché si può ragionevolmente pensare che le
boe “perdano” passaggi in modo indipendente dalla stazione di provenienza dei
veicoli).
Vediamo adesso le queries che ci consentono di trovare i dati di nostro interesse.
Estratto 4.10
SELECT DISTINCT ENTRATE . C STZ ,
USCITE . C STZ , COUNT(ENTRATE . C APP )
FROM TTPMA3 ENT 1 ENTRATE, TTPMA2 USC 1 USCITE
WHERE ENTRATE . C APP<>’ 00000000 ’
AND ENTRATE . C RET=1
AND ENTRATE . C RET NOT LIKE ’ F%’
AND USCITE . C APP<>’ 00000000 ’
AND USCITE . C RET=1
AND USCITE . C RET NOT LIKE ’ F%’
185
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
AND ENTRATE . D ENT=USCITE . D ENT
AND ENTRATE . C STZ=USCITE . C STZ ENT
AND ENTRATE . C APP=USCITE . C APP
AND ENTRATE . D ENT
BETWEEN TO DATE( ’ 09−11−2005 4 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 09−11−2005 2 0 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND ENTRATE . C STZ>=641
AND ENTRATE . C STZ<=656
AND USCITE . C STZ>=641
AND USCITE . C STZ<=656
AND USCITE . C STZ<>654
GROUP BY(ENTRATE . C STZ , USCITE . C STZ )
La query 4.10 considera solo le entrate e le uscite relative al tratto di nostra
competenza. In pratica, per ogni entrata ci dice quante macchine sono andate
verso ciascuna delle altre uscite del nostro tratto. La stazione 654 non è considerata tra le possibili uscite poiché il numero di auto ad essa corrispondenti viene
valutato dalla query seguente.
Estratto 4.11
SELECT DISTINCT ENTRATE . C STZ , COUNT(ENTRATE . C APP )
FROM TTPMA3 ENT 1 ENTRATE, TTPMA1 BOE 1 BOE
WHERE ENTRATE . C APP<>’ 00000000 ’
AND ENTRATE . C RET=1
AND ENTRATE . C RET NOT LIKE ’ F%’
AND BOE . C APP=ENTRATE . C APP
AND BOE . C STZ ENT=ENTRATE . C STZ
AND ENTRATE . D ENT=BOE . D ENT
AND ENTRATE . D ENT BETWEEN
TO DATE( ’ 09−11−2005 4 : 0 0 : 0 0 ’ ,
186
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 09−11−2005 2 0 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND ENTRATE . C STZ>=641
AND ENTRATE . C STZ<=656
AND BOE . N PRG=231
GROUP BY(ENTRATE . C STZ , BOE . N PRG )
La query 4.11 determina quante macchine sono entrate nel nostro tratto e, non
essendo uscite in nessun’altra stazione del tratto, sono transitate sotto la boa 231.
Questo numero comprende anche le auto che sono conteggiate tra quelle uscite
dalla stazione 654: quindi il numero di auto effettivamente transitate dalla stazione 654 è proprio quello compreso in questa tabella. Tuttavia, a questo risultato
bisogna togliere un piccolo insieme di auto: quelle che sono entrate da una delle
stazioni del tratto, sono uscite in stazioni differenti dalla 654 e sono transitate successivamente sotto la boa 231 (evidentemente dopo essere rientrate in autostrada
da un altro casello). Queste auto verrebbero contate due volte, se al risultato della
query 4.11 non si sottraesse quello della query 4.12.
Estratto 4.12
SELECT ENTRATE . C STZ , COUNT(ENTRATE . C APP )
FROM TTPMA3 ENT 1 ENTRATE, TTPMA1 BOE 1 BOE,
TTPMA2 USC 1 USCITE
WHERE ENTRATE . C APP<>’ 00000000 ’
AND ENTRATE . C RET=1
AND ENTRATE . C RET NOT LIKE ’ F%’
AND BOE . C APP=ENTRATE . C APP
AND BOE . C STZ ENT=ENTRATE . C STZ
AND ENTRATE . D ENT=BOE . D ENT
AND USCITE . C APP=ENTRATE . C APP
AND USCITE . C STZ ENT=ENTRATE . C STZ
AND ENTRATE . D ENT BETWEEN
187
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
TO DATE( ’ 09−11−2005 4 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 09−11−2005 2 0 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND ENTRATE . C STZ>=641
AND ENTRATE . C STZ<=656
AND USCITE . C STZ<>654
AND BOE . N PRG=231
GROUP BY(ENTRATE . C STZ )
Aggregando i dati in maniera opportuna, abbiamo dei valori che indicano il
numero di auto che, essendo entrate in uno dei nostri caselli, sono uscite in un
altro. Manca ancora il dato relativo alle auto che si sono dirette oltre Brescia in
direzione di Venezia. Questo valore si può ottenere trovando il numero totale di
ingressi sul tratto Milano - Brescia e quindi sottraendovi i valori precedentemente
trovati.
Estratto 4.13
SELECT DISTINCT ENTRATE . C STZ , ENTRATE . C STZ ,
COUNT(ENTRATE . C APP )
FROM TTPMA3 ENT 1 ENTRATE
WHERE ENTRATE . C APP<>’ 00000000 ’
AND ENTRATE . C RET=1
AND ENTRATE . C RET NOT LIKE ’ F%’
AND ENTRATE . D ENT BETWEEN
TO DATE( ’ 09−11−2005 4 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 09−11−2005 2 0 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND ENTRATE . C STZ>=641
AND ENTRATE . C STZ<=656
GROUP BY(ENTRATE . C STZ )
188
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 4. OGGETTO DEL LAVORO
Arrivati a questo punto, dobbiamo studiare un metodo alternativo per stimare
le entrate e le uscite della stazione 655 in grado di sopperire alla mancanza di
dati (ricordiamo che questa stazione non trasmette i dati di ingresso al database a
causa di un non megli precisato malfunzionamento). Per le entrate, non possiamo
che affidarci ad un metodo statistico, mentre per le uscite possiamo interrogare
il database sulle uscite registrate in corrispondenza del casello di entrata numero
655.
Estratto 4.14
SELECT USCITE . C STZ , COUNT( USCITE . C APP )
FROM TTPMA2 USC 1 USCITE
WHERE USCITE . C APP<>’ 00000000 ’ AND USCITE . C RET=1
AND USCITE . C APP NOT LIKE ’ F%’
AND USCITE . D ENT BETWEEN
TO DATE( ’ 09−11−2005 4 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ 09−11−2005 2 0 : 0 0 : 0 0 ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND USCITE . C STZ ENT=655
GROUP BY( USCITE . C STZ ENT , USCITE . C STZ )
ORDER BY USCITE . C STZ ASC
La query 4.14 cerca il numero di auto che sono entrate alla 655 utilizzando le
informazioni presenti sulla tabella delle uscite ma relative alle entrate.
189
4.1. PRESENTAZIONE DEL TRATTO MILANO-BRESCIA
Carlo Caligaris, Iacopo Salvarani
190
Capitolo 5
Applicazione del Modello
Figura 5.1: Los Angeles Traffic [59]
191
5.1. IL SOFTWARE
5.1
Carlo Caligaris, Iacopo Salvarani
Il Software
Per raggiungere l’obiettivo preposto, abbiamo costruito un software in grado di
interagire in lettura ed in scrittura con il database autostradale al fine di costruire
una interfaccia user-friendly tramite la quale visualizzare i risultati prodotti dall’elaborazione dei nostri dati. Il software si divide in due programmi principali:
quello di simulazione e quello di controllo.
Il programma di simulazione è il programma principale: è quello che produce
le previsioni per velocità, densità e flusso ed ha la possibilità di scrivere questi
risultati sul database. Il programma di controllo, invece, fornisce la possibilità
di controllare i risultati previsti confrontandole con i risultati reali, una volta che
questi sono disponibili. Il programma di simulazione è stato sviluppato sia per la
direzione Milano-Brescia che per la direzione opposta. Il programma di controllo,
date le sue grandi difficoltà realizzative, è solo relativo alla direzione MilanoBrescia.
192
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.2
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Il Simulatore
Il simulatore, dal punto di vista matematico, è costituito da un set di equazioni
differenziali discretizzate nel tempo e quindi definibili come equazioni alle differenze finite. Nella pratica, si assegna a tutte le tratte un insieme di valori iniziali
che ne descrivono lo stato; i parametri che descrivono la situazione generale sulla
tratta sono: velocità media, densità, flusso dei veicoli lungo la tratta. Una volta
fatto ciò, il simulatore calcola i valori previsti relativi a queste quantità avanzando
di un periodo di simulazione alla volta. Ad ogni iterazione i parametri di ciascun
tratto vengono ricalcolati in base a:
• i valori dei parametri sulla tratta stessa all’istante precedente;
• i valori dei parametri all’istante precedente per le tratte che influenzano
quella su cui il simulatore sta ricalcolando; in termini più semplici la precedente e la successiva.
Dopo essere stato inizializzato, il simulatore calcola l’evolvere del sistema fino
alla condizione di regime nell’ipotesi che le condizioni al contorno rimangano
costanti. L’affidabilità dei risultati cala con le iterazioni in quanto le condizioni al
contorno del caso reale variano continuamente.
Rivediamo adesso le equazioni utilizzate, già introdotte precedentemente, ma
riscritte in termini di linguaggio di programmazione. Per quanto riguarda le grandezze utilizzate nei programmi, abbiamo definito una notazione spazio-temporale
per decidere i loro nomi senza incappare in fastidiose ambiguità: quando utilizziamo i suffissi prima e dopo, ci riferiamo al tempo, mentre quando usiamo seguente
e precedente, ci riferiamo allo spazio.
Con questa distinzione ben presente, abbiamo definito una serie di variabili.
Definizione 5.1
• dendop , Densità lungo la tratta in analisi prevista per
l’istante di tempo successivo.
• denpri , Densità lungo la tratta in analisi relativa all’istante di tempo
precedente quello per cui si stanno eseguendo le previsioni.
193
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
• veldop , Velocità lungo la tratta in analisi prevista per l’istante di tempo
successivo.
• velpri , Velocità lungo la tratta in analisi relativa all’istante di tempo
prima di quello per cui si stanno eseguendo le previsioni.
• velpripre , Velocità lungo la tratta precedente quella in analisi relativa all’istante di tempo precedente quello per cui si stanno eseguendo le
previsioni.
• periodo , Periodo di simulazione (assunto pari ad un minuto).
• indice = [0, 13] , Indice necessario per scorrere i vettori.
• δ[indice]
, Vettore contenente le lunghezze delle tratte (identificate
dall’indice).
• flupripre , Flusso lungo la tratta precedente quella in analisi e relativo all’instante di tempo prima di quello per cui si stanno eseguendo le
previsioni.
• flupri , Flusso lungo la tratta in analisi e relativo all’instante di tempo
prima di quello per cui si stanno eseguendo le previsioni.
• ingpri , Flusso in ingresso relativo alla tratta in esame e valutato per l’istante di tempo prima di a quello per cui si stanno eseguendo le previsioni.
• uscpri , Flusso in uscita relativo alla tratta in esame e valutato per l’istante di tempo prima di quello per cui si stanno eseguendo le previsioni.
• funzionev , Equazione fondamentale di Papageorgiou. Viene discussa
approfonditamente in 5.2.3.
• τ[indice] , Parametro dell’equazione della velocità. È variabile per ogni
tratta.
• χ[indice] , Parametro dell’equazione della velocità. È variabile per ogni
tratta.
194
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
• ν[indice] , Parametro dell’equazione della velocità. È variabile per ogni
tratta.
• l[indice] , Parametro dell’equazione fondamentale di Papageorgiou. È
variabile per ogni tratta.
• m[indice] , Parametro dell’equazione fondamentale di Papageorgiou. È
variabile per ogni tratta.
• vmax [indice] , Parametro relativo alla tratta e rappresentativo della velocità massima sostenibile in quella tratta.
• ρmax [indice] , Parametro relativo alla tratta e rappresentativo della densità massima sostenibile in quella tratta.
5.2.1
Equazione della Densità
Parliamo ora dell’equazione della densità (misurata in [veicoli] · [km]−1 ):
dendop
periodo
= denpri +
∗(flupripre −flupri +ingpri −uscpri ). (5.1)
δ[indice]
Questa equazione mostra come la densità per un istante di simulazione sia
supposta uguale alla densità come era all’istante precedente corretta dall’effetto
dei flussi sulle tratte contigue (la precedente e la seguente).
Per ogni tratta, vi è una grandezza, che possiamo chiamare flusso incrementale, e
che quantifica l’aumento del numero di auto nella tratta per ogni istante di tempo. Tale flusso è dato da: il flusso in entrata nella tratta (proveniente dalla tratta
precedente) sommato a quello in ingresso dal casello ed a cui bisogna sottrarre il
flusso in moto verso la tratta successiva ed il flusso in uscita dal casello.
195
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Flusso entrante
Flusso Uscente
Flusso Ingressi
Flusso Uscite
Figura 5.2: Flusso lungo una tratta
Gli ingressi e le uscite dei caselli per ogni tratta sono note (a parte per la stazione 655, di cui abbiamo già parlato in precedenza) e vengono inizializzate per
poi rimanere costanti lungo tutta la durata della simulazione. Ciò introduce un
errore, dal momento che ogni volta si hanno valori variabili. Questo è un esempio di condizioni al contorno dinamiche che introducono un errore continuo nella
simulazione rendendo maggiore l’imprecisione con l’avanzare della simulazione.
Con riferimento alla Figura 5.3 possiamo vedere come il flusso in entrata nella
tratta sia dato dal flusso nella tratta precedente diminuito dall’uscita della tratta
precedente (flusso rosso - flusso verde)
Figura 5.3: Flusso a cavallo di due tratte
Il flusso in uscita dalla tratta è dato invece dal flusso sulla tratta successiva
196
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
diminuito dell’ingresso sulla tratta successiva (flusso blu = flusso nero - flusso
giallo).
Tutti gli elementi del fattore correttivo sono calcolati in numero di vetture per
ora, quindi il fattore viene moltiplicato per il periodo misurato in ore (il nostro
periodo è di un minuto, quindi 0, 01667ore) e si ottiene cosı̀ il numero di veicoli
in aumento o in diminuzione sulla tratta nel periodo appena trascorso. Tale numero di veicoli viene diviso per la lunghezza della tratta ottenendo una densità
incrementale da sommare a quella dell’iterazione precedente per ottenere il valore
attuale.
5.2.2
Equazione della Velocità
L’equazione della velocità si scrive come di seguito.
veldop =
= velpri +
periodo
+
· (funzionev (indice, denpri ) − velpri )+
τ[indice]
periodo
· velpri · (velpripre − velpri )−
+
δ[indice]
(ν[indice] · periodo · (denpriseg − denpri ))
+
((τ[indice] · δ[indice]) · (denpri + χ[indice]))
(5.2)
Su una tratta, la velocità calcolata per una iterazione è uguale alla velocità precedente, variata da 3 parametri additivi moltiplicati per coefficienti che riportano
le grandezze alla dimensione della velocità ([km][h]−1 ).
Il primo termine contiene funzionev (indice, denpri )−velpri : esso fornisce
un’indicazione su quanto può variare la velocità rispetto al suo valore precedente,
facendo riferimento all’equazione fondamentale di Papageorgiou (5.2.3).
Il secondo termine è velpripre −velpri e fornisce un’indicazione su quanto può
variare la velocità sulla tratta considerata a causa della velocità sulla tratta prece197
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
dente; se sulla tratta precedente la velocità è in decremento, a parità di densità,
evidentemente diminuirà anche sulla tratta successiva.
L’ultimo termine, denpriseg − denpri fornisce un’informazione su come evolve la velocità in rapporto alla diversa densità della tratta successiva. Se sulla tratta
successiva il traffico è congestionato (e quindi la densità è molto elevata) l’effetto
si ripercuote all’indietro come un rallentamento. Il comportamento è duale in caso di situazione opposta: in pratica si ottiene uno snellimento del traffico. Questi
fenomeni di propagazione a ritroso prendono il nome di back-waves e ci riconducono al collegamento del modello di traffico con quello di propagazione delle
onde in un un fluido.
5.2.3
Equazione Fondamentale di Papageorgiou
Abbiamo già spiegato come il nostro riferimento teorico sia stato il lavoro dell’ing.
Papageorgiou; uno dei suoi contributi più significativi è stato quello di determinare un’equazione, derivata da prove sperimentali, in grado di indicare la velocità
media tenuta dalle vetture in funzione della loro densità su una tratta stradale.
L’equazione di cui stiamo parlando è quella a cui ci siamo riferiti fino a questo
momento come equazione fondamentale di Papageorgiou e si può scrivere nella
forma seguente.

vel = vmax [indice] ·  1 −
denpri
ρmax [indice]
l[indice]
!m[indice] 
;
(5.3)
Il significato fisico di tale formula è molto chiaro: la velocità media che le
vetture tengono è uguale alla velocità massima tipica della tratta stradale (vmax )
opportunamente diminuita di un fattore che dipende dal rapportofra la densità
che
denpri
si è effettivamente riscontrata e la densità di congestionamento
.
ρmax
Gli esponenti l ed m si ottengono sperimentalmente e sono diversi per ogni tratta stradale e dipendono anche dalle condizioni al contorno. Lo stesso dicasi per
i parametri della tratta vmax e ρmax ; questi valori però possono almeno inizialmente essere ipotizzati in base a semplici considerazioni fisiche sul tratto stradale
198
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
preso in esame (ad esempio vmax può essere il limite di velocità e ρmax metà
del limite teorico della densità, corrispondente alla situazione in cui le auto sono
letteralmente a contatto una con l’altra).
5.2.4
Funzionamento del Programma
Il programma è stato costruito come una catena di metodi che vengono richiamati
in serie. Per spiegare il funzionamento del programma, analizzeremo uno per uno
i metodi, nell’ordine con cui sono invocati.
Inizialmente, l’utente deve scegliere se effettuare una simulazione singola o
una serie di simulazioni. Nel primo caso, il programma esegue una simulazione
istantaneamente, mentre nel secondo caso esegue una serie di simulazioni a partire
da un’ora definita internamente al codice e fino ad un’altra ora sempre definita nel
codice. Per illustrare il funzionamento del simulatore, ci riferiremo al caso di una
simulazione singola.
L’utente può inoltre scegliere se scrivere i dati cosı̀ calcolati sul database o se
memorizzarli semplicemente in strutture interne al computer locale (files XML).
Esistono quattro classi per questo programma:
• C1, che costituisce la classe principale del programma e che gestisce le
opzioni inizialmente offerte all’utente;
• XMLWorks, che contiene i metodi che ci consentono di trasferire i dati
calcolati dal software su files XML memorizzati su disco;
• Queries, che contiene i metodi relativi alle interazioni con il database
realizzate tramite i principi del JDBC.
• Funzioni, che raccoglie alcune funzioni matematiche esternalizzate per
rendere più leggibile il programma.
La Figura 5.4 mostra la sequenza logica del programma.
199
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Definizioni
Ridimensionamento dei vettori
Inizializzazione dei vettori
Cancellazione i files XML già esistenti
Inizializzazione dei parametri
Inizializzazione degli ingressi sulle tratte
Inizializzazione delle uscite sulle tratte
Inizializzazione delle velocità iniziali sulle tratte
Inizializzazione dei flussi iniziali sulle tratte
Inizializzazione delle densità iniziali sulle tratte
Simulazione - Calcolo delle equazioni
Scrittura dei files XML
Cancellazione delle simulazioni sul database più vecchie di tre giorni
Se l’utente ha scelto di scrivere i risultati sul database
Scrittura sul database dei risultati della simulazione
Se l’utente ha scelto di effettuare una simulazione multipla
Esecuzione del processo di simulazione dal primo punto
Figura 5.4: Sequenza logica del programma di simulazione
Illustriamo di seguito i singoli metodi.
200
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.2.5
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Definizioni
Questo non è un vero e proprio metodo, bensı̀ una parte introduttiva di codice
contenente tutte le definizioni di cui il nostro programma ha bisogno. Ad esempio,
definiamo le strutture dati corrispondenti alle grandezze definite in 5.1
5.2.6
Ridimensionamento dei Vettori
Un elemento tipico di Java è la separazione tra la definizione di un vettore ed il
suo dimensionamento. Tutte le grandezze dipendenti dalla tratta o dal tempo (o
da entrambi) sono rappresentate in linguaggio di programmazione da vettori. La
dimensione relativa alle tratte è pari al numero di tratte (cioè 14) mentre la dimensione relativa al tempo è pari all’istante iniziale più i 30 minuti di simulazione (per
un totale di 31 elementi). Abbiamo anche dati provenienti dalle boe che necessitano di essere organizzati in vettori con tanti elementi quante sono le boe presenti
sul nostro tratto. In direzione di Brescia, ad esempio, abbiamo 11 boe. Discorso
analogo per le spire (3) e per le stazioni (16).
5.2.7
Inizializzazione dei Vettori
I vettori sono stati prima definiti e poi ridimensionati. In questo metodo inizializziamo tutti i vettori i cui valori rimangono invariati durante la simulazione;
questi sono i vettori relativi ai parametri fisici dell’autostrada: δ (lunghezza delle
tratte autostradali) ρmax , vmax , l, m (parametri dell’equazione fondamentale di
Papageorgiou). Si capisce come questi valori, variabili rispetto alla tratta, sono
comunque essenzialmente indipendenti dal tempo.
5.2.8
Cancellazione dei Files XML
Abbiamo già accennato al fatto che i dati calcolati sono memorizzati in files
XML. Questi files sono tanti quante sono le tratte in analisi e si chiamano da
Grafico1.xml fino a Grafico14.xml. Ciascuno contiene i dati relativi
201
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
a velocità, densità e flusso per ogni minuto di simulazione. Nell’Estratto 5.1
vediamo un esempio di questi files XML.
Estratto 5.1
<? xml v e r s i o n =” 1 . 0 ” e n c o d i n g =”UTF−8” ?>
<G r a f i c o>
<E l e m e n t o Time=” 0 ” D e n s i t y =” 3 9 . 3 ” Speed =” 1 2 2 . 9 ” />
<E l e m e n t o Time=” 1 ” D e n s i t y =” 3 8 . 5 ” Speed =” 1 0 0 . 9 ” />
<E l e m e n t o Time=” 2 ” D e n s i t y =” 1 8 . 9 ” Speed =” 1 0 6 . 2 ” />
<E l e m e n t o Time=” 3 ” D e n s i t y =” 1 2 . 1 ” Speed =” 1 0 1 . 4 ” />
<E l e m e n t o Time=” 4 ” D e n s i t y =” 1 2 . 5 ” Speed =” 1 0 7 . 9 ” />
....
<E l e m e n t o Time=” 30 ” D e n s i t y =” 3 4 . 2 ” Speed =” 1 0 5 . 3 ” />
< / G r a f i c o>
Questi files XML devono essere riaggiornati ad ogni lancio del simulatore. In
pratica, noi li cancelliamo prima per poi riscriverli.
5.2.9
Inizializzazione dei Parametri
Le grandezze che intervengono nella simulazione devono essere inizializzate con
valori coerenti, importantissimi per la riuscita della simulazione. τ fornisce un’indicazione di quanto rapidamente la velocità si assesta sul valore teorico ricavato
dall’equazione fondamentale di Papageorgiou (in pratica va ad agire aumentando
o diminuendo il secondo termine nell’equazione della velocità). ν e χ intervengono sul terzo termine dell’equazione della velocità (quella relativa alla back-wave
di densità); in particolare, ν indica quanto rapidamente la velocità varia a causa
dell’effetto della densità differente sulla tratta successiva, invece χ è un livello
minimo teorico di densità e fornisce un limite superiore al terzo termine. Se la
densità sulla tratta tendesse a zero, e χ non ci fosse, la velocità incrementale del
terzo termine tenderebbe all’infinito, in quanto a denominatore compare proprio
la densità sulla tratta. I valori di questi parametri sono stati stimati tramite un’a202
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
nalisi statistica: abbiamo trovato i valori per i quali la curva densità-flusso rilevata
sulla rete è minimamente differente da quella determinata analiticamente.
5.2.10
Inizializzazione degli Ingressi
Gli ingressi e le uscite lungo la tratta vanno inizializzati con dati che rivestono
una grande importanza, dal momento che gli ingressi alle varie stazioni condizionano direttamente la densità sulle tratte e quindi indirettamente la velocità media
dei veicoli. Tale parametro viene passato al simulatore tramite l’uso della JDBC
illustrato in 5.2.14. Al primo giro di simulazione vengono inseriti gli ingressi effettivamente rilevati alle stazioni estratti direttamente dai dati della base. Dalla
seconda iterazione in poi il simulatore agisce sul futuro e non è possibile avere
informazioni esatte sugli ingressi. La prima versione del programma imposta gli
ingressi ad un valore costante lungo l’intero arco di simulazione. Questo valore
è calcolato come media dei valori recepiti nei cinque minuti precedenti. Naturalmente, si introduce un errore non indifferente in questo modo: abbiamo già
studiato un modo per risolvere questo problema, ma non lo abbiamo ancora reso
operativa la modifica.
Un altro possibile problema, molto critico per la simulazione, (che poi in effetti
abbiamo dovuto affrontare a causa della stazione 655) è il caso in cui una stazione
non invii segnali al database per qualche particolare malfunzionamento. Questo
fatto potrebbe essere confuso, per esempio, con una situazione di traffico effettivamente molto ridotto (ad esempio nelle ore notturne) o dall’effettiva chiusura
della stazione di ingresso (per incidente o per una qualunque causa esterna). Si è
scelto per ora di considerare un ingresso che viene inizializzato a zero come un
errore; pertanto un controllo fa in modo che gli ingressi nulli vengano rimpiazzati con un valore correttivo posto pari alla media fra gli ingressi di tutte le altre
stazioni di nostra competenza. Con un ciclo di controllo sul vettore degli ingressi
i valori nulli vengono aggiornati con la media fra tutti i valori non nulli. È da
considerare il fatto che, se i valori nulli iniziano ad essere preponderanti, la stima
data dalla media sarà molto poco accurata; se tutti i valori fossero nulli tranne
uno verrebbero tutti posti uguali a quel valore e se fossero tutti nulli, resterebbe203
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
ro tali. In questa maniera il valore correttivo diventa una stima, e tiene conto di
eventuali trend giornalieri e stagionali (che si possono presumere abbastanza coerenti per tutte le stazioni); purtroppo non tiene in alcuna considerazione la diversa
importanza delle stazioni: appare evidente che in qualsiasi momento saranno in
maggior numero gli ingressi dalla barriera di Milano o dalla stazione di Brescia
Ovest piuttosto che quelli da Grumello o Ponte Oglio.
Inoltre, anche essendo noto il numero di veicoli in ingresso alle varie stazioni, una
volta che essi hanno superato il casello, non è possibile sapere con esattezza in
quale delle due direzioni (Brescia o Milano) si siano diretti. Per risolvere questo abbiamo utilizzato la matrice origine-destinazione (4.1.4) e ne abbiamo tratto
(tramite considerazioni statistiche) un coefficiente correttivo che indica in media
quale porzione dei veicoli in ingresso si dirige verso Brescia piuttosto che verso
Milano.
5.2.11
Inizializzazione delle Uscite
Questo metodo inizializza i valori delle uscite per le varie stazioni lungo la tratta. Cosı̀ come per gli ingressi, questo è un dato molto importante poiché anche
in questo caso vi è dipendenza con la densità sulle tratte e con la velocità media
dei veicoli. I problemi sono esattamente gli stessi già visti per il caso degli ingressi. Pertanto, per ogni stazione, il valore iniziale è impostato come la media
delle uscite nei 5 minuti precedenti. Tutti i valori delle uscite nelle iterazioni successive di simulazione vengono posti pari al valore iniziale e viene effettuato un
controllo per correggere eventuali valori nulli e sostituirli con la media dei valori
non nulli. L’unico problema che non si pone è quello della non determinazione
della direzione; infatti per i dati in uscita, si può conoscere la stazione di ingresso
e, quindi, limitare i dati delle uscite ai soli veicoli che hanno percorso l’autostrada
nella direzione Milano-Brescia.
204
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.2.12
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Inizializzazione di Velocità, Flussi e Densità
Velocità, densità e flussi medi dei veicoli sulle tratte sono le variabili di stato e
sono la risposta che il simulatore offre per stimare lo stato del traffico nel futuro.
Il simulatore potrebbe elaborare una probabile situazione di regime del traffico
anche partendo da variabili di stato inizializzate casualmente, in quanto le variabili
di stato sono quelle che vanno ad essere modificate e ad interagire fra loro ad
ogni iterazione di simulazione. Chiaramente, questa non è la soluzione migliore:
innanzitutto, seppur abbastanza raramente, potrebbero esserci delle discontinuità
di funzionamento del modello matematico a seconda delle differenti condizioni
iniziali e quindi potrebbe accadere che con valori iniziali non reali si giunga ad
una soluzione finale molto errata. Se i valori iniziali delle variabili di stato, che
sono proprio quelle che costituiscono l’informazione sulla situazione in cui si
trova il traffico veicolare, fossero esatti dal principio, potremmo supporre che il
modello descriva in maniera corretta l’andamento del traffico fin da subito. Quindi
è possibile non solo fornire un’informazione su come andrà a regime lo stato del
traffico, ma si può anche dire con buona precisione fra quanto tempo raggiungerà
questa situazione di regime e ancor più sarà possibile indicare il comportamento
del traffico nel transitorio. I risultati sono ottimi a due condizioni: i) che il modello
rappresenti la realtà in maniera adeguata e che quindi il simulatore si comporti in
maniera analoga al traffico reale, e questo dipende soprattutto dall’esattezza dei
parametri delle tratte (ρmax , vmax , l, m per tutte e 14 le tratte) e del simulatore (τ,
χ, ν); ii) che i dati degli ingressi e delle uscite nelle varie iterazioni di simulazione
siano il più precisi possibile.
Questo purtroppo trova difficoltà nei motivi illustrati in precedenza.
Inizializzazione delle Velocità Iniziali
Dal database estraiamo i valori delle stime attuali delle velocità, che vengono utilizzate per il software interno di AutoTraf. Abbiamo notato che i valori presenti
sul database e quelli esposti dalla pagina web di AutoTraf sono sempre differenti;
precisamente i valori resi dalla pagina web di AutoTraf sono sempre lievemente
inferiori rispetto a quelli presenti sul database. Probabilmente, chi ha elaborato
205
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
AutoTraf, ha rilevato che le stime (che sono effettuate sfruttando i tempi di percorrenza fra casello e casello o fra boa e boa oppure fra boa e casello o casello e
boa e mediandoli con diversi pesi) sono superiori ai valori realmente verificati ed
ha pensato di diminuire con un opportuno coefficiente le proprie stime. Fidandoci
di tale approccio, e quindi dei dati di AutoTraf, le velocità estrapolate dal database verranno ridotte nell’inizializzazione di un opportuno coefficiente (si è scelto
quello che minimizza l’errore per alcun dati presenti sulla base di dati ed i loro
corrispettivi su AutoTraf) stimato a 0.886. Con questa correzione, i valori con cui
inizializziamo le velocità all’inizio della simulazione, sono gli stessi che compaiono su AutoTraf. Sui valori estratti dal database viene eseguito un controllo in
caso di valore nullo. Se la velocità stimata fra due stazioni contigue è nulla, il valore di tale velocità viene stimato come la media delle velocità assegnate alle altre
tratte. Questa stima è chiaramente poco precisa ed affidabile (la velocità media
può cambiare molto da tratta a tratta) ma non avendo nessun’altra informazione
utilizzabile abbiamo ritenuto conveniente porre un valore coerente con quelli delle
altre tratte.
In questa parte di codice inizializziamo anche il parametro v00 , ovvero la velocità
alla barriera di Milano. Inizialmente avevamo scelto v00 = 0: le auto in teoria
partono da ferme in uscita dalla barriera di Milano; tale scelta si è rivelata sbagliata dal momento che rischia di rallentare la velocità simulata nella prima tratta
a causa del secondo termine dell’equazione delle velocità. Ciò accade soprattutto
se il valore di τ è abbastanza elevato (con τ = 0.02, come è stato inserito, l’effetto
del rallentamento non si percepisce più). Infine, viene impostato il vettore v14 ,
ovvero la velocità sulla tratta successiva all’ultima di nostra competenza in direzione Milano-Brescia. Esso viene estratto dal database come la velocità media
recepita dalla spira 74 presente proprio su quella tratta. Questo valore di velocità
viene poi mantenuto costante per tutte le rimanenti iterazioni di simulazione. Il
metodo di stima, con i suoi pregi ed i suoi difetti, è lo stesso utilizzato per gli
ingressi ed uscite. Se il parametro iniziale v14 [0] ha valore zero a causa del non
funzionamento della spira 74, la risposta della simulazione risulterà assolutamente
non attendibile. D’altra parte, avrebbe poco senso trovare una soluzione alterna-
206
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
tiva, in quanto è molto difficile poter ottenere buone stime senza l’utilizzo delle
informazioni provenienti dalle spire.
Inizializzazione dei Flussi Iniziali
Dal database vengono estratti i dati relativi ai flussi veicolari rilevati dalle boe e
quelli rilevati dalle spire (anche in questo caso si considera il valore medio sui
valori rilevati nei 5 minuti precedenti). I flussi delle boe e delle spire vengono
controllati e se un valore è nullo, esso viene corretto con la media dei valori non
nulli. Il problema di questa inizializzazione è che, mentre le spire percepiscono
il flusso costituito dalla totalità dei veicoli, le boe sono in grado di cogliere soltanto il passaggio dei veicoli muniti di apparecchio telepass. Pertanto, il flusso
ottenuto dalle boe è soltanto una porzione di quello totale effettivo. L’unico modo
di ovviare a questo problema è di correggere i flussi delle boe con un opportuno
coefficiente che possa stimare l’effettivo flusso veicolare in transito sotto una determinata boa. Per far questo è sufficiente conoscere in media la percentuale di
automobilisti dotati dell’apparecchio telepass e correggere di conseguenza i valori
ottenuti. La percentuale di veicoli rilevati dalle boe rispetto al totale è stata calcolata con l’Equazione 4.1. Per fissare i flussi iniziali basta controllare per ogni
tratta gli apparecchi presenti. Se vi è un solo apparecchio di rilevazione, il flusso
iniziale sulla tratta è dato dal valore percepito da quel apparecchio (spira o boa
che sia); se su una tratta è presente più di un apparecchio, il flusso iniziale sulla
tratta è dato dalla media dei valori rilevati dagli apparecchi; se su una tratta non ci
sono apparecchi, il flusso è calcolato come la media dei valori assegnati alla tratta
precedente ed alla tratta successiva. Infine, se un apparecchio che viene interrogato si trova a cavallo fra due tratte, nella zona fra uscita della tratta precedente
ed ingresso della tratta successiva (che poi sono ingresso e uscita della stessa stazione) il valore del flusso viene giustamente corretto sottraendo o aggiungendo il
flusso di ingresso o di uscita del casello della stazione in questione.
Analogamente al caso della velocità, viene inizializzato q00 , ovvero il flusso sul
tratto precedente la barriera di Milano. Questo valore viene lasciato a zero in
quanto tutto il flusso in entrata nella prima tratta proviene dal casello di Monza e
207
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
dalla Barriera di Milano e sono già conteggiati tra gli ingressi dalle stazioni. Infine, viene impostato il vettore q14 , contenente i valori del flusso sul tratto stradale
successivo all’ultimo di nostra competenza. Tale valore è fondamentale per poter
calcolare l’equazione della densità relativa all’ultima tratta di nostra competenza;
q14 viene calcolato tramite il flusso percepito dalla spira 74 e viene mantenuto
costante per tutti i 30 minuti simulati.
Inizializzazione delle Densità Iniziali
La densità dei veicoli sulla tratta è forse il parametro più importante fra le variabili di stato che descrivono le condizioni del traffico; infatti, dalla densità si può
calcolare la velocità dei veicoli ed il loro flusso (come descritto nelle equazioni di
Papageorgiou), e quindi la stima della densità dovrebbe essere il più possibile corretta. Purtroppo, sulla rete autostradale, l’unica apparecchiatura in grado di fornire
dati sulla densità sembrerebbe essere la spira. In realtà, è pressoché impossibile
ottenere un qualche dato utilizzabile sulla densità tramite le spire. Innanzitutto,
esse sono distribuite con una frequenza insufficiente per fornire un’informazione
buona ed allo stesso tempo coerente su tutte le tratte; inoltre, sebbene nel database
di Autostrade sembri che le tabelle relative alle spire possano dare informazioni sulla densità, in realtà i dati presenti presentano varie incosistenze nei valori
riportati.
5.2.13
Simulazione
Il metodo Simulazione comprende il codice per lo sviluppo nei 30 minuti di
simulazione delle equazioni. Per prima cosa viene indicato l’istante iniziale della simulazione e quindi il simulatore entra nel ciclo che aggiornerà per 30 volte i
valori delle variabili di stato. All’interno di questo ciclo, ve ne è un secondo, innestato, che esegue le equazioni di aggiornamento sulle 12 tratte autostradali interne
(dalla seconda alla tredicesima); le equazioni della prima e dell’ultima tratta sono
inserite nel ciclo esterno (quello che scorre i 30 minuti) poiché le tratte sul confine
necessitano di alcuni parametri particolari trattati diversamente dagli altri. Osser208
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
viamo quel che accade per una qualsiasi delle tratte intermedie (lo stesso accade
per quelle di confine; solo che alcuni dei parametri sono fissati diversamente).
Ad ogni istante k e per ogni singola tratta identificata dal codice i tratta il
simulatore esegue il seguente flusso operativo.
Estratto 5.2
rho [ k + 1 ] [ i t r a t t a ]= F u n z i o n i . C a l c o l o r h o ( . . . . ) ;
Con questa istruzione viene calcolata la densità all’istante successivo sulla
tratta stessa tramite la funzione calcolo rho.
Estratto 5.3
i f ( r h o [ k + 1 ] [ i t r a t t a ]>= rho max [ i t r a t t a ] )
{
r h o [ k + 1 ] [ i t r a t t a ] = rho max [ i t r a t t a ] ;
}
Eseguiamo un controllo: se la nuova densità ha un valore superiore alla densità di
congestione massima relativa a quella tratta, il valore viene corretto e posto uguale
alla densità massima stessa.
Estratto 5.4
i f ( r h o [ k + 1 ] [ i t r a t t a ] <=1)
{
rho [ k +1][ i t r a t t a ]=1;
}
Un ulteriore controllo verifica se la nuova densità ha un valore inferiore o uguale
ad 1veicolo/km; se è cosı̀ il valore viene corretto e posto uguale ad 1veicolo/km
(in effetti nulla vieterebbe che la densità vada a zero, ma essendo una grandezza
209
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
usata anche come denominatore di frazione in alcune formule, il valore nullo creerebbe problemi di calcolo; in fondo, 1veicolo/km è un’ottima approssimazione
di autostrada sgombra).
Estratto 5.5
i f ( r h o [ k ] [ i t r a t t a ]>= rho max [ i t r a t t a ] )
{
v [ k + 1 ] [ i t r a t t a ]=
Funzioni . Calcolo v (
, rho max [ i t r a t t a ] ,
);
....
}
La velocità sulla tratta è calcolata eseguendo un controllo sulla densità all’istante precedente: se questa era superiore o uguale alla densità massima, allora
la velocità all’istante successivo viene calcolata considerando la densità pari alla
densità massima della tratta.
Estratto 5.6 Da 5.5
....
else
{
v [ k + 1 ] [ i t r a t t a ]=
Funzioni . Calcolo v (
, rho [ k ] [ i t r a t t a ] ,
);
}
Se la densità precedente non ha superato il valore massimo, la velocità all’istante successivo viene calcolata considerando la stessa densità all’istante precedente sulla tratta.
210
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Estratto 5.7
i f ( v [ k + 1 ] [ i t r a t t a ] <=0)
{
v [ k +1][ i t r a t t a ]=0;
}
Eseguiamo un controllo anche sulla velocità: se la nuova velocità ha un valore
inferiore o uguale a zero, esso viene corretto e fissato a 0 (chiaramente non ha
nessun senso che il simulatore dia come risultato velocità negative).
Estratto 5.8
q [ k + 1 ] [ i t r a t t a ]= rho [ k + 1 ] [ i t r a t t a ]∗ v [ k + 1 ] [ i t r a t t a ] ;
Infine, note per ogni singola tratta la velocità media dei veicoli e la loro
densità, non resta altro da fare che calcolare il flusso veicolare.
5.2.14
Come Usiamo la JDBC per Passare Queries al Database
Per interrogare il database abbiamo sviluppato una metodologia piuttosto originale e che, secondo noi, vale la pena di essere approfondita.
Abbiamo parlato in precedenza dei database relazionali e del linguaggio comunemente utilizzato per la loro interrogazione, ossia SQL. Abbiamo visto le caratteristiche di questo linguaggio ed in vari passaggi di questa Tesi abbiamo riportato
esempi di utilizzo dell’SQL per estrapolare dati dal database. Fisicamente, queste
queries SQL vengono scritte in un browser che si collega al database. Nel nostro
caso, il browser in questione si chiama Toad ed è in grado di collegate il client
di Oracle installato sul computer utente con il server che contiene fisicamente
i dati. La risposta viene fornita in forma tabellare ed è sempre visualizzabile all’interno di Toad. La tecnologia JDBC consente di evitare il passaggio attraverso
il browser. Nell’Estratto 3.1 abbiamo mostrato il codice che consente di collegare
un qualunque applicativo Java con il database. Le queries possono essere quindi
211
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
scritte direttamente dentro il listato Java. Nell’esempio seguente, mostriamo come
sia possibile utilizzare la tecnologia JDBC per scrivere dati sul database.
Estratto 5.9
S t r i n g i n s q u e r y =”INSERT INTO CC PREVISIONE” +
” ( TRATTA ID , ORA SIMULATA , VEL PREVISTA ,
ORA PREVISIONE , DEN PREVISTA ,
FLU PREVISTO , VERSO TRATTA ) VALUES ( ” +
( t r +1) + ” , ” +
”TO DATE ( ’ ” + o r a s i m + ” ’ ,
’YYYY−MM−DD hh24 : mi : s s ’ ) , ” +
( vel [ te ][ t r ]) + ” , ” +
”TO DATE ( ’ ” + o r a s t a r t + ” ’ ,
’YYYY−MM−DD hh24 : mi : s s ’ ) , ” +
( den [ t e ] [ t r ] ) + ” , ” +
( flu [ te ][ tr ]) + ” , ” +
0 + ”)”;
Statement stmt = c . createStatement ( ) ;
stmt . executeUpdate ( ins query ) ;
stmt . close ( ) ;
La query è del tutto immersa nel linguaggio Java. Viene costruita dinamicamente
come un oggetto di tipo String costituito da varie sottostringhe unitie tramite il
simbolo +. La stringa viene costruita con l’inserimento di variabili determinate internamente al programma: questo la rende a tutti gli effetti una query dinamica. Il
trattamento particolare riservato alle query dinamiche è illustrato nella spiegazione relativa alla query 5.14. Tuttavia, il vantaggio di utilizzare la tecnologia JDBC
non è soltanto quello di poter utilizzare componenti dinamiche per la costruzione
di query (alla stregua del funzionamento della Stored Procedure implementate in pressoché tutti i principali RDBM), ma è anche quello di avere il risultato
della query inserito in una struttura del linguaggio Java. L’oggetto Statement
può essere associato ad un oggetto Result Set: si tratta di una struttura tabel212
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
lare non permanente che può essere interpretata internamente al programma.
Nel nostro caso, molte queries sono statiche, ma richiedono di essere incluse in
strutture Java per successivi trattamenti. A questo scopo abbiamo costruito una
architettura in grado di unire la semplicità dell’SQL con i vantaggi della JDBC. In
pratica, le queries SQL vengono scritte su files .txt salvati in una directory predefinita. Il programma va a leggere le queries direttamente da questa cartella, ne
trasforma il contenuto in un oggetto String e crea ed esegue lo Statement. Il result set associato allo statement può essere cosı̀ interpretato dal programma. Inoltre, è possibile selezionare solo alcune colonne della query scritta su file. Questo è
ottenibile per mezzo di una istruzione da inserire al termine della query e definita
da noi stessi. Inserendo l’istruzione break seguita da un numero, si impone al
programma di considerare solo tante colonne del result set quante sono richieste
tramite quel numero. Questo approccio consente anche a chi non ha scritto materialmente il programma di modificarne facilmente il codice utilizzando questa
sorta di metalinguaggio. Purtroppo, con l’aumentare del numero di query e del numero di tipologie di strutture dati in cui i risultati provenienti dal database devono
essere organizzati, abbiamo talvolta fatto ricorso a metodi particolari programmati per funzionare con una sola query. Tuttavia, l’organizzazione del programma
tramite l’utilizzo di queries salvate esternamente ha permesso uno sviluppo logico
più ordinato.
213
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Figura 5.5: Esempio di funzionamento del meccanismo di elaborazione delle
queries
5.2.15
La Nostra Tabella sul Database
Come detto, è possibile scrivere i nostri dati su una tabella del database. Il database di test delle autostrade ospita infatti uno schema denominato UNIGE all’interno del quale abbiamo costruito la tabella CC PREVISIONE. La struttura è quella
riportata di seguito.
Estratto 5.10
Codice identificativo della tratta, determinato da noi in ordine crescente
rispetto al senso di marcia Milano-Brescia (ID TRATTA)
◦ Ora corrispondente al momento simulato (ORA SIMULATA)
◦ Velocità prevista VEL PREVISTA
214
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
◦ Ora a cui è stata effettuata la previsione: ne esiste una e soltanto una per
ogni simulazione e può funzionare come identificativo della simulazione
(ORA PREVISIONE))
◦ Densità prevista DEN PREVISTA
◦ Flusso previsto FLU PREVISTO
◦ Identificativo del verso della tratta (VERSO TRATTA)
5.2.16
Interfaccia del Simulatore
I risultati del simulatore sono resi fruibili tramite un’interfaccia html che mette
disposizione varie forme di reporting dei dati elaborati.
La pagina si presenta come in Figura 5.6.
Figura 5.6: Interfaccia del simulatore
Per ogni tratta sono disponibili alcuni grafici che esamineremo in seguito.
Inoltre, esistono alcune opzioni generali che consentono la visualizzazione di dati
relativi all’intero tratto.
215
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Grafico della Velocità in Funzione del Tempo
Il grafico della velocità in funzione del tempo è disponibile per ogni tratta ed è realizzato tramite un file SVG che legge i files XML a cui abbiamo fatto riferimento in
precedenza per poi elaborarne i dati e ricostruirli sul grafico da noi disegnato. Per
questo grafico, come per tutti quelli dove non è specificato altrimenti, la struttura
grafica è stata interamente realizzata da noi unendo l’ECMAScript di SVG con
elementi statici di grafica vettoriale.
Figura 5.7: Grafico vel(t)
216
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Grafico della Densità in Funzione del Tempo
Questo grafico è del tutto analogo al precedente eccetto per il fatto che la variabile
dipendente dal tempo è la densità e non la velocità.
Figura 5.8: Grafico den(t)
217
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Grafico del Flusso in Funzione del Tempo
Ancora un grafico dipendente dal tempo: questa volta rappresentiamo il flusso.
Figura 5.9: Grafico flu(t)
218
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Grafico del Flusso in Funzione della Densità
Questo grafico è tipico degli studi sul traffico ed è stato riportato per consentire
alcune valutazioni che leggerete in seguito.
Figura 5.10: Grafico flu(den)
219
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Tempi di Percorrenza
Una importante informazione fornita dal simulatore è quella relativa ai tempi di
percorrenza. Per ogni stazione è possibile capire quali stazioni possono essere
raggiunte nei 30 minuti successivi e con quali tempi (naturalmente stiamo sempre
parlando di previsioni).
Figura 5.11: Tempi di percorrenza a partire dalla stazione di Cavenago
Con riferimento alla Figura 5.11 andiamo a descrivere le funzionalità di questo
report. Sull’orologio riportiamo le varie stazioni in corrispondenza del tempo
necessario per raggiungerle a partire dalla stazione scelta. In questo caso si parte
220
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
da Cavenago e vediamo che, ad esempio, si prevede di impiegare circa 24 minuti
per arrivare a Rovato. Sulla parte destra del grafico, invece, abbiamo inserito
un rettangolo diviso in tanti tratti quante sono le tratte autostradali coperte. A
seconda della velocità sostenibile in queste tratte, il rettangolo viene colorato con
un criterio espresso nella legenda. Infine, i numeri all’estrema destra della figura
sono gli intertempi previsti da stazione a stazione.
221
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Assonometrie e Prospettive
I grafici descritti sino ad ora sono disponibili per ciascuna tratta: abbiamo però
messo a disposizione alcuni grafici di insieme che mostrano in una stessa figura
una delle grandezze di riferimento. Si tratta di grafici tridimensionali: lungo una
dimensione cresce il tempo, lungo l’altra si seguono le stazioni. Chiaramente in
altezza troviamo la grandezza che vogliamo studiare.
222
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Figura 5.12: Assonometria della velocità
In Figura 5.12 vediamo l’assonometria delle velocità. In pratica questo grafico
è costruito unendo i vari grafici bidimensionali della velocità. Cliccando su una
zona del grafico tridimensionale ci si collega direttamente al grafico bidimensionale relativo alla zona su cui si è cliccato. Inoltre, agendo sui pulsanti a destra
del grafico, è possibile tracciare una linea che segue il profilo della velocità per
tempo costante. Questa funzione è attivata nella figura seguente, rappresentante
l’assonometria della densità.
223
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Figura 5.13: Assonometria della densità
224
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Abbiamo l’assonometria anche per il flusso.
Figura 5.14: Assonometria del flusso
225
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Analogamente, abbiamo anche disegnato gli stessi grafici secondo i principi
della prospettiva in luogo di quelli dell’assonometria.
Figura 5.15: Prospettiva della velocità
226
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Figura 5.16: Prospettiva della densità
227
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Figura 5.17: Prospettiva del flusso
5.2.17
Grafici con Matlab
Abbiamo costruito anche tre grafici con Matlab: questi grafici possono essere
interessanti ma, perchè siano sempre aggiornati, è necessario lanciare il relativo
programma. Le Figure seguenti mstrano un esempio di ciascuno di questi grafici.
228
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Figura 5.18: Grafico di velocità in funzione del tempo e del flusso in funzione del
tempo
Figura 5.19: Grafico della velocità in funzione del tempo e della densità
229
5.2. IL SIMULATORE
Carlo Caligaris, Iacopo Salvarani
Figura 5.20: Grafico del flusso in funzione del tempo e della densità
230
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.3
5.3.1
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Considerazioni sui Grafici
Grafico Flusso-Densità
I modelli macroscopici si basano su una relazione fondamentale di flusso e densità
rappresentata a titolo di esempio in Figura 5.21.
Figura 5.21: Diagramma fondamentale flusso-densità
Questa rappresentazione è facilmente riscontrabile anche tra i diagrammi flusso densità da noi disegnati, come nel caso della Figura 5.22.
231
5.3. CONSIDERAZIONI SUI GRAFICI
Carlo Caligaris, Iacopo Salvarani
Figura 5.22: Diagramma flusso-densità
Il significato fisico di questo diagramma appare piuttosto chiaro: esso rappresenta le due situazioni di traffico realizzabili: la situazione di traffico scorrevole
(zona sinistra rispetto al massimo) e quella di traffico congestionato (zona destra
rispetto al massimo). Evidentemente non riusciremo sempre a realizzare entrambe
le situazioni: la Figura 5.22 è stata scelta tra quelle che prevedono una modifica
dello stato del traffico entro il periodo di simulazione.
5.3.2
Assonometria della Velocità
Un altro argomento spesso citato negli studi sul traffico è quello della propagazione delle code all’indietro come nel caso di una onda d’urto. Nel diagramma
tridimensionale relativo alla velocità possiamo apprezzare come anche il nostro
modello produca queste back waves. In Figura 5.23 ne abbiamo evidenziata una.
232
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Figura 5.23: Il fenomeno delle back waves
233
5.3. CONSIDERAZIONI SUI GRAFICI
Carlo Caligaris, Iacopo Salvarani
Tra i vari strumenti di corredo al software principale, vi è anche un programma
in Matlab che riproduce il funzionamento del simulatore e che può essere inizializzato manualmente. Combinando dati rilevati dalla rete con approssimazioni
abbiamo ottenuto i dati rappresentati in Figura 5.24.
Figura 5.24: Mesh tridimensionale dei dati previsti di velocità
Da questo grafico si possono vedere bene le valli che tagliano trasversalmente
il grafico. La Figura 5.25 mostra un ingrandimento di queste zone.
Figura 5.25: Il fenomeno delle back waves
234
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.4
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Programma di Controllo
Per consentire ad un potenziale utente una funzione di controllo dei risultati ottenuti, abbiamo costruito un sistema informatico che consente un confronto visuale
tra i risultati previsti dal simulatore e quelli inviati dai sistemi di rilevamento dati
presenti sulla rete autostradale. Questa interfaccia, come già scritto precedentemente, si presenta come un sito web; la pagina principale, denominata Home mette
a disposizione un link alla pagina Controllo. In realtà, questo è solo lo strato più
esterno del nostro sistema informatico. Questo strato comunica in modi diversi
con diversi altri strati. Nella Figura 5.26 abbiamo rappresentato schematicamente
l’architettura del sistema.
235
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Figura 5.26: Struttura del programma di controllo
236
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Il vero e proprio programma di controllo è stato scritto interamente in Java e si costruisce su tre classi: Controllo Main, che è la classe principale,
Queries C ed XMLWorks C; esse contengono un notevole numero di metodi
relativi al trattamento dei dati in entrata dal database ed in uscita verso i files
di nostro interesse. Di fatto, il programma recupera dati dal database, li elabora
secondo logiche che approfondiremo successivamente e li organizza in strutture
dati interne all’ambiente Java. Per rendere questi dati persistenti e fruibili da altre applicazioni, abbiamo fatto in modo di scriverli su files memorizzati du disco.
Questi files possono quindi essere letti da altre applicazioni: abbiamo cosı̀ realizzato una struttura interattiva che connette due programmi differenti consentendo
lo scambio dei loro dati. Il flusso logico del programma è rappresentato in Figura
5.27.
237
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Cancella Elenco.js
Elenco.js
write()
Scrive su Elenco.js impostazioni della pagina html
Elenco.js
Classe Queries C
Famiglia call query
Determina numero di simulazioni presenti nel DB
Queries *.txt
Aggiorna Elenco.js con le simulazioni
Elenco.js
Rileva l’ora di inizio delle simulazioni
Queries *.txt
Aggiorna Elenco.js con le ore di inizio
Elenco.js
Classe Queries C
Famiglia call query
Classe Queries C
Famiglia call query
Classe Queries C
Classe XMLWorks C
Determina ora corrente ed ora più vecchia
Scrive su Elenco.js le ore prima rilevate
Elenco.js
Determina se le simulazioni sono confrontabili
Elenco.js
Incrociando i dati di spire, TP, ingressi ed uscite,
determina un valore per ognuno dei 30 minuti
seguenti per velocità e flusso
Scrive i dati di velocità, flusso e densistà,
Classe XMLWorks C
su files XML poi letti esternamente
Figura 5.27: Flusso del programma di controllo
238
AS.xml
UNIGE.xml
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Nelle due Figure precedenti, si fa spesso riferimento al file Elenco.js.
Approfondiamo alcuni aspetti che riguardano il suo utilizzo
5.4.1
Elenco.js e Controllo.html
Abbiamo già discusso alla Sezione 3.3.8 della possibilità esistente per pagine
html di contenere al loro interno dei comandi inseriti tramite scripting. Abbiamo
anche visto come questi comandi possano essere scritti internamente alla pagina
stessa oppure possano essere parte di un file con estensione .js da richiamare
all’interno della pagina. Abbiamo sfruttato questa proprietà per costruire una pagina html attiva: in altre parole, abbiamo costruito la pagina normalmente, con
una serie di elementi statici, ed abbiamo inserito nella parte dedicata allo scripting
il collegamento ad un file, appunto Elenco.js. Questo file viene interamente
gestito dal programma Java che, ad ogni run, prima lo elimina e poi lo ricrea scrivendovi comandi aggiornati. In particolare, questi comandi sono linguaggio html
che, una volta interpretati dal browser, producono la visualizzazione a schermo
di tutte le informazioni riguardanti le simulazioni presenti sulla nostra tabella del
database. Inoltre, il file contiene anche la definizione delle variabili relative al numero di simulazioni confrontabili ed al numero di simulazioni non confrontabili
perché troppo vecchie. Queste variabili vengono gestite dalla pagina al fine di
riempire i menu a tendina presenti con le opzioni opportune.
239
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Figura 5.28: Interfaccia per il controllo del simulatore prima dell’utilizzo di
Elenco.js
Figura 5.29: Interfaccia per il controllo del simulatore dopo l’utilizzo di
Elenco.js
Dal confronto tra la Figura 5.28 e 5.33 si nota la differenza introdotta all’interno della pagina dal file Elenco.js.
240
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
5.4.2
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Simulazioni Confrontabili e Simulazioni non Confrontabili
Per ogni simulazione presente sul database, vengono riportate la data e l’ora in cui
la simulazione è stata effettuata. Queste informazioni sono facilmente ottenibili
dal database tramite una query, lanciata dall’applicazione secondo i principi della
JDBC discussi nella Sezione 3.3.5. Il linguaggio di programmazione Java rende
però piuttosto difficile la manipolazione dei campi data e dei campi ora. Infatti,
mentre sul database Oracle queste informazioni sono immagazzinate nella stessa
variabile, in Java devono essere divise in due variabili separate (evidentemente contenenti una la data e l’altra ora). Per gestire questa discrepanza, abbiamo
scritto alcuni metodi che consentono di trasformare l’ora e la data in un oggetto
denominato Calendar, implementato dalla classe java.util.Calendar.
Questo tipo di oggetto è un vettore contenente vari campi, ciascuno dei quali relativo ad una differente dimensione temporale (ad esempio le ore, i mesi, gli anni
o i secondi). Questa classe contiene anche alcuni metodi molto utili che facilitano
il confronto tra due oggetti Calendar di tipo differente.
Essendo riusciti infine, non senza qualche difficoltà, a gestire le informazioni riguardanti date ed ore, abbiamo interrogato il database al fine di ottenere le seguenti
informazioni:
• data ed ora dell’ultima rilevazione della sensoristica, che sarà considerata
come l’ora presente;
• data ed ora della più vecchia rilevazione eseguita dalle spire del nostro
tratto.
I dati delle spire sono cancellati con una frequenza superiore a quella con cui vengono cancellati i dati delle boe; di conseguenza, ci riferiamo a questo strumento
come a quello che può indicarci quanto indietro nel tempo possiamo andare a
confrontare le simulazioni.
Definizione 5.2 Una simulazione è confrontabile se:
• sono passati almeno trenta minuti da quando è stata lanciata;
241
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
• il database contiene dati delle spire non più recenti del momento del lancio
della simulazione in esame.
Il primo confronto viene effettuato paragonando il momento della simulazione
con il momento assunto come il presente, mentre il secondo confronto sarà effettuato paragonando il momento della simulazione con quello assunto come il più
vecchio.
5.4.3
Esecuzione delle Query
L’esecuzione delle query avviene secondo meccanismi del tutto simili a quelli
spiegati per il programma di simulazione. Non ripetiamo quindi l’illustrazione
anche in questo contesto.
5.4.4
Scrittura sui files xml
Oltre ad Elenco.js, il nostro programma scrive su disco anche altri due files:
• UNIGE.xml
• AS.xml
Il primo file ha una struttura rappresentata nello schema seguente.
Estratto 5.11 Nodo radice: UNIGE
Nodo: Elemento
Attributi: Data
Density
Flux
Id Simulazione
Ora
Speed
Tratta
Nodo: . . .
242
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Ogni elemento rappresenta uno dei 30 minuti di simulazione e quasi tutti gli
attributi sono ricavati direttamente dalla tabella del database aggiornata con il programma principale di simulazione. L’unico attributo non sottostante a questa regola è Id Simulazione, un numero assegnato in base all’ordine con il quale
le simulazioni confrontabili sono state effettuate. Con questo numero assegnamo
ad ogni entry la simulazione a cui essa è relativa.
Il file AS.xml ha la stessa struttura del precedente ma è molto più difficile da
ricavare a partire dai dati del database. Innanzi tutto, esso deve essere costruito in
diverse fasi distinte. Infatti, le tratte 6 e 9 devono essere trattate in modo differente
da tutte le altre, dal momento che su queste possiamo utilizzare i dati provenienti
dalle spire (più affidabili di quelli delle boe). Inoltre, velocità e flusso vanno
richiesti al database con queries differenti.
Tratte 6 e 9
Il flusso è facilmente ricavabile dal database con la seguente query.
Estratto 5.12
SELECT C CEN , D ORA , (SUM( N TOT VEI ) ∗ 6 0 )
FROM VTPM66 DAT SPR
WHERE D ORA BETWEEN
TO DATE( ’ \ $ d a t e 1 \$ ’ , ’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ \ $ d a t e 2 \$ ’ , ’DD−MM−YYYY hh24 : mi : s s ’ )
AND ( C CEN=268 or C CEN= 26 7)
AND ( N CRS=1 or N CRS=2 or N CRS = 3)
GROUP BY( C CEN , D ORA )
La velocità viene ricavata direttamente dalla tabella che fornisce i valori ad
AutoTraf.
Estratto 5.13
SELECT C PNT DTX INI , C PNT DTX FIN , D UPD , N VEL MED
243
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
FROM TTAG18 AT TRF IDX STR
WHERE D UPD BETWEEN
TO DATE ( ’ \ $ d a t e 1 \$ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE ( ’ \ $ d a t e 2 \$ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND c s u b t r t = ’A ’
AND ( C PNT DTX INI =3741 AND C PNT DTX FIN =3739
OR C PNT DTX INI =3737 AND C PNT DTX FIN = 37 36)
ORDER BY( C PNT DTX INI , D UPD )
I campi nominati C PNT DTX INI e C PNT DTX FIN sono dei campi numerici. Ogni numero ivi contenuto rappresenta un particolare punto della rete
autostradale italiana. I punti per noi interessanti sono quelli di inizio e fine delle
tratte contenenti le spire.
Queste queries sono scritte su files .txt ed utilizzano il meccanismo già spiegato in precedenza (5.2.14). Nelle due queries sopra riportate, compaiono dei
campi identificati come $date1$ e $date2$. Questi campi sono automaticamente riconosciuti dal programma ed a loro vengono sostituite le date corrette.
In questo modo siamo riusciti a costruire un semplicissimo meta-linguaggio in
grado di trasformare una query statica scritta in un file di testo in una query dinamica. In pratica, abbiamo unito la flessibilità tipica della JDBC con la semplicità
di interrogazione fornita dall’SQL statico.
In ogni caso, è necessario operare un controllo sui dati estratti, per assicurarsi
che ci sia almeno un dato, e non più di uno, per ogni minuto. Infatti, le spire
aggregano i dati per un tempo pari a circa un minuto, ma ci sono minuti durante
i quali non passano auto. Logicamente, il database in questi casi non scrive nulla sulle sue tabelle, ma per i nostri scopi è fondamentale avere una entry con il
minuto in questione e con un valore nullo del flusso ad esso relativo. Dobbiamo
quindi mettere mano alla struttura dati in modo da avere uno ed un solo valore per
ciascuno dei minuti di previsione.
244
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Altre Tratte
Sulle altre tratte, i dati relativi alla velocità sono comunque reperibili sempre dalla
tabella contenente i dati di AutoTraf. Non riportiamo la query, dal momento che
è del tutto analoga a quella riportata per il caso precedente.
Molto più complicato è reperire i dati di flusso ed organizzarli in strutture
che possono poi essere ricondotte a quella dei files xml. Questi dati sono ottenuti
tramite l’analisi incrociata delle tabelle degli ingressi, delle uscite e delle boe. Generalmente preferiamo affidarci ai dati delle boe, ma talvolta è necessario ricorrere
anche a quelli di ingressi ed uscite.
I dati provenienti dai caselli (sia in entra che in uscita) devono essere filtrati
in modo diverso a seconda della direzione che si sta esaminando. Se stiamo considerando la direzione Milano-Brescia, ci interessano le macchine che, essendo
entrate ad un casello della tratta in esame, sono uscite ad un casello più vicino a
Brescia di quello da cui sono entrate.
La query che interroga il database sugli ingressi è riportata nell’Estratto 5.14.
Estratto 5.14
SELECT C STZ , D MSG , (COUNT(D MSG) ∗ 6 0 )
FROM $ t a b l e $
WHERE D MSG BETWEEN
TO DATE( ’ $ d a t e 1 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ $ d a t e 2 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C STZ >= 641
GROUP BY ( C STZ , D MSG) ORDER BY ( C STZ , D MSG)
La tabella delle boe non presenta dati aggregati: è quindi necessario, una volta
ottenuto il result set, procedere all’aggregazione e, quindi alla correzione tramite i
valori ricavati dalla matrice origine-destinazione ( infatti i valori cosı̀ trovati sono
245
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
relativi ad entrambe le direzioni di marcia, mentre a noi ne interessa solo una).
Naturalmente, i problemi relativi ai minuti con più valori in questo caso ed in
quelli seguenti non hanno alcun senso. Si ripropongono, invece, quelli connessi
ai minuti durante i quali non ci sono mezzi in transito sul tratto in esame.
Si noti come la query 5.14 contenga un altro tag interattivo: $table$. Infatti, i
dati relativi alle boe sono memorizzate in tabelle differenti a seconda del giorno
a cui risalgono. Il programma riconosce questo tag e sostituisce la stringa con il
nome della tabella da considerare.
La query che interroga il database sulle uscite è riportata nell’Estratto 5.15.
Estratto 5.15
SELECT C STZ , D MSG , (COUNT(D MSG) ∗ 6 0 )
FROM $ t a b l e $
WHERE D MSG BETWEEN
TO DATE( ’ $ d a t e 1 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ $ d a t e 2 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND C STZ <= 656 AND C STZ >= 641
AND C STZ ENT <= 656
AND ( C STZ ENT > C STZ OR
( C STZ ENT = 654 AND C STZ = 6 5 5 ) )
AND NOT ( C STZ = 654 AND C STZ ENT = 6 5 5 )
GROUP BY ( C STZ , D MSG)
ORDER BY ( C STZ , D MSG)
La gestione di questi dati è più semplice del caso precedente: infatti, è possibile restringere il campo di ricerca alle sole auto che vanno nella direzione desiderata, dal momento che la tabella delle uscite riporta anche la stazione di entrata
da cui ogni veicolo proviene. Tuttavia, anche in questo caso è necessario introdurre una ricerca interattiva della tabella da interrogare ed aggregare i risultati per
minuto.
246
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Infine, interroghiamo anche la tabella delle boe: i valori andranno divisi per
il fattore correttivo calcolato in precedenza nel tentativo di capire la percentuale
media di auto rilevate dalle antenne in itinere rispetto al totale.
I dati cosı̀ ottenuti e trattati, vengono utilizzati per determinare il flusso lungo
ciascuna tratta. Vediamo nel dettaglio come.
Estratto 5.16
SELECT N PRG , D MSG , (COUNT( N PRG ) ∗ 6 0 )
FROM $ t a b l e $
WHERE D MSG BETWEEN
TO DATE( ’ $ d a t e 1 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND TO DATE( ’ $ d a t e 2 $ ’ ,
’DD−MM−YYYY hh24 : mi : s s ’ )
AND ( N PRG=110 OR N PRG=5 OR N PRG=6 OR N PRG=7
OR N PRG=8 OR N PRG=10 ORN PRG=12 OR N PRG=26
OR N PRG=14 OR N PRG=23 OR N PRG= 16 )
GROUP BY( N PRG , D MSG)
ORDER BY( N PRG , D MSG)
247
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Gestione dei Dati
Figura 5.30: Tratta 1 e Tratta 2 [53]
Nella Figura 5.30 si sono evidenziate con colori differenti le tratte fino a qui identificate con i numeri 1 (Milano Est - Tangenziale Est) e 2 (Tangenziale Est - Agrate).
Sulla tratta 1 abbiamo calcolato il flusso in base ai dati provenienti dalla boa in
itinere 110. La tratta 2 è invece sprovvista di strumenti di rilevazione. Abbiamo
scelto di calcolare il flusso come la media dei valori delle tratte limitrofe, consci
dell’arbitrarietà e dell’imprecisione che questa decisione comporta.
Nella Figura 5.31 abbiamo evidenziato la tratta 3 (Agrate - Cavenago). In
questo caso, per determinare il flusso in transito su questa tratta, abbiamo dovuto
utilizzare i dati della boa 5 sommati a quelli dell’uscita di Cavenago (Uscita 652).
In effetti, il posizionamento della boa fa sı̀ che essa possa rilevare solo i mezzi
che hanno effettivamente percorso questo tratto senza uscire a Cavenago. Questo
metodo è stato adottato in tutte le situazioni di questo tipo presenti sulla tratta.
Non riportiamo tutti i rimanenti casi, essendo per lo più ripetizioni di quelli che
abbiamo già visto, ma ne illustriamo di seguito un ultimo che mostra come si
possano utilizzare anche i dati provenienti dalle entrate.
In Figura 5.32 si è evidenziata la tratta 5 (Trezzo - Capriate). Il flusso qui può
essere calcolato come somma di quello rilevato dalla boa 6 e di quello rilevato
all’ingresso di Trezzo.
248
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Gli altri casi sono generalmente similari a quelli visti in precedenza, tranne che per la tratta 7 (Dalmine - Bergamo) nella quale sono presenti due boe:
evidentemente il valore considerato sarà pari alla media dei due.
Figura 5.31: Tratta 3 [53]
Figura 5.32: Tratta 5 [53]
5.4.5
Rappresentazione Grafica del Controllo
Abbiamo già visto in Figura 5.28 il layout della pagina del Controllo. In essa
compaiono pulsanti e menu a tendina: tramite un loro utilizzo alquanto intuitivo
è possibile collegarsi ad un’altra pagina html che consente di visualizzare le
grandezze relative ad una certa simulazione su una certa tratta. Queste tre variabili
possono essere scelte utilizzando le opzioni che la pagina mette a disposizione.
249
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Figura 5.33: Le scelte messe a disposizione dalla pagina di controllo
Le scelte dell’utente sono trasmesse da una pagina all’altra tramite il metodo post. Ogni opzione viene trasformata in una variabile che viene letta tramite
scripting nella pagina target del post.
La pagina che consente di visualizzare gli andamenti previsti e reali è divisa
in due frames. Il sinistro mette a disposizione alcune opzioni, che consentono di
visualizzare e, in certi casi, anche di sovrapporre alcune rappresentazioni grafiche dei dati. Il destro contiene invece il file SVG che visualizza i grafici richiesti. Tramite un meccanismo di post tra i due frame, siamo riusciti a mettere in
comunicazione le due parti della pagina.
Controllo.html
Frame sinistro
Frame destro
On click:
Opzioni utente
Passaggio variabili
Post
SVG
Esecuzione grafici
Visualizzazione grafici
Figura 5.34: I flussi di dati della pagina
Come si può vedere in Figura 5.34, il frame destro gestisce due flussi dati.
Il primo, proveniente dalla pagina Controllo.html viene recepito ed indirizzato verso il file SVG; esso è responsabile della realizzazione grafica di tutti i
250
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
grafici possibili. Questi grafici sono inizialmente impostati come nascosti (proprietà hidden) e quindi non sono visibili. La visibilità è data loro dall’utente
nel momento in cui schiaccia uno (o più di uno) dei pulsanti messi a disposizione
nel frame di sinistra. Ogni pulsante è collegato direttamente al file SVG e può
modificare alcune sue proprietà, tra cui la visibilità dei grafici.
Figura 5.35: Il file SVG con due grafici visualizzati
L’esecuzione dei grafici da parte dell’SVG prevede il collegamento con i files
XML contenenti i dati di interesse e lo scorrimento dell’albero da noi creato alla
ricerca degli elementi che devono essere disposti sul video.
Le opzioni messe a disposizione sono 6. Analizziamole una per una. Per
questo esempio abbiamo assunto che il controllo riguardi una qualunque tratta e
che la grandezza esaminata sia la velocità. Per le altre due grandezze e le altre
tratte, il discorso è analogo.
251
5.4. PROGRAMMA DI CONTROLLO
Carlo Caligaris, Iacopo Salvarani
Figura 5.36: Opzioni
Velocità Vera
Abbiamo spiegato nel dettaglio come si sia voluto creare un vettore di velocità,
dove ciascun elemento del vettore rappresenta la velocità media sulla durata di
un minuto. Questo vettore è idealmente contenuto nel file xml di riferimento. Se
stiamo analizzando la velocità vera, il file da considerare è AS.xml, mentre se
stiamo analizzando quella prevista, dobbiamo riferirci a UNIGE.xml. Il file SVG
contiene questi percorsi e può cosı̀ scorrere virtualmente questi vettori.
Definizione 5.3 Definiamo vi per i = 0 . . . 30 il vettore il cui elemento i − esimo
contiene la velocità in km/h rilevata per il minuto i−esimo dalla partenza della
simulazione.
Il primo pulsante espone il grafico di vi in funzione di i.
Velocità Prevista
Questo grafico è del tutto analogo al precedente, tranne che per il fatto che ad
essere rappresentata non è la velocità vera, ma quella prevista.
252
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Definizione 5.4 Definiamo pi per i = 0 . . . 30 il vettore il cui elemento i−esimo
contiene la velocità in km/h prevista per il minuto i−esimo dalla partenza della
simulazione.
Errore Puntuale
Definizione 5.5 Definiamo errore puntuale e1i come:
e1i = pi − vi
∀i = 0 . . . 30.
(5.4)
Errore Medio
Definizione 5.6 Definiamo errore medio e1i come:
Pi
e1i
=
0
ke1i k
=
i
Pi
0
kpi − vi k
i
∀i = 0 . . . 30.
(5.5)
Errore Puntuale Percentuale
Definizione 5.7 Definiamo errore puntuale percentuale e2i come:
e2i =
e1i
pi − vi
=
· 100
vi
vi
∀i = 0 . . . 30.
(5.6)
Errore Medio Percentuale
Definizione 5.8 Definiamo errore medio percentuale e2i come:
Pi
e2i
=
2
0 kei k
=
i
Pi
0
i
k piv−v
k
i
i
253
∀i = 0 . . . 30.
(5.7)
5.5. QUALCHE RISULTATO
5.5
Carlo Caligaris, Iacopo Salvarani
Qualche Risultato
Utilizzando le funzionalità più affidabili del programma di controllo, siamo riuscit
ad analizzare qualche risultato. Abbiamo notato come sia di particolare importanza impostare, per ogni tratta, i valori dei parametri. Questo lavoro deve essere ancora completato, ma nel frattempo siamo riusciti a collezionare qualche risultato
interessante.
In Figura 5.37 mostriamo un caso particolare: il simulatore si accorge della
situazione scorrevole di traffico, ma individua dei fenomeni di stop and go che
non hanno riscontro nella realtà. Evidentemente, in questa tratta è necessario
stimare meglio la densità massima.
In Figura 5.38, invece, possiamo vedere quella che è una buona simulazione:
infatti, a fronte di sensibili variazioni di velocità, il simulatore inizialmente non
reagisce, salvo poi avvicinarsi sensibilmente alla curva dei valori reali. Questo
è uno dei pochi casi in cui abbiamo avuto la possibilità di testare il simulatore
in situazioni di traffico molto variabile. Queste condizioni sono particolarmente
critiche per il buon funzionamento dello strumento.
In Figura 5.39 abbiamo riportato una situazione piuttosto prevedibile: i risultati sono abbastanza aderenti alla realtà (anche se non colgono con precisione i
vari trend). Il buon risultato qui ottenuto è testimoniato dall’errorre medio percentuale, riportato in Figura 5.40. Si può vedere come esso si attesti intorno al
10%, risultato da considerarsi molto buono.
Infine, mostriamo la Figura 5.41: anche in questo caso la simulazione approssima abbastanza bene il comportamento reale, tuttavia, si attesta su valori costantamente più alti rispetto a quelli verificatisi. È questo un classico caso
in cui la velocità massima sostenibile è inferiore a quella stimata ed inserita nel
programma.
In tutti i casi, il simulatore introduce un errore abbastanza rilevante, ma raramente fornisce un’indicazione completamente sbagliata sul comportamento del
traffico. In altre parole, non rileva fenomeni di congestione dove non ce ne sono:
chiaramente, prevedere precisamente la velocità è molto difficile e di dubbia uti254
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
lità. È invece molto più interessante sapere se quella velocità è compresa in un
intervallo che ben identifica la situazione del traffico.
Figura 5.37: Un risultato con fenomeni di stop and go non verificati
Figura 5.38: Una buona simulazione
255
5.5. QUALCHE RISULTATO
Carlo Caligaris, Iacopo Salvarani
Figura 5.39: Una simulazione facile
Figura 5.40: Errore medio percentuale
256
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 5. APPLICAZIONE DEL MODELLO
Figura 5.41: Una tratta dove la velocità massima è troppo elevata
257
5.5. QUALCHE RISULTATO
Carlo Caligaris, Iacopo Salvarani
258
Capitolo 6
Sviluppi Futuri
Figura 6.1: Design of a 10-ways interchange [62]
259
6.1. INTRODUZIONE
6.1
Carlo Caligaris, Iacopo Salvarani
Introduzione
Il lavoro da noi iniziato si presta a diversi possibili sviluppi. Alcuni di questi,
nel momento in cui stiamo scrivendo, sono già stati parzialmente realizzati, altri
costituiscono la base per una eventuale collaborazione futura volta a migliorare lo
strumento che abbiamo implementato. Nelle seguenti Sezioni illustriamo le quattro direttive di sviluppo più importanti che abbiamo individuato in collaborazione
con la direzione tecnica di Infoblu.
260
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
6.2
CAPITOLO 6. SVILUPPI FUTURI
Pubblicazione sul Server
Tutti i files da noi prodotti devono essere pubblicati su un server interno, in modo
tale da consentire l’utilizzo dei programmi a tutti gli utenti collegati all’Intranet.
Questo lavoro è già stato svolto: al momento i nostri programmi sono attivi e
funzionanti sullo stesso server che mette a disposizione della rete interna di Autostrade per l’Italia il servizio di Autotraf. In particolar modo, le pagine html
sono collegate ad un file presente nella directory radice del server. Solo le pagine
pubblicate in questa directory sono raggiungibili dall’esterno: con questo collegamento riusciamo a vedere le pagine web senza doverle fisicamente trasferire nella
root del server. Il trasferimento è stato possibile grazie all’aiuto di un collaboratore di Infoblu ed è stato effettuato via FTP. Le difficoltà maggiori rilevate in questa
fase sono state portate dal dover reimpostare i programmi in modo che potessero girare anche su un server UNIX, come quello messo a nostra disposizione. In
effetti, Java è indipendente dal sistema operativo su cui è fatto funzionare, come
già spiegato in precedenza; tuttavia, nel passaggio da un sistema all’altro, ci sono
alcune differenze tanto banali quanto degne di grande attenzione. In particolar
modo ci riferiamo alla differenza nell’utilizzo degli slash per la scrittura dei percorsi dei files.
In ambiente Microsoft, generalmente, i percorsi sono riconosciuti sia che si usi lo
slash, sia che si usi il backslash (Estratto 6.1).
Estratto 6.1
C: \ D i r 1 \ D i r 2 \ D i r 3 \ F i l e . e x t
In Unix, invece, è necessario sostituire tutti i backslash (\) con gli slash (/)
(Estratto 6.2).
Estratto 6.2
/ Dir1 / Dir2 / Dir3 / F i l e . e x t
261
6.2. PUBBLICAZIONE SUL SERVER
Carlo Caligaris, Iacopo Salvarani
Una volta corretto questo, insieme ad altri piccoli inconvenienti, siamo riusciti
a far funzionare i nostri files .class anche da remoto tramite linea di comando
trasmessa con TelNet.
262
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
6.3
CAPITOLO 6. SVILUPPI FUTURI
Disegno delle Curve di Approssimazione delle
Entrate
Come già detto, una delle più grandi limitazioni del simulatore è quella di assumere ingressi ed uscite costanti per tutto l’arco di previsione. Per ovviare a questo
problema, abbiamo cercato di ricostruire un andamento standard degli ingressi
(per le uscite si possono effettuare analoghe considerazioni) lungo l’arco di una
giornata, basandoci su dati storici. Dal database abbiamo estratto i dati relativi ad
un’intera giornata di ingressi, raggruppandoli per minuto, in modo da poter conoscere, per ogni minuto, quanti veicoli sono entrati in ciascuna stazione. Questo
lavoro avrebbe dovuto essere svolto per ciascun giorno della settimana, essendo
presumibilmente differenti le proporzioni di utilizzo delle varie stazioni a seconda del giorno in esame. Noti questi andamenti di riferimento, abbiamo dovuto
studiare un modo per renderli fruibili all’interno del programma.
In pratica, dati il giorno e l’ora di simulazione, noi vogliamo un metodo in
grado di stimare le entrate per i 30 minuti successivi basandosi sui valori storici
rilevati nei giorni omonimi. Eventualmente, questi valori potrebbero essere scalati
proporzionalmente al valore attuale.
La prima idea è stata quella di memorizzare tutti questi dati in un piccolo
database interno all’applicazione (quindi non appoggiato al database Oracle di
Autostrade per l’Italia e non sviluppato secondo un’ottica client-server). Questo
metodo avrebbe consentito di utilizzare esattamente i valori ricavati dallo storico, ma avrebbe anche richiesto un notevole utilizzo di memoria oltre che un
rallentamento delle prestazioni.
Abbiamo quindi optato per costruire delle curve in grado di approssimare l’andamento giornaliero degli ingressi. Consideriamo la Figura 6.2: essa rappresenta
gli ingressi di una giornata intera registrati alla stazione 641. Abbiamo raggruppato i dati ogni 6 minuti, in modo da consentire una distribuzione del dato più
regolare.
263
6.3. DISEGNO DELLE CURVE DI APPROSSIMAZIONE DELLE ENTRATE
Carlo Caligaris, Iacopo Salvarani
Figura 6.2: Entrate alla stazione 641 relative a Venerd 3 Febbraio 2006
Per approssimare l’andamento di questi dati abbiamo utilizzato un pacchetto
di Matlab ((Optimization Toolbox)) in grado di eseguire la minimizzazione dei
quadrati dell’errore data una funzione di riferimento che deve approssimare il
nostro insieme di dati. La funzione di riferimento scelta è la seguente.
F = a[13] · sin(a[14] · x)
+ a[1] · e
+ a[4] · e
+ a[7] · e
−(x−a[2])2
a(3)
−(x−a[5])2
a(6)
(6.1)
−(x−a[8])2
a(9)
+ a[10] · e
−(x−a[11])2
a(12)
La funzione dipende dal vettore a[i] definito per i = 1 . . . 14. Questi coefficienti
sono quelli che vengono modificati in modo da definire la curva del tipo richiesto
che meglio approssima i dati reali.
264
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 6. SVILUPPI FUTURI
Figura 6.3: Approssimazione con il metodo dei minimi quadrati
In Figura 6.3 vediamo il risultato dell’approssimazione.
Nelle Figure seguenti, mostriamo altri casi, relativi ad altre tratte, con relative
curve di regressione.
Figura 6.4: Approssimazione con il metodo dei minimi quadrati
265
6.3. DISEGNO DELLE CURVE DI APPROSSIMAZIONE DELLE ENTRATE
Carlo Caligaris, Iacopo Salvarani
Figura 6.5: Approssimazione con il metodo dei minimi quadrati
Figura 6.6: Approssimazione con il metodo dei minimi quadrati
Non abbiamo ancora implementato il simulatore in modo da modificare gli
ingressi in base a queste funzioni. Inoltre, dal momento che i dati sono raggrup266
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
CAPITOLO 6. SVILUPPI FUTURI
pato ogni sei minuti, dovremo supporre che le entrate e le uscite restino pressoché
costanti per intervalli di durata pari proprio a sei minuti. Questa approssimazione
è necessaria per ottenere curve di regressione accettabili: scegliendo intervalli più
brevi, si avrebbero andamenti molto distorti rispetto al caso reale.
267
6.4. APPLICAZIONE AD ALTRE TRATTE
6.4
Carlo Caligaris, Iacopo Salvarani
Applicazione ad Altre Tratte
L’approccio da noi utilizzato può essere esteso anche ad altre tratte autostradali:
il vincolo più importante è che esse siano “tratte chiuse”, ossia tratte comprese
tra sue barriere, tra due spire o tra una barriera ed una spira. In pratica, un tratto
chiuso è tanto più facilmente gestibile quanti più strumenti di rilevazione vi sono. La sensoristica non è distribuita uniformemente lungo tutta la rete: il tratto
Milano-Brescia è probabilmente quello più ricco di sensori, eppure abbiamo visto come, in certi casi, essi siano insufficienti. Per sviluppare lo stesso modello
su altre tratte, dovremmo quindi avere a disposizione una rete di rilevazione dati
adeguata.
Questo implica la presenza di almeno una spira interna al tratto e di almeno una
boa su ogni tratta elementare. Sarebbe estremamente utile avere anche un qualche strumento di rilevazione (come le boe) sulle rampe di accesso, in modo da
conoscere con una precisione maggiore rispetto a quella ottenuta fino ad ora la
percentuale di veicoli che scelgono una direzione piuttosto che un’altra.
268
Bibliografia
[1] M. Ben-Akiva,
Development of a deployable real-time dynamic traffic assignment system, Task D Interim report: analytical developments for DTA system,
MIT ITS Program, Cambridge (MA), 1996.
[2] B.W. Bush,
An Algorithmic Overview of TRANSIMS,
Los Alamos National Laboratories, 2000.
[3] P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone,
Basi di Dati - Modelli e Linguaggi di Interrogazione,
McGrawH-Hill, 2002, ISBN 88-386-6008-5.
[4] M. Bacchi, A. Braccini,
AutoTraf: Sistema automatico di misura dei tempi di percorrenza sulle
tratte autostradali,
Infoblu S.p.A..
[5] W. Burghout,
Hybrid microscopic-mesoscopic traffic simulation,
Doctoral Dissertation Royal Institute of Technology Stockholm, 14-16,
Sweden, 2004.
269
BIBLIOGRAFIA
Carlo Caligaris, Iacopo Salvarani
[6] O. Caligaris,
Dispense del corso Modelli Matematici e Statistici,
Università degli Studi di Genova.
[7] R.E. Chandler, R. Herman, E.W. Montroll,
Traffic Dynamics: Studies in Car Following,
Opns. Res., 6, (1958), 317-45.
[8] A. Chigrik,
SQL Server 2000 vs Oracle 9i,
http://www.mssqlcity.com/Articles/Compare/
sql server vs oracle.htm.
[9] R. Courant, K.O. Friedrichs, H. Lewy,
Über die partiellen diffrezengleichungen der mathematischen physik,
Math. Ann. 100 (1928), 32.
[10] H.M. Deitel, P.J. Deitel,
Java - Fondamenti di Programmazione, Terza Edizione,
APOGEO, 2005, ISBN 88-503-2388-3.
[11] C.F. Daganzo,
Requiem for second-order fluid approximations of traffc flow,
Transportation Research-B 29, 277-286. 1995.
[12] S. Del Furia, P. Meozzi,
Programmare con il .Net Framework - ADO.NET, ASP.NET, XML - Volume 3,
Mondadori Informatica - MSDN Academic Alliance, ISBN 88-0454064-8.
270
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
BIBLIOGRAFIA
[13] J. Fritz,
Partial differential equations,
Reprint of the fouth edition, Applied Mathematical Sciences, 1.
Springer-Verlag, New York, 1967.
[14] D.R. Drew,
Traffic Flow Theory and Control,
McGraw-Hill New York. 1968.
[15] P. Gallo, F. Salerno,
HTML, CSS e JavaScript,
Mondadori Informatica - Minerva Italica, 2005, ISBN 88-8331-521-9.
[16] C. Gawron,
Simulation-Based Traffic Assignment; Computing User Equilibria in
Large Street Networks,
PhD thesis, University of Cologne, Cologne, 1998.
[17] P.G. Gipps,
A model for the structure of lane-changing decisions,
Transportation Research Part B, 5, 403-414, 1986.
[18] H. Greenberg,
An Analisys of Traffic Flow,
Operation Research 7, 79-85. 1959.
[19] B.D. Greenshields,
A Study in Highway Capacity,
Highway Research Board Proceedings 14, 458. 1935.
271
BIBLIOGRAFIA
Carlo Caligaris, Iacopo Salvarani
[20] R. Greenwald, R. Stackowiak, J. Stern,
Oracle Essentials : Oracle9i, Oracle8i & Oracle8 (2nd Edition),
O’Reilly & Associates, ISBN 0-596-00179-7.
[21] R. Jayakrishnan, H.S. Mahmassani, T.Y. Hu,
An Evaluation Tool fo Advanced Traffic Information and Management
Systems in Urban Networks,
Transportation Research C 2C (3): 129-14, 1994.
[22] O.A. Ladyženskaja, V.A. Solonnikov,
Ural’ ceva, N. N., Linear and quasilinear equations of parabolic type,
(Russian) Translated from the Russian by S. Smith. Translations of
Mathematical Monographs, Vol. 23 American Mathematical Society,
1967.
[23] P.D. Lax,
Hyperbolic systems of conservation laws,
II. Comm. Pure Appl. Math. 10 1957 537-566.
[24] P.D. Lax, B. Wendroff,
System of conservation laws,
Comm. Pure Appl. Math. 1 (1960) 217-237.
[25] D.R. Leonard, P. Power, N.B. Taylor,
CONTRAM: structure of the model,
Transportation Research Laboratory, Crowthorn, 1989.
[26] M.J. Lighthill, J.B. Whitham,
On kinematic waves II: A theory of traffic flow on long crowded roads,
Proceedings of the Royal Society A 229, 317-345. 1955.
272
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
BIBLIOGRAFIA
[27] M. Mahut,
A multi-lane extension of the Space-Time Queue Model of Traffic Dynamics,
TRISTAN IV, Azores Islands, 2001.
[28] A.D. May,
Freeway Simulation Models.
Transportation Research Rec 1132, 94-99. 1988
[29] K. Nagel, M. Schreckenberg,
A cellular automaton model for freeway traffic,
J. Phys. I France 2 (12): 2221-2229, 1992.
[30] R. Natalini,
Introduzione ai metodi numerici alle differenze finite per equazioni di
evoluzine,
Istituto per le Applicazioni del Calcolo “Mauro Picone” Consiglio Nazionale delle Ricerche,
http://www.iac.rm.cnr.it/∼natalini.
[31] M. Papageorgiou,
Applications of Automatic Control Concepts To Traffic Flow Modeling
and Control,
A.V. Balakrishnan, M. Thoma 1979.
[32] M. Papageorgiou,
Some Remarks on Macroscopic Traffic Flow Modelling,
Transpn Res.-A, Vol. 32, No. 5, pp. 323-329, 1998
273
BIBLIOGRAFIA
Carlo Caligaris, Iacopo Salvarani
[33] M. Papageorgiou, H. Haj-Salem,
Ramp Meetering Impact on Urban Corridor Traffic: Field Results,
Transportation Research Vol. 29A, No. 4, 303-319. 1995
[34] H.J. Payne,
Models of freeway traffic and control,
Simulation Council Proceedings 1, 51-61.1971.
[35] B. Peasland,
TechTarget Expert Answer Center,
http://expertanswercenter.techtarget.com/eac/
knowledgebaseAnswer/
0,295199,sid63 gci976695,00.html.
[36] S. Piccardi,
GaPiL Guida alla Programmazione in Linux,
http://www.lilik.it/∼mirko/gapil/.
[37] L.A. Pipes,
An operational analysis of traffic dynamics,
Journal of Applied Physics, Vol. 24, No. 3, 1953, pp. 274-281.
[38] A. Reuschel,
Vehicle movements in a platoon,
Oesterreichisches Ingenieeur-Archir, Vol. 4, 1950, pp. 193-215.
[39] R.D. Richtmyer, K.W. Morton,
Difference methods for initialvalue problems,
Reprint of the second edition. Robert E. Krieger Publishing Co., 1994.
274
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
BIBLIOGRAFIA
[40] J.M. Rosengard,
Introduction to Oracle and Java,
w2.syronex.com/jmr/pubs/2003/oralab4.pdf.
[41] Gino Tironi,
Università degli Studi di Trieste,
http://www.dmi.units.it/∼tironi/matdid.
[42] M. Treiber,
Microsimulation of Road Traffic,
http://vwisb7.vkw.tu-dresden.de/
∼treiber/MicroApplet/.
[43] R.T. Underwood,
Speed, Volume, and Density Relationships, Quality and Theory of
Traffic Flow,
Yale Bureau of Highway Traffic, New Haven, 141-188. 1968
[44] P. Viotti,
Risoluzione Numerica delle Equazioni Differenziali Ordinarie (EDO),
http://w3.uniroma1.it/dits/docenti/
viotti/dispense/EDO.pdf.
Università degli Studi di Roma “La Sapienza”.
[45] Autostrade Torino Milano Torino Piacenza,
Satap S.p.A.
http://www.satapweb.it/inside.php?ctype=1.
[46] ECMAScript Language Specification,
Standard ECMA-262, 3rd December 1999,
275
BIBLIOGRAFIA
Carlo Caligaris, Iacopo Salvarani
http://www.ecma-international.org/
publications/files/ECMA-ST/Ecma-262.pdf.
[47] Oracle 9i JDBC Developer’s Guide and Reference Release 2 (9.2),
http://www.lc.leidenuniv.nl/
awcourse/oracle/java.920/a96654/.
[48] SearchOracle.com,
http://searchoracle.techtarget.com.
[49] Sun MicroSystems,
http://www.sun.com/java/everywhere/.
[50] SVG Tutorial,
W3 Schools,
http://www.w3schools.com/svg/svg intro.asp.
[51] Technion - Israel Institute of Technology - Computer Science Department,
http://www.cs.technion.ac.il/∼zyoav/
hierarchy-pictures/
IBM-XML-java-hierarchy%20145
%20nodes%20178%20edges.jpg.
[52] Wikipedia - L’Enciclopedia Libera,
http://it.wikipedia.org/wiki/Autostrada A4.
[53] AutoTraf.
[54] Intranet Gruppo Autostrade.
276
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
BIBLIOGRAFIA
[55] Autostrade per l’Italia S.p.A.,
http://www.autostrade.it/en/investor/
profilo attivita.html?initPos=5.
[56] Infoblu S.p.A.,
http://www.infoblu.it/Infoblu.html.
[57] http://web.media.mit.edu/∼dmerrill/images/
beauty/slides/boston%20traffic.html.
[58] http://www.edmunds.com/media/ownership/
driving/avoid.traffic.tickets/
traffic.1.500.jpg.
[59] http://www.photo.net/photo/
pcd0222/los-angeles-traffic-44.3.jpg.
[60] http://www.picture-newsletter.com/
night/motorway-night.jpg.
[61] http://www.math.toronto.edu/∼drorbn/Gallery/
KnottedObjects/Interchange/IRColor.jpg.
[62] http://web.mit.edu/smalpert/
277
BIBLIOGRAFIA
Carlo Caligaris, Iacopo Salvarani
www/roads/10-way.jpg.
[63] http://gtresearchnews.gatech.edu/
reshor/rh-spr99/tr-ozone-b.jpg.
278
Elenco delle figure
1
Highway Lanes [58] . . . . . . . . . . . . . . . . . . . . . . . .
1.1
Infrared picture of the interchange of I-95 and I-695, northeast of
3
Baltimore. [61] . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
1.2
Organigramma [55] . . . . . . . . . . . . . . . . . . . . . . . . .
20
1.3
Rete Autostradale gestita da AutoTraf [53] . . . . . . . . . . . . .
23
1.4
Dettaglio della A4 e della A8 [53] . . . . . . . . . . . . . . . . .
24
1.5
Il tratto Milano-Brescia [53] . . . . . . . . . . . . . . . . . . . .
24
2.1
Atlanta traffic jams at the interstate connector in downtown [63] .
27
2.2
Schematizzazione del modello car following . . . . . . . . . . . .
33
2.3
Il modello di Reuschel e Pipes . . . . . . . . . . . . . . . . . . .
34
2.4
Manovra di Lane Change . . . . . . . . . . . . . . . . . . . . . .
36
2.5
Simulatore Modello Microscopico [42] . . . . . . . . . . . . . . .
37
2.6
Simulatore Modello Microscopico [42] . . . . . . . . . . . . . . .
37
2.7
Simulatore Modello Microscopico [42] . . . . . . . . . . . . . . .
38
2.8
Simulatore Modello Microscopico [42] . . . . . . . . . . . . . . .
38
2.9
Relazione Lineare Velocità-Densità . . . . . . . . . . . . . . . .
41
2.10 Curva Caratteristica a Regime Stazionario Flusso-Densità
. . . .
43
2.11 Divisione in sezioni di un ipotetico tratto stradale . . . . . . . . .
45
2.12 Le linee caratteristiche . . . . . . . . . . . . . . . . . . . . . . .
57
2.13 Grafico e livelli della 2.30 . . . . . . . . . . . . . . . . . . . . . .
58
2.14 Traiettoria di un’auto inizialmente in attesa al semaforo . . . . . .
60
2.15
61
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
279
ELENCO DELLE FIGURE
Carlo Caligaris, Iacopo Salvarani
2.16 Una rappresentazione bidimensionale della griglia . . . . . . . . .
68
2.17 Lax-Friedrichs, λ = 0, 8 [30] . . . . . . . . . . . . . . . . . . . .
71
2.18 Lax-Friedrichs, λ = 1, 6 [30] . . . . . . . . . . . . . . . . . . . .
72
2.19 Trasporto lineare con il metodo upwind [30]
. . . . . . . . . . .
90
2.20 Trasporto lineare con il metodo di Lax-Wendroff [30] . . . . . . .
91
2.21 Trasporto lineare (dato regolare) con il metodo di Lax-Wendroff
[30] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
2.22 Curva Caratteristica velocità-densità . . . . . . . . . . . . . . . .
97
2.23 Curva Caratteristica flusso-densità . . . . . . . . . . . . . . . . .
97
2.24 Flussi veicolari relativi alla tratta i-esima . . . . . . . . . . . . . . 101
2.25 | aλ | in funzione della densità . . . . . . . . . . . . . . . . . . . 104
2.26 | aλ | in funzione della densità . . . . . . . . . . . . . . . . . . . 105
3.1
Boston Traffic [57] . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.2
Gli Aspetti di Java [49] . . . . . . . . . . . . . . . . . . . . . . . 116
3.3
Una base di dati relazionale . . . . . . . . . . . . . . . . . . . . . 133
3.4
Una base di dati non relazionale con puntatori . . . . . . . . . . . 133
3.5
Concentratori per un grande numero di utenti [20]
3.6
Tipiche connessioni di un database Oracle [20] . . . . . . . . . . 142
3.7
Un esempio di file XML da noi utilizzato . . . . . . . . . . . . . 151
3.8
La Struttura ad Albero Tipica dell’XML [51] . . . . . . . . . . . 156
3.9
La Struttura di un file XML [12] . . . . . . . . . . . . . . . . . . 158
4.1
Night Motorway [60] . . . . . . . . . . . . . . . . . . . . . . . . 167
4.2
Gli inizi della Torino-Milano [45] . . . . . . . . . . . . . . . . . 169
4.3
Le due corsie dell’autostrada [45] . . . . . . . . . . . . . . . . . 170
4.4
Il tratto Milano-Brescia [53] . . . . . . . . . . . . . . . . . . . . 171
4.5
Legenda di AutoTraf [53] . . . . . . . . . . . . . . . . . . . . . . 172
4.6
Numerazione delle corsie
4.7
Posizionamento della spira 24 . . . . . . . . . . . . . . . . . . . 181
4.8
La situazione alla barriera di Milano Est . . . . . . . . . . . . . . 185
5.1
Los Angeles Traffic [59] . . . . . . . . . . . . . . . . . . . . . . 191
. . . . . . . . 140
. . . . . . . . . . . . . . . . . . . . . 177
280
Università degli Studi di Genova, Tesi di Laurea in Ingegneria Gestionale
ELENCO DELLE FIGURE
5.2
Flusso lungo una tratta . . . . . . . . . . . . . . . . . . . . . . . 196
5.3
Flusso a cavallo di due tratte . . . . . . . . . . . . . . . . . . . . 196
5.4
Sequenza logica del programma di simulazione . . . . . . . . . . 200
5.5
Esempio di funzionamento del meccanismo di elaborazione delle
queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.6
Interfaccia del simulatore . . . . . . . . . . . . . . . . . . . . . . 215
5.7
Grafico vel(t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.8
Grafico den(t) . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.9
Grafico flu(t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
5.10 Grafico flu(den) . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5.11 Tempi di percorrenza a partire dalla stazione di Cavenago . . . . . 220
5.12 Assonometria della velocità . . . . . . . . . . . . . . . . . . . . . 223
5.13 Assonometria della densità . . . . . . . . . . . . . . . . . . . . . 224
5.14 Assonometria del flusso . . . . . . . . . . . . . . . . . . . . . . . 225
5.15 Prospettiva della velocità . . . . . . . . . . . . . . . . . . . . . . 226
5.16 Prospettiva della densità . . . . . . . . . . . . . . . . . . . . . . 227
5.17 Prospettiva del flusso . . . . . . . . . . . . . . . . . . . . . . . . 228
5.18 Grafico di velocità in funzione del tempo e del flusso in funzione
del tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.19 Grafico della velocità in funzione del tempo e della densità . . . . 229
5.20 Grafico del flusso in funzione del tempo e della densità . . . . . . 230
5.21 Diagramma fondamentale flusso-densità . . . . . . . . . . . . . . 231
5.22 Diagramma flusso-densità . . . . . . . . . . . . . . . . . . . . . 232
5.23 Il fenomeno delle back waves . . . . . . . . . . . . . . . . . . . . 233
5.24 Mesh tridimensionale dei dati previsti di velocità . . . . . . . . . 234
5.25 Il fenomeno delle back waves . . . . . . . . . . . . . . . . . . . . 234
5.26 Struttura del programma di controllo
. . . . . . . . . . . . . . . 236
5.27 Flusso del programma di controllo . . . . . . . . . . . . . . . . . 238
5.28 Interfaccia per il controllo del simulatore prima dell’utilizzo di
Elenco.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
281
ELENCO DELLE FIGURE
Carlo Caligaris, Iacopo Salvarani
5.29 Interfaccia per il controllo del simulatore dopo l’utilizzo di Elenco.js
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
5.30 Tratta 1 e Tratta 2 [53] . . . . . . . . . . . . . . . . . . . . . . . 248
5.31 Tratta 3 [53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.32 Tratta 5 [53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.33 Le scelte messe a disposizione dalla pagina di controllo
. . . . . 250
5.34 I flussi di dati della pagina . . . . . . . . . . . . . . . . . . . . . 250
5.35 Il file SVG con due grafici visualizzati . . . . . . . . . . . . . . . 251
5.36 Opzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
5.37 Un risultato con fenomeni di stop and go non verificati . . . . . . 255
5.38 Una buona simulazione . . . . . . . . . . . . . . . . . . . . . . . 255
5.39 Una simulazione facile . . . . . . . . . . . . . . . . . . . . . . . 256
5.40 Errore medio percentuale . . . . . . . . . . . . . . . . . . . . . . 256
5.41 Una tratta dove la velocità massima è troppo elevata . . . . . . . . 257
6.1
Design of a 10-ways interchange [62] . . . . . . . . . . . . . . . 259
6.2
Entrate alla stazione 641 relative a Venerd 3 Febbraio 2006 . . . . 264
6.3
Approssimazione con il metodo dei minimi quadrati
6.4
Approssimazione con il metodo dei minimi quadrati . . . . . . . . 265
6.5
Approssimazione con il metodo dei minimi quadrati . . . . . . . . 266
6.6
Approssimazione con il metodo dei minimi quadrati . . . . . . . . 266
282
. . . . . . . 265
Elenco delle tabelle
2.1
L’evoluzione della relazione tra velocità e densità . . . . . . . . .
48
2.2
Schema Coefficienti [30] . . . . . . . . . . . . . . . . . . . . . .
80
3.1
Lo stack di protocolli XML . . . . . . . . . . . . . . . . . . . . . 152
4.1
Le stazioni della Milano-Brescia . . . . . . . . . . . . . . . . . . 172
4.2
Il totale delle entrate per ogni stazione in un intervallo di quattro
ore e mezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
4.3
Il totale delle entrate per ogni stazione, considerando i soli utenti
muniti di telepass, nello stesso intervallo di tempo della Tabella
4.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
283