13
DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE INFRASTRUTTURE VIARIE E TRASPORTI A.A. 2014-2015 RELAZIONE DI FINE TIROCINIO TUTOR UNIVERSITARIO: Prof. Marco Petrelli STUDENTE: Antongiulio Piscitelli

DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

DIPARTIMENTO DI INGEGNERIA

CORSO DI LAUREA MAGISTRALE

INFRASTRUTTURE VIARIE E TRASPORTI

A.A. 2014-2015

RELAZIONE DI FINE TIROCINIO

TUTOR UNIVERSITARIO: Prof. Marco Petrelli

STUDENTE: Antongiulio Piscitelli

Page 2: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Introduzione

Con la presente si relaziona in merito all’esperienza di tirocinio svolta all’interno

dell’università nei mesi di ottobre 2015 e gennaio 2016. Scopo di tale tirocinio è

stato l’acquisizione e il consolidamento di conoscenze base per l’utilizzo del

software MATLAB in vista del lavoro di tesi svolto in parte presso l’università KU

Leuven in Belgio. Per lo studio del software si è partiti dalle funzioni base e gli

operatori logici che governano questo ambiente, in seguito è stata approfondito

la parte della scrittura degli algoritmi in relazione all’argomento della tesi ossia

la compilazione di un modello che permetta la simulazione di un sistema di

trasporto pubblico su gomma in un’area ad alta densità abitativa.

Page 3: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

MATLAB

Matlab è un software utilizzato per diverse applicazioni che vanno dal calcolo

numerico fino alla costruzione di modelli complessi e alla loro rappresentazione

grafica. Tale programma si basa sulla successione di semplici funzioni

algebriche ed operazioni logiche che assemblate insieme permettono la

costruzioni di architetture più articolate.

Le funzioni più semplici sono gli operatori fra scalari (somma, sottrazione,

moltiplicazione, divisione e potenza); ogni operazione effettuata può essere

registrata nel database con un nome e da qui essere richiamata e modificata a

seconda della necessità. Lo scopo principale per cui è stato creato questo

programma è facilitare i calcoli matriciali (il nome MATLAB è un’abbreviazione

di MATrix LABoratory): permette infatti di svolgere tutte le operazioni fra matrici

(e vettori), combinarne diverse in un algoritmo e registrare i risultati.

Lo stesso programma mette a disposizione una enorme quantità di funzioni

complesse già implementate e richiamabili mediante nomi convenzionali: i

cosiddetti file function. Allo stesso modo è possibile reperire in rete funzioni

elaborate dagli stessi utenti del programma e utilizzabili gratuitamente.

Come esempio viene riportata una function Dijkstra, utilizzata spesso nei

modelli descritti nei prossimi paragrafi:

I file di questo tipo sono identificati dalla seguente sintassi:

- Il comando function richiama la tipologia del file

Page 4: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

- Le variabili tra parentesi quadre rappresentano l’output dell’algoritmo

- Il nome dopo il segno di uguaglianza è il nome da utilizzare per

richiamare la funzione e deve essere tassativamente lo stesso nome con

cui si salva il file nella memoria del computer

- Le variabili tra parentesi rappresentano gli input dell’algoritmo.

Nel caso della funzione Dijkstra le variabili di input sono:

- AorV: matrice rete i cui elementi sono diversi da 0 se rappresentano un

arco

- xyCorE: matrice dei costi dimensionalmente equivalente alla matrice rete

- SID: scalare, nodo partenza

- FID: scalare, nodo destinazione

Mentre gli output forniti sono:

- Costs: scalare, costo del percorso più breve

- Paths: vettore, sequenza dei nodi per giungere a destinazione (FID)

partendo dall’origine (SID).

L’utilizzo di una function non permette il salvataggio delle variabili utilizzate

all’interno della stessa ma fornisce esclusivamente le variabili di output.

L’altra tipologia di file è detta script. In questo caso non sono necessarie

particolari forme sintattiche e inoltre le variabili utilizzate durante il processo

vengono salvate nel workspace, permettendo all’utente di richiamarle o

esplorarle in uno spazio separato. I file script sono composti da operazioni e

operatori logici in sequenza che a seguito del comando run vengono eseguiti

dal prompt dei comandi.

Sia i file script che i file function devono essere salvati e aperti esclusivamente

da MATLAB e sono identificati dall’estensione .m.

La versione del sofware Matlab utilizzata è la 2012b a 32bit in ambiente

Windows.

Page 5: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Applicazione per il lavoro di tesi

Come già accennato lo studio del software è stato necessario in considerazione

del suo utilizzo per la modellizzazione di sistemi di trasporto pubblico urbano e

in particolari di un sistema ad itinerari fissi ed un sistema a chiamata, entrambi

elaborati sulla medesima rete urbana.

Il punto di partenza è stato proprio la costruzione della rete di trasporto e la sua

rappresentazione in ambiente Matlab. La rete elaborata per la costruzione dei

modelli è composta da 24 nodi (figura 1), ognuno dei quali è una possibile

origine e/o destinazione degli spostamenti; gli archi orientati che collegano i vari

nodi rappresentano le infrastrutture viarie.

