Sunteți pe pagina 1din 10

Universitatea Politehnica Bucuresti

Facultatea de Transporturi

Departamentul Transporturi Trafic si Logistica

ALGORITMI DE RUTARE

Masterand : Marius-Cristian LUCA

Anul universitar 2017-2018


ALGORITMI DE RUTARE
I. INTRODUCERE
Calcularea celei mai scurte rute dintre doua noduri in reteaua de drumuri este o sarcina
dificila in rutarea vechiculelor din domeniul transporturilor, distributiei si a logisticii.
Alegerea celui mai potrivit algoritm de rutare din numeroasele exemple din literature
este o problema majora a aplicatiilor de transport care implica folosirea retelei de drumuri
reale.
Aceasta problema apare deoarece in majoritatea retelelor, parametrii variabili (congestia
traficului, accidente, conditii atmosferice etc. ) afecteaza eficienta algoritmului. In acest caz,
este necesar ca algoritmii utilizati sa include si acesti parametrii variabili cat si actualizarea
celei mai scurte rute in conformitate cu acesstia.
Sistemele de navigatie sunt cele mai populare aplicatii ale Sistemului de Transport
Inteligent (ITS/STI). Acestea furnizeaza informatii despre conditiile traficului cat si ruta cea
mai scurta pana la destinatie bazata pe Sistemul de Pozitionare Globala (GPS) si harti rutiere
digitale.
In scopul de a beneficia de toate avantajele sistemului de navigatie auto, componentele
software trebuie sa functioneze in timp real sau intr-o retea dinamica. Reteaua dinamica de
drumuri este o retea in care conditiile se schimba in timp. Prin urmare algoritmul aplicat
pentru aceasta retea trebuie sa reactioneze la schimbarile din retea prin adaptarea rutei alese
astfel incat sa garanteze proprietatile optime in noile conditii.
Alegerea unui astfel de algoritm necesita cautari intense in scopul gasirii unui criteriu de
evaluare care poate fi folosit pentru clasificarea in functie de eficienta algoritmului in diferite
scenario de drum si diferite marimi ale retelei de infrastructura.
In continuare se vor prezenta cei mai importanti algoritmi pentru planificare rutelor in
timp real si clasificarea acestora in trei categorii dupa utilizarea lor in gasirea rutelor potrivite.
Sursele de informaţie şi actualizare a întârzierilor:
 Deciziile de rutare se iau de obicei pe baza informaţiilor acumulate de reţea
 Rutare distribuită
 Nodurile folosesc informaţii locale
 Pot colecta informaţii de la nodurile adiacente
 Pot colecta informaţii de la toate nodurile de pe o rută potenţială
 Rutare centrală
 Colectează informaţiile de la toate nodurile
 Actualizarea întârzierilor
 Actualizată dacă nodurile deţin informaţiile despre reţea
 Rutare fixă – nu se actualizează niciodată
 Rutare adaptivă – actualizări regulate
Strategii de rutare:
 Fixă
 Flooding
 Aleatoare
 Adaptivă
II. ALGORITMI ABORDATI IN PROBLEMA RUTARII VEHICULELOR

1. Algoritmul Dijkstra
Clasicul algoritm Dijkstra prezinta un process de gasire a rutei cu cel mai mic cost
plecand de la un nod la celelalte pe infrastructura unui oras.
Dijsktra este un algoritm bazat pe metoda “ etichetarii” (trecerea prin toate nodurile).
F. Benjamin considera ca pentru gasirea celei mai scurte rute in problema “ one-to-one”
se considera algoritmul Dijkstra finalizat atunci cand nodul destinatie a fost atins, cee ace
inseamna ca ruta cea mai scurta este gasita.
Astfel, algoritmul Dijkstra găseşte cea mai scurtă cale de la nodul origine la toate
celelalte noduri, prin dezvoltarea traseelor o dată cu creşterea lungimii traseelor.
 N =numărul de noduri din reţea
 O = nodul origine
 T = numărul de noduri cuprinse până acum în algoritm
 w(i, j) = costul legăturii între nodul i şi nodul j
 w(i, i) = 0
 w(i, j) = ∞ dacă nodurile nu sunt conectate direct
 w(i, j) ≥ 0 dacă nodurile sunt conectate direct
 L(n) = costul traseului de cost minim de la nodul O la nodul n cunoscut până acum.
 La terminarea algoritmului, L(n) e costul traseului de cost minim de la nodul
O la nodul n.

Pasii de realizare al algoritmului Dijkstra:

 Pasul 1 [Initializare]
 T = {O} mulţimea de noduri încorporate până acum constă doar în nodul
origine;
 L(O) = w(O, n) pentru n ≠ O;
 Costurile iniţiale ale traseelor până la nodurile vecine sunt costurile
legăturii;

 Pasul 2 [Trecerea la urmatorul nod]


 Găseşte nodul vecin care nu e în T cu cel mai mic cost pe traseu de la O;
 Adaugă nodul la T;

 Pasul 3 [Actualizează traseul de cost minim]


 L(n) = min[L(n), L(x) + w(x, n)] pentru n ∉ T;
 Dacă ultimul termen e minim, calea de la O la n e calea de la O la x
