• Non ci sono risultati.

2.3 Auto-organizzazione in COLOMBO

2.3.1 Politica Swarm di alto livello

Come verrà illustrato in 2.3.2 a pagina 42, ogni politica di basso livello ha prestazioni differenti in base alle condizioni correnti del traffico. La politica Swarm di alto livello ha il compito di scegliere, tra queste, quella più corretta sulla base sia del traffico sia delle prestazioni ottenute dalle policy nell’intersezione controllata.

Come già accennato precedentemente nella pagina precedente, si fa uso di una funzione di stimolo il cui input è calcolato sulla base del traffico rilevato dai sensori. La definizione di traffico alto o basso è molto relativa e legata alle corsie e al loro numero, alla geome- tria dell’intersezione e ai percorsi seguiti dai veicoli. Una misurazione corretta dei flussi veicolari deve inoltre essere insensibile a picchi di breve durata ma capace di far reagire il sistema rapidamente a modifiche più persistenti. Per esempio, una coda di auto data da un matrimonio è una situazione che si risolve in tempi ragionevolmente brevi, mentre è molto più intenso il flusso veicolare che si ha in uscita da un teatro o uno stadio al termine di un evento, che può durare anche per svariati minuti. Per questi motivi è necessario astrarre il livello di traffico ricorrendo ad una metafora naturale: il feromone. Come illustrato nell’in- troduzione al capitolo, a pagina 32, il feromone ha la proprietà di essere additivo: quanti più individui seguono lo stesso percorso tanto più elevato sarà il livello di feromone. Questo, inoltre, evapora e più sono gli individui a percorrere lo stesso percorso meno avrà capacità di evaporare.

Su questa base si è scelto di utilizzare i livelli di feromone per rappresentare i livelli dei flussi di traffico: i veicoli, muovendosi, lasciano una traccia di feromone (virtuale). Nel caso di corsie sgombre, questo evaporerà mentre, al contrario, tenderà ad accumularsi velo- cemente in presenza, per esempio, di code ferme ad un semaforo. I parametri che regolano l’accumulo e l’evaporazione del feromone sono trattati alla sezione 4.1 a pagina 57. Co-

me già accennato a pagina 38, i flussi di traffico vengono distinti in entranti ed uscenti, di conseguenza la stessa distinzione viene fatta per i livelli di feromone. Diversi sono anche i meccanismi che regolano il loro accumulo: per le corsie in ingresso il feromone aumenta proporzionalmente al numero di veicoli per corsia mentre su quelle in uscita si accumula proporzionalmente alla differenza tra velocità massima consentita e velocità media corren- te. La motivazione alla base di questa distinzione sta nel fatto che, per quanto affollate possano essere le direttrici in uscita dall’intersezione, se il traffico scorre velocemente non si hanno problemi di congestione. Dualmente, per le direttrici in ingresso, ci si aspetta che i veicoli si fermino al semaforo e quindi è di maggiore interesse il numero di mezzi presenti piuttosto che la loro velocità. I livelli di feromone delle corsie vengono infine mediati tra loro e usati come valori di input per la politica Swarm, ovvero per le funzioni di stimolo delle diverse policy di basso livello.

La funzione di stimolo è lo strumento utilizzato per calcolare l’interesse attuale per l’e- secuzione della particolare politica, a cui lo stimolo è associato, sulla base dei livelli di feromone correnti. La funzione mappa la rispettiva policy in uno spazio f eromonein ×

f eromoneout, viene tarata sperimentalmente per individuare i livelli di feromone a cui la

politica risponde meglio, ovvero le condizioni di traffico per cui vengono minimizzate par- ticolari metriche d’interesse come l’attesa media dei veicoli o il ritardo medio subito da questi, e fornisce come risultato un valore reale compreso tra 0 e 1. Il tipo di funzione scel- to è una gaussiana centrata nel punto in cui la politica ottiene i migliori risultati e i parametri che ne determinano altezza e posizione sono illustrati successivamente nella sezione 4.1. La sua formula è

s = cox ∗ ecoxExp (2.7)

con

coxExp = −coxExpin(fin− of f setin)

2

divisorin

+ −coxExpout(fout− of f setout)

2

divisorout

(2.8)

2.3.1.1 Selezione della politica di basso livello

Ad ogni istante di valutazione la politica Swarm aggiorna i valori di feromone presente sulle corsie controllate e, contemporaneamente, valuta la probabilità di cambiare la policy in esecuzione. Se il test probabilistico da esito positivo, vengono calcolate tutte le funzioni di stimolo in accordo agli attuali livelli di feromone.

Figura 2.2: Funzione di stimolo

[HFB+13]

Anche la scelta della politica è soggetta a probabilità, dal momento che il valore della funzione di stimolo è interpretato come probabilità di selezionare la policy a cui è associata. Su questa scelta, entra in gioco il fattore evolutivo del sistema: ad ogni stimolo viene ap- plicato, prima della selezione della politica, una soglia t che guidi la decisione verso quelle policy con soglia più bassa. Il valore, diverso per ogni politica, è variabile nel tempo: vie- ne decrementato quando la policy è scelta in maniera stabile e, dualmente, incrementato quando non viene scelta. Questo meccanismo consente di scegliere sempre la politica che si apprende essere la più adatta per l’incrocio controllato e prende il nome di rinforzo. La soglia è però confinata tra un valore minimo, non nullo, e uno massimo, per cui non sarà mai impossibile selezionare una politica, per quanto basso o quasi nullo possa essere il ri- sultato fornito dalla sua funzione di stimolo. Calcolato lo stimolo, t lo modifica attraverso la definizione del valore

θ = s

2

s2+ t2 (2.9)

Ricapitolando, la determinazione della selezione di una policy di basso livello da parte di Swarmparte dai livelli di feromone, i quali vengono dati in input alle funzioni di stimolo, coi relativi valori di soglia, che forniscono una probabilità di selezione della politica associata,

fattore che viene rinforzato nel tempo.[HFB+13]

Documenti correlati