CAPITOLO 1 IL SOFTWARE SUMO
1.6 Assegnazione della domanda di trasporto alla rete: definizione degli itinerari (routes)
1.6.3 DFRouter
A partire dalla versione 0.9.5, il pacchetto SUMO contiene un modulo di routing chiamato DFRouter. L'idea alla base di questo router è che, al giorno d'oggi, la maggior parte delle autostrade sono ben
equipaggiate con circuiti a induzione, che misurano i flussi in ingresso e in uscita: date queste informazioni, si può presumere che i flussi sull'autostrada siano completamente noti.
DFRouter utilizza direttamente le informazioni raccolte dai circuiti a induzione per ricostruire il numero di veicoli e i loro itinerari.
Questo viene fatto in diversi passaggi:
1) Definizione dei tipi di rilevatore: significa che ogni circuito a induzione è impostato come rilevatore di flusso in ingresso, in uscita o intermedio;
Il pacchetto definisce:
“pure sources”: punti di ingresso, punti di partenza delle routes
“in Between”: punti intermedi: i numeri dei veicoli simulati sono adattati alle misure in queste posizioni;
“pure sink”: punti di uscita, di arrivo delle routes.
Un rilevatore è classificato come "pure source" se sono validi i seguenti vincoli: a) non c'è nessun altro rilevatore nella stessa strada, di fronte allo stesso; b) non è presente alcun rilevatore su nessuna delle strade precedenti. Analogamente, un rivelatore è classificato come "pure sink" se
a) non c'è nessun altro rivelatore nella stessa strada, dietro allo stesso; b) non è presente alcun rilevatore su nessuna strada successiva. 2) Calcolo degli itinerari fra i rilevatori;
Le fasi principali dell'algoritmo che calcola le probabilità di utilizzo del percorso sono le seguenti: a) Determinazione dei rilevatori a valle (tenendo conto delle intersezioni stradali a valle) di tutti i
rilevatori "source" e "in-between".
b) Calcolo della distribuzione del flusso di traffico per ogni intersezione, utilizzando i dati del rilevatore; le svolte dell'intersezione non dotate di rilevatori ottengono una probabilità di 1.0 come impostazione predefinita (problematico per reti reali).
c) Calcolo delle distribuzione del flusso sulle destinazioni per tutti i rilevatori di ingresso (source), moltiplicando tutte le probabilità di flusso su tutti gli archi che costruiscono quell'itinerario. In breve, l'algoritmo calcola gli itinerari calcolando la distribuzione del flusso totale sulle varie destinazioni con le probabilità del percorso ad ogni intersezione.
Se vengono forniti tutti i rilevatori di uscita (sink), i flussi misurati devono essere replicati correttamente.
Una soluzione unica al problema, a partire dalla matrice O-D, può essere ottenuta solo se esiste una sola origine e la rete è completamente coperta da rilevatori; questo non è il caso delle reti del mondo reale.
3) Calcolo dei flussi fra i rilevatori; 4) Salvataggio dei flussi calcolati.
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 45
Fig 1. 17: Diagramma della simulazione con DFRouter
Questo semplice algoritmo fallisce nel caso di rilevatori mancanti, in quanto non è in grado di “indovinare” i dati mancanti e quindi non può calcolare la probabilità di scegliere una delle strade successive.
Come impostazione predefinita, la probabilità di utilizzare la strada non osservata è impostata su100%, sopravvalutandola: questa impostazione predefinita viene scelta in modo arbitrario, perché qualsiasi altro valore utilizzato sarebbe errato.
L'applicazione DFRouter si dimostra carente quando viene utilizzata su reti a maglie molto fitte (caso tipico di molte città); in questi casi, le alternative sono lo strumento flowrouter o la calibrazione dinamica.
I veicoli sono inseriti nelle posizioni dei rilevatori di sorgente.
Per ogni rilevatore riconosciuto come "pure source", DFRouter genera le distribuzioni sui percorsi e un elenco di veicoli che devono essere inseriti nella rete di simulazione in questa posizione.
Una distribuzione su un itinerario è definita da percorso e una probabilità di sceglierlo, in cui un percorso è definito come un elenco di archi da attraversare.
Durante il calcolo DFRouter può utilizzare come input di calibrazione dei flussi calcolati i dati di ciascun rilevatore intermedio (in-between): il pacchetto adatta il numero di veicoli di passaggio ai valori letti aggiungendo/rimuovendo veicoli nella/dalla simulazione.
Operativamente, per l’utilizzo del pacchetto DFRouter si entra, dal prompt dei comandi di DOS, sulla cartella di lavoro; quindi si fornisce il comando:
dfrouter <FILES DI INPUT> <FILES DI OUTPUT> <COMANDI DI PROCESSING>
Dove i possibili file di input sono 3:
Comando Descrizione
-n --net-file
Si indica il file della rete (network di SUMO) -d
--detector-files
Si indica il detector file, in cui sono contenute le informazioni sui rilevatori -f
--measure-files
Si indica il measure file, che contiene i dati sui flussi di traffico misurati dai rilevatori Tab 1. 17: Files di input per una simulazione con DFRouter
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 46
Fig 1. 18: Esempio di detector file; la descrizione delle informazioni fornite verrà data nel seguito.
Fig 1. 19: Esempio di measure file; la descrizione delle informazioni fornite verrà data nel seguito.
L'idea alla base di DFRouter presuppone che una rete sia completamente coperta da rilevatori, il che significa che tutti gli ingressi e le uscite sulle/dalle rampe hanno un circuito di induzione posizionato su di esse. Per l'elaborazione, DFRouter necessita di un elenco di definizioni di rivelatori, in cui ciascuna voce descriva la posizione di un circuito a induzione.
Un detector file dovrebbe apparire come segue:
<detectors>
<detectorDefinition id="<DETECTOR_ID>" lane="<LANE_ID>" pos="<POS>"/> ... further detectors ...
</detectors>
Ciò significa che ogni rivelatore viene inizialmente descritto usando il suo id, una corsia su cui è posizionato e una posizione sulla corsia.
Per la precisione:
id È la stringa che contiene l'id del rivelatore
lane È l'id della corsia su cui si trova il rilevatore. Deve essere una corsia all'interno della rete. pos Indica la posizione sulla corsia su cui deve essere posizionato il rilevatore, in [metri].
La posizione deve essere un valore compreso fra -1*(lunghezza della corsia) e la lunghezza della corsia.
Nel caso di un valore negativo, la posizione verrà calcolata all'indietro dalla fine della corsia (“all’indietro” si intende considerando come positiva la posizione verso cui guidano i veicoli).
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 47
DFRouter restituisce vari file in output, fra cui:
File di output Tipo di
variabile fornita Descrizione
--precision Numero intero Specifica la precisione dei valori di output calcolati (il numero di cifre dopo la virgola); di default è 2. -H
--human-readable-time
Variabile booleana
Con questo comando, anziché in [secondi], i tempi sono indicati in ore:minuti:secondi o
giorni:ore:minuti:secondi; di default: false -o
--routes-output
File È l’output più importante: genera il file delle routes
--routes-for-all Variabile
booleana
Comando che obbliga DFRouter a calcolare le routes utilizzando i dati forniti dai rilevatori in-between; di default: false
--detector-output File Genera un file in cui si specifica la tipologia di ogni rilevatore
--detectors-poi-output File Genera un file in cui la posizione di ogni rilevatore viene considerata come POI (Point Of Interest)
--emitters-output File Genera un file che indica i veicoli generati per ciascuno dei rilevatori di ingresso (source)
--vtype Variabile
booleana
Comando che aggiunge al emitter file l’informazione sulle tipologie di veicoli generati (leggeri (PKW) o pesanti (LKW)); di default: false
--emitters-poi-output File Genera un file che contiene le posizioni dei veicoli generati sotto forma di POI (Points Of Interest) --variable-speed-sign-output File Genera un file su cui vengono riportate le velocità dei
veicoli registrate dai rilevatori in uscita Tab 1. 18: Files di output ottenibili con una simulazione con DFRouter
Data una rete e l'elenco dei rilevatori, DFRouter assegna una tipologia ad ogni rilevatore, e salva l'elenco in un file, se viene fornita l'opzione
--detectors-output <FILE>
Questo elenco appare come il detector file sopra descritto, tranne per il fatto che viene assegnato un attributo addizionale per ciascun rivelatore, "type", che come visto può avere uno dei valori seguenti:
Source: rilevatore di flussi in ingresso.
Sink: rilevatore di flussi in uscita.
Between: rilevatore di flussi intermedi.
Discarded: rilevatore “scartato” dal gruppo di detectors considerati.
Si può anche generare un elenco di punti di interesse (POI: Points Of Interest), che può essere letto da SUMO-GUI: ciascun POI rappresenta un rilevatore, ed è colorato a seconda del tipo:
verde per rilevatori di ingresso, rosso per rilevatori di uscita, blu per rilevatori intermedi, nero per rivelatori scartati.
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 48
--detectors-poi-output <FILE>
Se lo si desidera, se ad esempio alcuni parametri cambiano, è possibile aggiornare il Detector Output file utilizzandolo come file di input di DFRouter (al posto del Detector File); in questo caso, le tipologie di rilevatori non devono essere assegnate di nuovo.
Se si desidera anche riassegnare le tipologie, si utilizza
--revalidate-detectors
Ora che sappiamo da dove entrano e dove escono i veicoli dalla rete, possiamo calcolare le routes per ciascuna coppia O/D usando, come visto,
--routes-output <FILE>
Dove <FILE> è il nome del file in cui devono essere scritti i percorsi calcolati; il file generato contiene solo gli itinerari, nessuna informazione sui veicoli.
Si possono aggiungere ulteriori comandi di processing alla simulazione (come il sopracitato –revalidate- detectors), come:
Comando Descrizione
--max-search-depth Serve a fornire il numero massimo di archi privi di detector che è possibile attraversare affinché la route sia considerata valida; di default è 30.
--revalidate-routes Ricalcola tutte le routes, anche se fornite attraverso apposito file --keep-unfinished-routes Mantiene anche quei percorsi in cui non è stato possibile trovare un
rilevatore di uscita, cosa che potrebbe accadere se la rete non fosse completamente coperta da circuiti a induzione.
--keep-longer-routes Mantiene anche le routes più lunghe, anche dopo che itinerari più brevi sono stati calcolati
--disallowed-edges Permette di indicare gli id di uno o più archi da escludere dal calcolo delle routes
--strict-sources Comando molto importante: in DFRouter, i detector source che hanno un percorso che li collega ad un altro detector source vengono scartati
(discarded), a causa dell’impostazione “false” di default di questo comando. Impartendo –strict-sources invece, tutti i detector che hanno almento un detector nella prosecuzione della route diventano “Between”, mentre quelli che non li hanno diventano detector “Source”.
--error-log Comando che genera un file di testo (.txt) contenente tutti i messaggi di “Warning” e di errore.
Tab 1. 19: Alcuni comandi di processing utilizzabili in una simulazione con DFRouter
Se non viene fornito sin dal principio, il passaggio successivo consiste nell'utilizzare i percorsi calcolati e i flussi ottenuti dai rilevatori del mondo reale per calcolare i flussi attraverso la rete modellata.
I flussi vengono inviati a DFRouter usando il comando di input
--measure-files <FILE>
I flussi vengono archiviati in formato csv, usando ';' come carattere che divide. Il measure file dovrebbe apparire come segue:
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 49
myDet1;0;10;2;100;80 ... further entries ...
In cui:
Detector È una stringa che contiene l'id del rilevatore descritto; dovrebbe essere uno degli ID utilizzati nel <DETECTOR_FILE>
Time Indica l'inizio in [minuti] del periodo di tempo descritto
qPKW È il numero di autovetture che hanno attraversato il rilevatore in questo periodo di tempo vPKW È la velocità media delle autovetture che sono passate sul rilevatore in questo periodo di tempo,
in [km/h]
In aggiunta, possono essere incluse altre colonne:
qLKW È il numero di veicoli commerciali che hanno superato il rilevatore in questo periodo di tempo vLKW È la velocità media dei veicoli commerciali che hanno superato il rilevatore in questo periodo di
tempo, in [km/h]
A causa del fatto che in alcuni casi i flussi sono rilevati a partire da un certo istante ma si vuole iniziare la simulazione da un altro, è possibile aggiungere un time offset usando
--time-offset <INT>
Dove <INT> è il numero di secondi da sottrarre dai tempi di lettura dei dati.
DFRouter funziona al meglio quando tutti i possibili archi di ingresso e di uscita sono dotati di rilevatore, e i dati raccolti sono uniformemente distribuiti nel tempo.
L'algoritmo funziona presupponendo che la somma dei flussi di ingresso corrisponda alla somma di quelli in uscita, per ogni intervallo di misurazione (ignorando in tal modo il tempo di viaggio).
Il numero di veicoli generati per ciascun intervallo di misurazione è determinato dai soli rilevatori di ingresso:
Il flusso in eccesso nei rilevatori di uscita viene ignorato;
se i rilevatori di uscita misurano meno flusso, si suppone che i veicoli arriveranno comunque a destinazione, in proporzione al flusso misurato;
se i rilevatori di uscita non misurano affatto il flusso, tutti i veicoli guideranno verso un'uscita (arbitraria).
Se sono state fornite le definizioni dei flussi, possiamo consentire a DFRouter di salvare i veicoli calcolati insieme ai loro percorsi.
I veicoli saranno generati dai rilevatori di ingresso, che sono posizionati in determinate posizioni delle corsie delle reti; DFRouter genera veicoli con l'opzione:
--emitters-output <FILE>
DFRouter presenta la caratteristica (unica, fra le applicazioni di routing di SUMO) di generare routes e veicoli separatamente.
STUDIO ED APPROFONDIMENTO DEL MODELLO DI TRAFFICO SUMO.
APPLICAZIONE ALLE CITTÀ DI PIOMBINO E VADO LIGURE 50