Académique Documents
Professionnel Documents
Culture Documents
Facultatea de Transporturi
ALGORITMI DE RUTARE
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.
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;
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.
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
4. Algoritmul A*
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.
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ă.