Figura 1 Rappresentazione grafica della rete

Page 6: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

La rete viene descritta analiticamente da una matrice n x n, con n pari al

numero di nodi, nel quale ogni elemento aij rappresenta la distanza tra il nodo i

e il nodo j in chilometri (figura 2).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

1 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

2 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

3 0.0 0.5 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

4 0.0 0.0 0.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

5 0.0 0.0 0.0 0.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

6 0.0 0.0 0.0 0.0 0.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

7 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

8 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

10 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

11 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0

12 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.3 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0

13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

14 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0

15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0

16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.0 0.0

17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.0

18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.5 0.0 0.0 0.0 0.5 0.0

19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.5

20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0

21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.5 0.0 0.0

22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.5 0.0

23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0 0.5

24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.5 0.0

Figura 2 Matrice che rappresenta la rete

Per introdurre questa matrice nell’algoritmo si utilizza il comando load che

permette di caricare le variabili in ambiente MATLAB a partire da semplici file in

formato testo. Si è utilizzata la stessa funzione anche per caricare le matrici

relative alla domanda di trasporto e le variabili del servizio, quali frequenza delle

linee, capacità dei mezzi e velocità di percorrenza, precedentemente salvate in

un file dati.

Page 7: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Modello per il sistema ad itinerari fissi

Il primo modello elaborato è quello per la rappresentazione di un sistema di

trasporto pubblico su gomma ad itinerari fissi ed invariabili. Oltre a lavorare

sugli input descritti è stato dunque necessario definire le linee di autobus che

operano nell’area. Seguendo la stessa metodologia applicata per la costruzione

della rete, sono stati aggiunti nuovi nodi e archi che però in questo caso

rappresentano l’infrastruttura stradale utilizzata dai mezzi pubblici. Ulteriori

collegamenti vengono creati fra i nodi della rete e i nodi fermata per permettere

agli utenti di salire e scendere dai mezzi. La rete completa per questo sistema

si mostra come in figura 3.

Figura 3 Rete completa di linee di trasporto pubblico

A rete completa è rappresentata analiticamente dalla matrice seguente:

Page 8: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Figura 4 Matrice rete completa

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

1 0 0.5 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2 0.5 0 0.5 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

3 0 0.5 0 0.25 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

4 0 0 0.25 0 0.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0

5 0 0 0 0.25 0 0.25 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6 0 0 0 0 0.25 0 0.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

7 0 0 0 0 0 0.25 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

8 0.5 0 0 0 0 0 0 0 0.25 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0

9 0 0 0 0 0 0 0 0.25 0 0.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

10 0 0.5 0 0 0 0 0 0 0.25 0 0.5 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

11 0 0 0.5 0 0 0 0 0 0 0.5 0 0.5 0 0 0 0 0.5 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

12 0 0 0 0 0.5 0 0 0 0 0 0.5 0 0.25 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

13 0 0 0 0 0 0 0 0 0 0 0 0.25 0 0.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

14 0 0 0 0 0 0 0.5 0 0 0 0 0 0.25 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

15 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

16 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0 0.5 0.5 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 -2 0

17 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0.5 0 0 0 0.5 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -2 0 0 0 0 0 -2

18 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0.75 0 0.5 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

19 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0.5 0 0.5 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

20 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0

21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0

22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0.5 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0.5 0 0 0 0.5 0 0.5 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0

24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0.5 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0

28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0

30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0

33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.25 0 0 0 0 0 0 0 0

34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0

38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5

43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

Page 9: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Ogni elemento della matrice è così caratterizzato:

- 0 se i nodi i e j non sono collegati o se sono lo stesso nodo;

- Distanza in chilometri fra i e j, se i nodi in questione sono collegati; in

particolare sono evidenziati in rosso gli archi di discesa, in viola gli archi

utilizzati dai mezzi della seconda linea e in arancione i mezzi utilizzati

dagli autobus della prima linea

- Numero della linea a cui permettono l’accesso per gli archi di salita

(evidenziati in verde);

- 0.75 km come penalità di transfer (arco evidenziato in blu). Il modello

riconosce questo link come pedonale e quindi impone una penalità pari a

10 minuti;

Una volta definiti gli input si passa alla scrittura del modello in MATLAB,

suddividendolo in due fasi: la fase di pianificazione dello spostamento e la fase

di simulazione.

Nella fase di pianificazione vengono costruiti i database su cui si opererà

durante la simulazione:

- Lista degli eventi (event_list): ogni

elemento della lista degli eventi

presenta un dato temporale e un codice

per identificare l’evento in questione

(figura 5); questo codice può essere un

numero positivo per eventi legati ai

gruppi di utenti, un numero negativo

per eventi legati agli autobus e 0 per

eventi legati alla generazione di nuova

domanda;

Figura 5 Lista eventi

Page 10: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

- Database dei gruppi di utenti (group_register): un database con tante

righe quanti sono i gruppi di utenti che hanno pianificato l’utilizzo delle

linee di autobus durante la fase preliminare. Per ogni gruppo di utenti

viene registrato il percorso da effettuare e a quale nodo dello stesso è

giunto, aggiornando la posizione ad ogni nuovo evento che riguarda il