concatenat cu legătura de la x la n;

 Algoritmul se termină când toate nodurile au fost adăugate la T.


Exemplu:

Tabelul 1. Rezultatele algoritmului Dijkstra


2. Algoritmul Bellman-Ford-Moore

Definiţie
 Găseşte cea mai scurtă cale de la un nod sursă, cu constrângerea că există cel mult 1
legătură.
 Găseşte cea mai scurtă cale de la un nod sursă, cu constrângerea că există cel mult 2
legături, si aşa mai departe.
 O= nodul origine;
 w(i, j) = costul traseului de la nodul i la nodul j;
 w(i, i) = 0;
 w(i, j) = ∞ dacă nodurile nu sunt conectate direct;
 w(i, j) ≥ 0 dacă nodurile sunt conectate direct;
 h = numărul maxim de legături la un moment dat;
 Lh(n) = costul traseului de nivel minim de la O la n cu mai puţin de n
legături.

Pasii de realizare a algoritmul Bellman-Ford:

 Pasul 1 [Initializare]
 L0(n) = ∞, pentru n ≠ O;
 Lh(s) = 0, pentru orice h;
 Pasul 2 [Update]
 Pentru fiecare h ≥ 0;
 Pentru fiecare n ≠ O, calculează Lh+1(n)=min j[Lh(j)+w(j,n)];
 Conectează n cu nodul predecesor j care asigură minimul traseului;
 Elimină orice conexiune a lui n cu alt nod predecesor format la o iteraţie
anterioară;
 Traseul de la O la n se termină cu legătura de la j la n.

Exemplu:
Tabelul 2. Rezultatele algoritmului Bellman-Ford

3. Algoritmul de cost minim

 Sta la baza algoritmilor de rutare;


 Poate minimiza numărul de noduri, fiecare legătură are cost 1;
 Poate avea valoarea legăturii invers proporţională cu capacitatea;
 Presupune o reţea de noduri conectate cu legături bidirecţionale;
 Fiecare legătură are un cost în fiecare direcţie;
 Defineşte costul traseului între 2 noduri ca sumă a costurilor legăturilor traversate;
 Pentru fiecare pereche de noduri găseşte o cale cu cel mai mic cost;
 Costul legăturii în direcţii diferite poate fi diferit;
 Ex. Lungimea cozii de aşteptare.

4. Algoritmul A*

Este considerat o varianta a algoritmului Dijkstra dar foloseste o functie eruistica in


locul unui mecanism optim de cautare. In consecinta, A* reduce spatiul de cautare cat si
durata de calcul.
In aplicatiile de trafic, spatiul de cautare este restrictionat de zona de trafic congestionat.
Exemple ale acestui algoritm sunt RTA* si LRTA*, propuse pentru aplicatiile in timp real. De
obicei sunt utilizate distantele directe dintre origine si destinatie ca o functie euristica.

RTA * - Algoritm în timp real*


Căutare parțială cu executarea de acțiunii
 Scop: reduce timpul de execuție al algoritmului A*.
 Metodă: limitarea orizontului de căutare a algoritmului A* și selectarea unei
acțiuni (una singura) în timp constant.
 Luarea deciziei cu privire la următoarea mișcare în lumea reală fără a planifica
complet ruta pentru a ajunge la destinatie.
 Executarea unei decizii individuale de mișcare.
 Executarea unei serii de decizii pentru a ajunge la o soluție.
 Readaptarea in urma acțiunilor necorespunzătoare.
 Evitarea buclelor.
Bazele RTA *
 Menține într-o tabelă o listă a acelor noduri care au fost vizitate;
 La fiecare ciclu de actualizare, starea actuală a rutei este imbunatatita iar funcția
euristică, posibil augmentată de o căutare precedenta, este aplicata fiecărui nod viitor
care nu se află în tabel;
 Valoarea functiei f a fiecărui nod învecinat este calculată prin adăugarea valorii h plus
costul legăturii cu nodul actual;
 Nodul vecin cu valoarea minimă f este ales pentru ruta actuala;
 A doua valoare optimă a functiei f este stocată în tabel;
 Reprezintă costul estimat al valorii h si evita buclele.

h (a) ≤ g (a până la c) + h (c) ≤ h * (a); presupunând că trebuie ajuns la origine prin c din a.
Ca rezultat al explorării în spațiul de căutare de la a la c, se poate înlocui h (a) cu
estimarea mai bună, g (a la c) + h (c).
Acest lucru conduce la o decizie mai informată din S, dacă trebuie luată "Acțiunea în
lumea reală a mișcării" fie în stare y, a, sau x.

