• Non ci sono risultati.

CAPITOLO 1 IL SOFTWARE SUMO

1.6 Assegnazione della domanda di trasporto alla rete: definizione degli itinerari (routes)

1.6.2 Duarouter

Un metodo più semplice rispetto alla definizione manuale dei file di route è la definizione di un solo set di trips, utilizzando l'applicazione Duarouter per trasformare le trips in routes.

L'output principale di Duarouter è un file “.rou.xml”; inoltre viene generato un file “.rou.alt.xml” con lo stesso prefisso del nome del file principale.

Questo file alternativo contiene un tag xml routeDistribution per ogni veicolo; questo tag viene utilizzato durante l'assegnazione dinamica, ma può anche essere caricato direttamente in SUMO.

Esistono tre diversi algoritmi di routing utilizzati da Duarouter per generare i percorsi:  l'algoritmo di Dijkstra

Prevede la connessione di tutti i nodi della rete con archi fittizi di costo infinito; quindi, a partire dal nodo di origine, si analizzano i nodi estremi degli archi che si dipartono da esso, e vi si sostituisce il valore reale dell’arco che li collega; matematicamente, la condizione è

STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.

APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 41

𝑐𝑗≤ 𝑐𝑖+ 𝑐𝑖𝑗 ∀ 𝑖 𝜖 𝑁𝑗−

𝑐𝑗= 𝑐𝑖+ 𝑐𝑖𝑗 𝑝𝑒𝑟 𝑎𝑙𝑚𝑒𝑛𝑜 𝑢𝑛 𝑖 ∈ 𝑁𝑗−

(𝑐𝑜𝑛𝑑𝑖𝑧𝑖𝑜𝑛𝑖 𝑑𝑖 𝐵𝑒𝑙𝑚𝑎𝑛𝑛)

Si procede quindi prendendo in esame un altro nodo, e così via fino al completamento della rete.  l'algoritmo A * (A-star)

Algoritmo di ricerca del tipo “best-first”: esamina, passo dopo passo, i nodi che hanno il punteggio migliore.

A* usa una lista di nodi già visitati e una coda a priorità contenente i nodi da visitare, per mantenere traccia dello stato d’esecuzione.

Nel corso dell’esecuzione, ad ogni nodo vengono associati più valori; detti “n” il nodo corrente, p il nodo di partenza e s il nodo soluzione, si definiscono i valori:

𝑔𝑠𝑐𝑜𝑟𝑒= 𝑔(𝑝, 𝑛) Costo effettivo del percorso che separa i nodi p (partenza) e n

(attuale)

ℎ𝑠𝑐𝑜𝑟𝑒 = ℎ(𝑠, 𝑛) Stima del costo del percorso tra i nodi s (soluzione) e n (attuale)

𝑓𝑠𝑐𝑜𝑟𝑒= 𝑔𝑠𝑐𝑜𝑟𝑒+ ℎ𝑠𝑐𝑜𝑟𝑒 Corrisponde alla definizione dell’algoritmo euristico enunciato in

precedenza; essa è infatti chiamata spesso funzione euristica. Si costruisce quindi il percorso ottimale prendendo in esame i nodi in successione, ricercando il minimo fscore

 l'algoritmo Contraction Hierarchies

Si basa sulla classificazione gerarchica delle strade (dalla più alla meno importante), modellata sui nodi anziché sugli archi: il cammino ottimo è quello che percorre i nodi gerarchicamente più importanti.

Tutti gli algoritmi di routing disponibili restituiscono il percorso con il tempo di percorrenza più breve (minimo percorso).

Di default, Duarouter utilizza l’algoritmo di Dijkstra; è possibile specificare quale algoritmo utilizzare con il comando

--routing-algorithm <algoritmo>

Dove ad “algoritmo” si inserisce

dijkstra Per utilizzare l’algoritmo di Dijkstra astar Per utilizzare l’algoritmo A-Star

CH Per utilizzare l’algoritmo Contraction Hierarchies

Sulla base di questi algoritmi, quindi, Duarouter esegue un’assegnazione tutto o niente (T-o-N). Operativamente, dal prompt dei comandi del DOS, entrati nella cartella di lavoro, si scrive:

duarouter <FILES DI INPUT> <FILES DI OUTPUT> <COMANDI DI PROCESSING>

I files di input devono necessariamente comprendere:

Comando Descrizione

-n Si fornisce il network, il file della rete

-d Si forniscono file addizionali, generalmente quello dove sono definite le TAZ -t Si fornisce il file delle trips, precedentemente generato

STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.

APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 42

Oltre a questi comandi, è possibile fornire altri input, come:

Comando Tipo di variabile fornita Descrizione -t --route-files

file Permette di fornire file contenenti routes, trips o flussi di traffico (flows).

--junction-taz Variabile booleana

Converte ogni intersezione in una TAZ (di cui vengono considerati i flussi in ingresso e uscita).

-w

--weight-files

file Permette di fornire un file contenente i costi degli archi della rete. Tab 1. 12: Files di input opzionali per una simulazione con Duarouter

Il costo degli archi della rete è espresso in termini di tempo di percorrenza degli stessi (traveltime); generalmente il tempo di percorrenza viene calcolato dividendo la lunghezza dell’arco per la velocità massima consentita sullo stesso, ma fornendo un file xml con il comando “-w” si può sovrascrivere tale valore.

Fig 1. 16: Esempio di weight file: per tutto l’intervallo di simulazione (“begin” “end”) si può fornire per ogni arco (definito dal suo “id”) un valore di traveltime desiderato.

Il file di output principale generato dalla simulazione è il file delle routes:

Comando Descrizione

-o

--output-file

Si indica il nome del file delle routes che viene generato dalla simulazione Tab 1. 13: File di output principale per una simulazione con Duarouter

È anche possibile generare altri file di output o fornire specificazioni riguardo alcune grandezze misurate, con alcuni comandi, fra i quali:

Comando Tipo di variabile

fornita

Descrizione

--precision Numero intero Permette di specificare con quante cifre dopo la virgola devono essere fornite le grandezze di output della simulazione

--vtype-output File Genere un file in cui sono riportate le tipologie di veicoli simulati

--intermodal-weight-output File Fornisce un file con informazioni riguardo lunghezza e tempi di percorrenza degli archi su cui è consentito il trasporto intermodale

STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.

APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 43

--write-trips Variabile

booleana

Fornisce, per le varie routes generate, le trips che le hanno utilizzate (anziché gli id dei veicoli).

--write-trips.geo Variabile

booleana

Fornisce le trips in termini di coordinate geografiche anziché di id degli archi appartenenti alle TAZ.

--exit-times Variabile

booleana

Fornisce gli istanti di uscita da ogni arco dei vari veicoli. Tab 1. 14: File di output opzionali per una simulazione con Duarouter

I comandi di processing principali utilizzati sono:

Comando Descrizione

--ignore-errors Comando che permette di proseguire la simulazione anche se per alcuni veicoli non si riesce ad identificare una route.

--with-taz Tiene conto delle TAZ definite nell’apposito file

Tab 1. 15: Principali comandi di processing per una simulazione con Duarouter

Esistono anche altri comandi di processing, fra i quali:

Comando Descrizione

--weights.random-factor Con questo comando si attribuisce una varianza al valore del costo degli archi, in modo che tale costo subisca variazioni dinamiche random durante la simulazione; di default è “1”

--weights.priority-factor Con questo comando si impone alla simulazione di calcolare il costo degli archi con una media pesata fra il tempo di percorrenza (traveltime) e la priority; il valore fornito con questo comando (variabile fra [0,1]) rappresenta il peso della priority. Di default è “0”

--skip-new-routes Con questo comando si impone di utilizzare solo routes fornite in un file addizionale, senza calcolarne di nuove.

--persontrip.transfer.car-walk Con questo comando è possibile indicare le aree in cui avviene il cambio di modo di trasporto fra “walk” (a piedi) e “car” (in auto); di default si considerano le aree definite come “parkingAreas” (parcheggi), ma si possono fornire anche “allJunctions” (tutte le intersezioni), “taxi” (fermate del taxi) ecc…

Tab 1. 16: Esempi di possibili comandi di processing per una simulazione con Duarouter

STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.

APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 44