gruppo (figura 6).

Figura 6 database dei gruppi di utenti

- Database degli autobus (bus_register): un database con tante righe

quanti sono gli autobus necessari per espletare il servizio. In questo

database vengono registrati il grado di occupazione, la posizione attuale,

la linea di appartenenza e, per ogni gruppo presente sull’autobus, codice

e fermata di discesa (figura 7). Questo database viene aggiornato ad

ogni evento che interessa i veicoli.

Figura 7 Database degli autobus

Page 11: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

La fase della simulazione si basa sul database event_list: il modello estrae il

primo evento temporale, lo processa in relazione alla sua tipologia e se

necessario crea un ulteriore evento legato allo stesso codice. La simulazione

termina quando tutti gli utenti sono giunti a destinazione (ciclo while.)

2.1. Modello per il sistema a chiamata

Ipotesi fondamentale da cui si è partiti per la definizione del sistema a chiamata

è la conoscenza a priori dell’intera domanda giornaliera. Questa ipotesi viene

spesso introdotta per studi di questo tipo ed è stata utilizzata anche in diverse

applicazioni reali di questi sistemi: operativamente si ipotizza che le richieste di

trasporto giungano nel sistema entro il termine della giornata precedente al

servizio, in modo da ottimizzare lo stesso già prima del suo inizio. La domanda

di trasporto, la sua distribuzione e la rete sono le stesse dello scenario

precedente in modo da rendere possibile il confronto tra i due sistemi.

Il problema principale riscontrato è stato scrivere un algoritmo che permettesse

di costruire, utente dopo utente, il percorso più efficiente per servire tutta la

domanda di trasporto. Si è optato per un metodo di inserzione euristica che

consiste nel cercare la posizione migliore in cui inserire un utente in un

percorso dell’autobus provando tutte le possibili configurazioni ed estraendo

quella di costo minimo. Per comodità si è diviso l’algoritmo in più sub-algoritmi a

seconda se i nodi partenza e arrivo di un utente fossero già presenti nel

percorso dell’autobus.

Di seguito una breve descrizione dei sub-algoritmi utilizzati:

Sub-algoritmo 1.1: i nodi origine e destinazione sono entrambi presenti nel

percorso

Dato che i nodi sono già presenti nel percorso analizzato si programma la salita

e la discesa del gruppo di utenti negli stessi nodi e si modifica il numero di

passeggeri a bordo per quella tratta. In seguito si verificano i vincoli di capacità

Page 12: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

del mezzo e di tempo massimo per lo spostamento di ogni gruppo presente

sullo stesso veicolo.

Sub-algoritmo 1.2: solo il nodo origine è già incluso nel percorso

Si programma la salita del gruppo nel nodo origine che è già presente e si

inserisce il nodo destinazione in tutte le posizioni possibili fra la posizione del

nodo origine e l’ultimo nodo presente nel percorso. La configurazione di minor

costo che rispetta i vincoli sarà registrata come possibile soluzione.

Sub-algoritmo 1.3: solo il nodo destinazione è già incluso nel percorso

In maniera simile all’algoritmo precedente viene pianificata la discesa del

gruppo nel nodo destinazione e viene provato l’inserimento del nodo origine in

tutte le posizioni possibili. Anche in questo caso la configurazione di minor

costo che rispetta i vincoli viene presa in considerazione come possibile

soluzione.

Sub-algoritmo 1.4: né il nodo origine né il nodo destinazione fanno parte del

percorso analizzato

In questo caso aumentano le possibilità di inserimento in quanto, nel lasso di

tempo che va dal tempo di generazione del gruppo al tempo massimo finale, è

possibile inserire i nodi in tutte le posizioni. In modo simile al sub algoritmo 1.2

si fissa il nodo origine e si prova ad inserire il nodo destinazione in tutte le

posizioni successive; una volta terminato il processo e registrate le possibili

soluzioni, si fissa nuovamente il nodo origine e si verificano le altre possibilità,

fino ad esaurimento delle combinazioni.

Sub-algoritmo 2: inizializzazione nuovo autobus

Se nessuno dei sub-algoritmi di inserzione ha fornito una soluzione che rispetti i

vincoli allora l’algoritmo inizializza un nuovo autobus, fino a raggiungere il

numero di autobus disponibili.

Anche in questo caso la simulazione termina quando tutti gli utenti sono giunti a

destinazione.

Page 13: DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA MAGISTRALE

Conclusioni

Le conoscenze basi sull’ambiente MATLAB acquisite durante il tirocinio si sono

rivelate un ottimo punto di partenza per affrontare la prima parte del lavoro di

tesi. Il software grazie alla sua interfaccia risulta intuitivo e semplice da

utilizzare e allo stesso tempo incredibilmente potente e adatto alla risoluzione

delle più diverse tipologie di problemi. Nonostante ciò, in un periodo

complessivo di quasi due mesi dedicato al software, credo che il livello di

conoscenza raggiunto non sia ancora tale da permettermi di sfruttare a pieno le

potenzialità di MATLAB, specialmente per quanto riguarda le funzionalità legate

alla rappresentazione grafica.