Dacă realizarea unui transport în mod repetat cu aceeași destinatie, dar cu o origine
diferită, atunci ar fi de dorit un algoritm care să-și îmbunătățească performanța în timp.
Îmbunatatirea preformantei în timp real a algoritmului A * (LRTA *) este un astfel de
algoritm. Se comportă aproape identic cu RTA *, cu excepția faptului că, în loc să stocheze a
doua valoare cea mai bună a functiei f a unui nod ca fiind noua sa valoare euristică, acesta
stochează cea mai bună valoare în schimb. Odată ce o problemă este rezolvată, valorile
euristice stocate sunt salvate și devin valoarea minimă pentru următoarea problemă.
În timp ce LRTA * este mai puțin eficient decât RTA * pentru rezolvarea unei singure
instanțe de problemă, dar dacă începe cu valori euristice inițiale admisibile în urma
încercărilor repetate, valorile euristice acoperă eventual valorile lor exacte. În acest punct
algoritmul returnează soluții optime.
5. Algoritmul „ TABU ”
Algoritmul a fost aplicat problemei rutarii transporturilor de catre Liao. Este o cautare
locala meta-euristica trecand prin cateva iteratii. Pe parcursul fiecarei iteratii, cea mai buna
solutie din vecinatatea solutiei curente este aleasa ca noua solutie, chiar daca va creste costul.
Prin urmare, o solutie locala slaba este imbunatatita. O memorie de scurata durata,
denumita ca lista „TABU”, este necesara pentru a stoca atributele solutiilor recente. Acest
lucru ajuta la evitarea ciclurilor pe termen scurt. Cautarea se opreste dupa un numar fix de
iteratii sau dupa un anumit numar de iteratii fara nicio imbunatatire a celei mai bune solutii
cunoscute.

Algoritmul „TABU” utilizează o procedură de căutare locală sau in vecinatate pentru a


trece dintr-o soluție potențială, x la o soluție îmbunătățită x' aflata în vecinătatea lui x.
Procedurile de căutare locală se blochează adesea în zonele congestionate sau în zonele în
care nu se poate circula. Pentru a evita aceste capcane și pentru a explora regiuni ale spațiului
de căutare care ar fi lăsat neexplorat de alte proceduri de căutare locale, algoritmul „TABU”
explorează cu atenție vecinătatea fiecărei soluții în timp ce căutarea continua. Soluțiile admise
în noua vecinatate, N ^* (x), sunt determinate prin utilizarea structurilor de memorie. Folosind
aceste structuri de memorie, căutarea progresează trecând treptat de la soluția curentă x la o
soluție x' in N * (x).

6. Algoritmul bazat pe coloniile de furnici


Acest algoritm meta-euristic este inspirat din natura, unde furnicile comunica si
coopereaza intre ele pentru a gasi rutele cele mai scurte de la cuib pana la sursa de hrana.
Cand o furnica gaseste ruta de la colonie la sursa de hrana, aceasta lasa in urma sa o substanta
chimica (feromoni) rezultand astfel un traseu. Daca celelalte furnici vor gasi aceasta urma , o
vor urma in loc sa caute o noua ruta.
Cand aceasta teorie este aplicata in Problema Rutarii Vehiculelor furnicile pastreaza in
memorie nodurile vizitate cat si duratele estimate pana la ajungerea la ele.
Acest algoritm a fost utilizat in cautarea celei mai scurte legaturi in PRV astfel incat sa
reactioneze la schimbarile conditiilor de trafic.

Primul algoritm bazat pe coloniile de furnici a fost numit „sistemul de furnic” și a fost
destinat să rezolve problema comisului voiajor, în care obiectivul este de a găsi cea mai scurtă
ruta ciclica care sa lege o serie de orașe. Algoritmul general este relativ simplu și se bazează
pe un set de furnici, fiecare realizând una dintre posibilele călătorii ciclice de-a lungul
orașelor.
În fiecare etapă, furnica alege să se mute dintr-un oraș în altul, conform unor reguli:
 Trebuie să viziteze fiecare oraș exact o dată;
 Un oraș îndepărtat are mai puține șanse de a fi ales;
 Cu cât traseul de feromoni este mai intens pe o margine între două orașe, cu
atât este mai mare probabilitatea ca acea margine să fie aleasă;
 După încheierea călătoriei, furnicile depozitează mai multi feromoni pe toate
marginile pe care le-a traversat, în cazul în care călătoria este scurtă;
 După fiecare repetare, urme de feromoni se evaporă.

7. Algoritmul genetic (GA)


Algoritmul genetic este utilizat pentru a rezolva problema cautarii si optimizarii rutelor.
Algoritmul simuleaza modul in care speciile evolueaza si se adapteaza mediului, conform
principiului lui Darwin, despre selectia naturala.
Pentru inceput se genereaza un nr de rute, apoi in momentul utilizarii uneia dintre
acestea, algoritmul o va compara cu celelalte rute furnizand solutii imbunatatite ale acesteia ,
sau chiar oferind o ruta noua, superioara din punct de vedere al costului fata de celelalte.
III. BIBLIOGRAFIE
1. V. Tran Ngoc, S.Djahel, J. Murphy, „A Comparative Study of Vehicles’ Routing
Algorithms for Route Planning in Smart Cities”, UCD School of Computer Science
and Informatics, Ireland.
2. C. Zaharia, Curs 10 „Metode de rutare”, TDRC, 2006.
3. https://en.wikipedia.org