miljan radovic - diploma work

107
UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA ODSEK ZA RAČUNARSTVO I AUTOMATIKU KATEDRA ZA RAČUNARSKE NAUKE I INFORMATIKU RUTIRANJE POMOĆU MRAVLJIH ALGORITAMA diplomski – master rad Kandidat: Mentor: Miljan Radović, E8774 Prof. dr. Zora Konjović Novi Sad 2007.

Upload: knyazs

Post on 15-Jun-2015

651 views

Category:

Documents


1 download

DESCRIPTION

This document is my (Miljan Radovic) diploma work named Ant Colony Optimization. It is good known optimization method described here also: http://en.wikipedia.org/wiki/Ant_colony_optimization.Unfortunately, this document is written in Serbian language :( but if you still want to read it, use google translate or similar tool.Thanks in advance,Miljan

TRANSCRIPT

Page 1: Miljan Radovic - Diploma Work

UNIVERZITET U NOVOM SADU

FAKULTET TEHNIČKIH NAUKA ODSEK ZA RAČUNARSTVO I AUTOMATIKU

KATEDRA ZA RAČUNARSKE NAUKE I INFORMATIKU

RUTIRANJE POMOĆU MRAVLJIH

ALGORITAMA

diplomski – master rad

Kandidat: Mentor:

Miljan Radović, E8774 Prof. dr. Zora Konjović

Novi Sad 2007.

Page 2: Miljan Radovic - Diploma Work
Page 3: Miljan Radovic - Diploma Work

i

ZADATAK DIPLOMSKOG RADA Izvršiti analizu i dati prikaz osnovnih mravljih algoritama. Analizirati mogućnosti primene pristupa baziranog na mravljim algoritmima na rutiranje u mreži. Na osnovu rezultata analize specificirati i implementirati softversko okruženje za praktičnu obuku studenata koje će omogućiti analizu procesa rutiranja na različitim mrežnim strukturama i za različite parametre mravljeg algortima.

Page 4: Miljan Radovic - Diploma Work

ii

Page 5: Miljan Radovic - Diploma Work

iii

SADRŽAJ 1. UVOD ............................................................................................. 1

1.1. Pojam, vrste i način rutiranja ................................................... 1 1.2. Uvod u mravlje algoritme ........................................................ 4

1.2.1. Inspiracija .......................................................................... 4 1.2.2. Istorijat .............................................................................. 6 1.2.3. Razvoj ............................................................................... 6 1.2.4. Osnovne karakteristike ...................................................... 7

2. OPIS MRAVLJIH SISTEMA ......................................................... 9 2.1. Ponašanje mrava....................................................................... 9 2.2. ACO - Metaheuristika ............................................................ 11

2.2.1. Predstavljanje problema .................................................. 12 2.2.2. Ponašanje veštačkih mrava ............................................. 12 2.2.3. Primena stečenog znanja - metaheuristika ...................... 14

2.3. Mravlji Sistem ........................................................................ 15 2.3.1. Karakteristike mravljeg sistema ...................................... 17

2.4. Proširenja mravljeg sistema ................................................... 17 2.4.1. Strategija elite.................................................................. 18 2.4.2. Rangiranje ....................................................................... 19 2.4.3. Sistem mravlje kolonije .................................................. 19 2.4.4. MMAS ............................................................................ 20

2.5. Efikasnost algoritma............................................................... 21 2.5.1. Podešavanje parametara .................................................. 21 2.5.2. Efekat sinergije................................................................ 23 2.5.3. Inicijalizacija mravljeg sistema ....................................... 23 2.5.4. Povećanje dimenzija problema ....................................... 24

2.6. Primer algoritma za problem trgovačkog putnika .................. 24 3. SPECIFIKACIJA MRAVLJEG SISTEMA .................................. 27

3.1. Analiza zahteva ...................................................................... 27 3.2. Specifičnosti mravljeg algoritma za problem mrežnog rutiranja u odnosu na problem trgovačkog putnika ..................................... 27 3.3. Funkcionisanje mravljeg sistema ........................................... 29

3.3.1. Inicijalizacija mravljeg sistema ....................................... 29 3.3.1.1. Struktura mreže ........................................................ 30 3.3.1.2. Parmetri mravljeg algoritma .................................... 30

3.3.2. Raspoređivanje mrava po čvorovima .............................. 33 3.3.3. Način rada mrava u sistemu ............................................ 34 3.3.4. Čuvanje rezulata rada algoritma...................................... 36 3.3.5. Ostali delovi .................................................................... 37

3.4. Osnovne funkcije sistema ...................................................... 39 3.5. Modeli sistema ....................................................................... 40

Page 6: Miljan Radovic - Diploma Work

iv

3.5.1. Slučajevi korišćenja – use case dijagrami ....................... 40 3.5.1.1. Inicijalizacija mravljeg sistema ................................ 41 3.5.1.2. Osnovne funkcije sistema ......................................... 42 3.5.1.3. Raspoređivanje mrava po čvorovima ....................... 43

3.5.2. Statički model sistema – dijagram klasa .......................... 43 3.5.3. Dinamički modeli sistema – dijagrami aktivnosti ........... 44

3.5.3.1. Mravlji sistem - AntSystem ...................................... 45 3.5.3.2. Inicijalizacija mravljeg sistema ................................ 45 3.5.3.3. Raspoređivanje mrava po čvorovima ....................... 46 3.5.3.4. Ponašanje mrava ....................................................... 47

4. IMPLEMENTACIJA SISTEMA................................................... 51 4.1. Razvojno okruženje ................................................................ 51 4.2. Delovi biblioteke .................................................................... 51 4.3. Povezivanje biblioteke sa programskim okruženjem ............. 52 4.4. Programsko okruženje ............................................................ 53

4.4.1. Glavni prozor ................................................................... 53 4.4.1.1. Glavni meni .............................................................. 54 4.4.1.2. Paleta sa alatkama ..................................................... 55 4.4.1.3. Bočna paleta sa alatkama .......................................... 56 4.4.1.4. Radna površina ......................................................... 58 4.4.1.5. Površina za ispis informacija .................................... 59 4.4.1.6. Statusna linija ............................................................ 59

4.4.2. Statistike .......................................................................... 60 4.4.2.1. Matrica prelaza ......................................................... 60 4.4.2.2. Mravi u sistemu ........................................................ 61 4.4.2.3. Tabele rutiranja i statistike saobraćaja ...................... 62

4.4.3. Podešavanja ..................................................................... 63 4.4.3.1. Podešavanja programskog okruženja ....................... 63 4.4.3.2. Podešavanja mravljeg sistema .................................. 64

4.5. Bitniji delovi programskog koda ............................................ 65 4.5.1. Ant ................................................................................... 65

4.5.1.1. Ant.run() ................................................................... 65 4.5.1.2. Ant.StepForward() .................................................... 65 4.5.1.3. Ant.StepBackward() ................................................. 67

4.5.2. AntNest ............................................................................ 68 4.5.2.1. AntNest.ChooseNextNode(...) .................................. 68 4.5.2.2. AntNest.getReinforcement() ..................................... 69 4.5.2.3. AntNest.UpdatePath(…) ........................................... 70

4.5.3. AntSystem........................................................................ 71 4.5.3.1. AntSystem.Pause(...) ................................................. 71 4.5.3.2. AntSystem.Reset() .................................................... 72 4.5.3.3. AntSystem.run() ........................................................ 72

Page 7: Miljan Radovic - Diploma Work

v

4.5.3.4. AntSystem.setNetwork(…) ...................................... 73 4.5.3.5. AntSystem.setParameters(…) .................................. 74 4.5.3.6. AntSystem.Start() ..................................................... 74 4.5.3.7. AntSystem.Stop() ..................................................... 74

4.5.4. LocalTrafficStatistics ...................................................... 75 4.5.4.1. LocalTrafficStatistics.Update(...) ............................. 75

4.5.5. RoutingTable ................................................................... 76 4.5.5.1. RoutingTable.Update(...).......................................... 76

5. ZAKLJUČAK ............................................................................... 79 6. PRILOG ........................................................................................ 81

6.1. Skraćenice .............................................................................. 81 6.2. Korišćeni alati ........................................................................ 82 6.3. Primeri primene mravljeg algoritma ...................................... 84

7. LITERATURA .............................................................................. 87 8. BIOGRAFIJA ............................................................................... 94

Page 8: Miljan Radovic - Diploma Work

vi

Page 9: Miljan Radovic - Diploma Work

vii

PREDGOVOR

Predmet ovoga rada je specificikacija i implementacija softverskog okruženja za praktičnu obuku studenata koje će omogućiti analizu procesa rutiranja na različitim mrežnim strukturama i za različite parametre mravljeg algortima. Rad se sastoji od četiri poglavlja, zaključka, priloga, spiska korišćenih referenci i biografije.

U prvom poglavlju definisani su osnovni pojmovi rutiranja i dat je kratak uvod u mravlje sisteme.

Drugo poglavlje počinje uvodnim razmatranjima metaheuristike algoritama baziranih na mravljim kolonijama, zatim sledi opis ponašanja pravih i veštačkih mrava kao i njihove međusobne razlike a nakon toga sledi predstavljanje mravljih algoritama, njihove bitne karakteristike i moguća proširenja.

U trećem poglavlju izvršena je specifikacija mravljeg sistema. Kao osnova korišćen je mravlji algoritam za problem trgovačkog putnika (TSP) i na njemu su izvršene modifikacije potrebne za primenu na problem rutiranja.

Četvrto poglavlje predstavlja prikaz implementacije realizovanog mravljeg sistema: predstavljeno je razvojno okruženje celog projekta, osnovni delovi programskog okruženja, način povezivanja sa drugim programima a zatim i sam izgled realizovanog rešenja. Na kraju, dat je opis najbitnijih delova programskog koda.

Ovom prilikom želeo bih da se zahvalim svima koji su mi pomogli da studije uspešno privedem kraju a posebno svojim roditeljima, ocu Branislavu i majci Verici, koji su pokazali mnogo strpljenja, razumevanja a pre svega odricanja tokom mojih studija. Novi Sad, 2007.

Miljan Radović

Page 10: Miljan Radovic - Diploma Work

viii

Equation Section (Next)

Page 11: Miljan Radovic - Diploma Work

1

1. UVOD Pod pojmom optimizacija, najgrublje rečeno, podrazumeva se traženje najboljeg rešenja među alternativnim rešenjima ili ekstremne vrednosti (kriterijumske) funkcije, odnosno vrednosti varijable za koju se dostiže ekstremum funkcije Postoje razne vrste optimizacija i većina ih se svodi na minimizaciju neke funkcije sistema. Danas postoji veliki broj optimizacionih metoda, što opštih što specijalizovanih, kojima se može vršiti optimizacija raznih vrsta sistema a mi ćemo ovde predstaviti jednu metodu opšte primene koja se naziva optimizacija kolonijom mrava (engl. Ant Colony Optimization - ACO) [7, 11]. Metoda će biti korišćena za rešavanje problema rutiranja.

1.1. Pojam, vrste i način rutiranja Uopšteno govoreći, rutiranje (trasiranje) predstavlja postupak upravljanja kretanjem objekta (bilo da je to paket, vozilo, avion,...) kroz neku vrstu mreže (internet, saobraćajnice, aerodromi,...) od starta do cilja. Pošto se rad bavi razmatranjem rutiranja u računarskim mrežema, tada možemo reći da mrežno rutiranje predstavlja biranje puteva unutar računarske mreže kroz koje će se slati podaci. Preciznije govoreći, mrežno rutiranje je prosleđivanje logički adresiranih paketa od početne prema krajnjoj tački kroz tzv. čvorove posrednike (obično su to hardverski uređaji zvani ruteri).

Proces rutiranja koristi metodu tzv. napredovanja (engl. forwarding) baziranu na tabelama rutiranja koje sadrže podatke o najboljim putevima do različitih odredišta unutar mreže, mada mogu sadržati i neke druge podatke. Prema tome, postojanje tabela rutiranja, koje se čuvaju u memorijama rutera, predstavlja vrlo bitnu stavku ukoliko želimo efikasno rutiranje.

U opštem slučaju, razlikujemo nekoliko vrsta rutiranja: • Anycast • Broadcast • Multicast • Unicast

U nastavku teksta biće ukratko predstavljeno svako od nabrojanih rutiranja a takođe će biti dat slikovit primer izgleda svakog od rutiranja. Napomenimo da će na slikama crvenim krugom biti predstavljen izvor podataka, zelenom bojom čvorovi kojima se šalju podaci a žutom bojom ostali čvorovi u mreži.

Anycast predstavlja šemu mrežnog adresiranja i rutiranja pomoću koje se podaci prenose od izvora do „najbližeg“ ili „najboljeg“ odredišta posmatrano sa stanovišta topologije rutiranja. Ovakvo rutiranje se obično koristi na internetu u cilju istovremenog objavljivanja iste odredišne IP adrese od velikog broja lokacija na internetu. Primer ovakvog rutiranja je prikazan na slici 1.1.

Page 12: Miljan Radovic - Diploma Work

2

Slika 1.1 Primer anycast rutiranja

Broadcast je rutiranje koje podrazumeva prenos paketa koji će biti primljen od strane svih uređaja u mreži. U praksi je opseg ovakvog rutiranja ograničen na područje emitovanja (broadcast domain). Broadcast najlakše možemo zamisliti kao emitovanje radio ili TV signala. Primer ovakvog rutiranja prikazan je na slici 1.2

Slika 1.2 Primer broadcast rutiranja

Multicast predstavlja istovremeno isporučivanje informacija grupi odredišta koristeći najefikasniju strategiju povezivanja sa odredištem isporučivanjem poruka preko svake veze u mreži i to samo jednom, kreirajući kopije poruka samo ukoliko se veze sa odredištem prekinu. Primer je dat na slici 1.3.

Slika 1.3 Primer multicast rutiranja

Unicast u računarskim mrežama predstavlja slanje paketa sa informacijama na tačno jedno odredište. Reč unicast je proistekla od reči broadcast u smislu da je unicast njena sušta suprotnost. Primer unicast rutiranja dat je na slici 1.4.

Page 13: Miljan Radovic - Diploma Work

3

Slika 1.4 Primer unicast rutiranja

Kao što smo ranije naveli, mehanizam mrežnog rutiranja podrazumeva da svaki čvor u mreži poseduje tabelu rutiranja u kojoj se nalaze podaci koje čvor „tumači“ pri odabiranju kuda dalje da prosledi pristigli objekat. Radi jasnijeg objašnjenja kako mehanizam rutiranja funkcioniše i kako izgledaju tabele rutiranja u realnim sistemima posmatraćemo mrežu na slici 1.5.

Slika 1.5 Primer jednostavne mreže sa 5 čvorova (rutera)

Na slici je dat primer mreže sa 5 čvorova (rutera) od kojih svaki poseduje sopstvenu tabelu rutiranja. Struktura tabele rutiranja zavisi od čvora čija je tabela kao i od toga kakvu vrstu podataka želimo da pamtimo unutar tabele rutiranja, što će biti naknadno objašnjeno. Uzmimo na primer čvor 2 i posmatrajmo jednu moguću varijantu tabele rutiranja koja je predstavljena na slici 1.6.

Slika 1.6 Primer tabele rutiranja za čvor 2

Kao što vidimo sa slike, tabela rutiranja je ustvari matrica čija prva vrsta sadrži identifikatore susednih čvorova (čvorovi 1, 3 i 4) a prva kolona identifikatore svih mogućih odredišnih čvorova tj. svih čvorova mreže osim posmatranog (čvorovi 1,3,4, i 5). Radi lakšeg

Page 14: Miljan Radovic - Diploma Work

4

prepoznavanja, ova vrsta i kolona su na slici obojene sivom bojom. Unutar tabele rutiranja nalaze se podaci koje čvor „tumači“ pri određivanju kuda da prosledi pristigli objekat. Ti podaci mogu predstavljati udaljenost, kašnjenje, vreme i sl. do nekog čvora kao i verovatnoću prelaska u susedni čvor ili bilo kakvu vrstu informacije koja se može iskoristiti pri rutiranju. Na slici 1.6 je dat primer gde podaci unutar tabele rutiranja predstavljaju verovatnoću prelaska u susedni čvor.

Tabele rutiranja ostalih čvorova posmatrane mreže su slične prikazanoj pri čemu im se dimenzije mogu razlikovati po broju kolona što zavisi od strukture mreže, tačnije od broja susednih čvorova za posmatrani čvor; pri tome je broj vrsta isti za sve tabele rutiranja jer je jednak broju čvorova u posmatranoj mreži, minus jedan (posmatrani čvor). Naravno, identifikatori u prvoj vrsti i prvoj koloni se takođe razlikuju za svaku tabelu rutiranja ponaosob.

Pomenuli smo da kada čvor primi paket on „zna“ kuda treba dalje da ga prosledi na osnovu tabele rutiranja. Poslužićemo se tabelom rutiranja sa slike 1.6 i pretpostaviti da neki paket iz čvora 2 treba da stigne do čvora 5. Čvoru je poznata informacija o tome da paket treba da bude prosleđen prema čvoru 5 i zato u prvoj koloni tabele rutiranja traži odredišni čvor sa identifikatorom 5. Pošto ga pronađe, u istoj vrsti među podacima traži najveću verovatnoću i pronalazi vrednost 0.912 (označenu zelenom bojom). Pošto je pronašao maksimalnu verovatnoću, „gleda“ kom susednom čvoru ta verovatnoća pripada (u preseku kolone sa maksimalnom verovatnoćom i prve vrste je identifikator čvora 3) i tako dolazi do podatka u koji susedni čvor treba da prosledi paket. Postupak se ponavlja dok god paket ne stigne do svog odredišta.

Iz svega izloženog vidimo da je za optimalno rutiranje potrebno da podaci unutar tabele rutiranja budu pravilno određeni. U današnje vreme postoje mnoge opšte i specijalizovane metode za rešavanje problema pravilnog određivanja tih podataka a tema ovog rada je korišćenje jedne opšte metode - mravljih algoritama.

1.2. Uvod u mravlje algoritme

1.2.1. Inspiracija Istraživanja o ponašanju mrava unutar kolonije su u velikoj meri inspirisala naučnike da proučavaju kako skoro slepe životinje uspevaju da pronađu najbliži put od gnezda (mravinjaka) do izvora hrane. Otkriveno je da je sredstvo koje koriste za međusobnu komunikaciju i za određivanje kojim putem da se kreću trag feromona. Krećući se, mrav na zemlji odlaže određenu količinu feromona (koja može da varira u zavisnosti od vrste mrava) i na taj način obeležava putanju kretanja. Mravi koji sledeći dođu do traga feromona mogu (ali i ne moraju) odlučiti da ga prate što, u velikoj

Page 15: Miljan Radovic - Diploma Work

5

meri, zavisi od jačine traga na koji naiđu. Jačina traga zavisi od toga koliko je mrava u bližoj prošlosti prošlo tuda jer trag vremenom isparava. Ukoliko odluči da ga prati mrav dodatno pojačava već postojeći trag, u suprotnom mrav traži alternativne putanje do hrane.

Takvo kolektivno ponašanje koje se ispoljava je oblik autokatalitičkog procesa gde što više mrava prati određeni trag, taj trag postaje primamljiviji i za ostale mrave koji će tek naići. Proces je prema tome okarakterisan kao pozitivna povratna sprega gde se verovatnoća sa kojom mrav bira putanju kretanja povećava sa brojem mrava koji su prethodno prošli tim putem. Inače, autokatalitički proces je, po definiciji, proces koji pojačava samog sebe, na takav način da uzrokuje rapidnu konvergenciju i, ukoliko nema mehanizma ograničenja, dovodi do tzv. „eksplozije“.

Deneuborgh i saradnici [19, 37] koristili su most sa dve grane koji je spajao gnezdo sa hranom da bi proučavali trag feromona koji je ostajao za mravima i pratili ponašanje mrava u kontrolisanim eksperimentalnim uslovima. U tom eksperimentu naučnici su koristili koloniju Argentinskih mrava (Iridomyrmex Humilis) koji ostavljaju trag feromona u oba smera (i u pravcu kretanja prema hrani i pri povratku u gnezdo). Izvršeno je mnoštvo eksperimenata u kojima je menjan kvalitet hrane i odnos dužina grana mosta ali za nas je najinteresantniji eksperiment u kojem je jedna grana mosta duža od druge. U ovom eksperimentu mravi su bili slobodni da sami biraju put do hrane a naučnici su posmatrali procenat mrava koji je birao određeni put u toku nekog vremenskog intervala. Rezultat je bio taj da, iako su u početku mravi nasumično birali put, u većini eksperimenata su na kraju svi mravi koristili kraći put.

Ovaj rezultat se može objasniti na sledeći način: kada ekperiment počne nema nikakvog traga feromona, dakle mravi nemaju nikakvu pretpostavku i nasumično biraju jednu od dve grane. Zato možemo očekivati da će na početku u proseku polovina mrava da krene jednom granom a druga polovina mrava drugom granom (mada je to slučajni proces i jedna grana može biti favorizovana u odnosu na drugu). Ipak, zbog činjenice da je jedna grana kraća od druge, mravi koji su izabrali kraći put prvi stižu do hrane i započinju povratak u gnezdo. Tada, kada moraju doneti odluku kojim će se putem vratiti u gnezdo, viši nivo feromona na kraćoj grani ih nagoni da krenu njom. Prema tome, feromon počinje brže da se akumulira na kraćoj grani što će na kraju dovesti do toga da će je koristiti većina mrava. Primer ovakvog kretanja kolonije mrava prikazan je i objašnjen u poglavlju 2.1.

Trebalo bi da je do sada jasno kako su pravi mravi inspirisali razvoj mravljih algoritama: most sa dve grane je zamenjen grafom a trag feromona veštačkim tragom feromona. Takođe, zbog toga što smo želeli da veštački mravi rešavaju mnogo složenije probleme nego što ih inače rešavaju pravi mravi, dodali smo veštačkim mravima neke dodatne sposobnosti kao što su memorija (koja se koristi za

Page 16: Miljan Radovic - Diploma Work

6

sprovođenje ograničenja kao i da omogući mravima da „zapamte“ put kojim su došli) kao i sposobnost postavljanja količine feromona proporcionalne kvalitetu pronađenog rešenja (slično ponašanje je primećeno i kod nekih vrsta pravih mrava gde se količina feromona koju ostavljaju za sobom vraćajući se u gnezdo meri u kvalitetu pronađene hrane [6]).

1.2.2. Istorijat 1991. godine Marco Dorigo je predložio prvi algoritam baziran na koloniji mrava: mravlji sistem (Ant System - AS) [24, 28, 29, 30]. Mravlji sistem je predstavljen na problemu trgovačkog putnika (Travelling Salesman Problem - TSP) [38, 50], sa maksimalno 75 gradova. U tim početnim fazama razvoja bilo je moguće dostići performanse ostalih heuristika opšte primene kao što je npr. evolutivno računarstvo (Evolutionary Computation - EC). Međutim, uprkos početnim ohrabrujućim rezultatima mravlji sistem nije bio konkurentan sa modernim algoritmima specijalne namene za TSP kada je veliki broj gradova u pitanju. I pored toga imao je važnu ulogu u podsticanju daljeg razvoja varijanti AS algoritma što je dovelo do toga da u kasnijim fazama razvoja isti algoritam dostigne mnogo bolje performanse pri rešavanju različitih vrsta optimizacionih problema. U stvari, danas se mravlji sistem u velikoj meri primenjuje na mnoge optimizacione probleme kao što su problem kvadratne dodele (Quadric Assignment Problem - QAP), vremensko planiranje poslova (Job-Shop Scheduling - JSP), mrežno rutiranje (Network Routing - NR), itd. [18, 21, 34, 35, 45, 57].

1.2.3. Razvoj Kao što smo već rekli, mravlji sistem je bio prvi primer algoritma baziran na koloniji mrava koji je predstavljen uopšte. Iako je predstavljen kao da je u pitanju jedan algoritam, mravlji sistem je u početku bio skup tri algoritma:

• tok mrava (Ant Cycle - AC) • gustina mrava (Ant Density - AD) • količina mrava (Ant Quantity - AQ).

Dok su u AD i AQ algoritmima mravi vršili izmene veštačkog traga feromona pri kretanju prema hrani, u AC algoritmu izmena feromona se vršila pri povratku u gnezdo nakon što mrav kompletira celu putanju kretanja tj. stigne do hrane i tada je količina feromona koja se ostavlja na čvorovima i vezama bila funkcija kvaliteta dobijenog rešenja. Zbog činjenice da je AC algoritam davao znatno bolje rezultate od druga dva algoritma, kasnije je on jednostavno prozvan mravlji sistem i upravo taj algoritam će biti detaljnije predstavljen u daljem izlaganju.

Primećeno je da su algoritmi bazirani na mravljim kolonijama koji su počeli da se razvijaju kasnije, iako su zadržavali neke osobine

Page 17: Miljan Radovic - Diploma Work

7

iz prirode, bivali sve manje inspirisani biološkim procesima a sve više inspirisani potrebama kreiranja algoritma koji je konkurentan ili čak bolji od tadašnjih modernih algoritama. I pored toga, mnoge osobine AS ostaju: potreba za kolonijom, automatsko ubrzavanje/usporavanje hemijskih procesa, indirektna kooperacija po veštačkom tragu feromona, rešenje koje se kreira primenom teorije verovatnoće pri čemu se posmatraju veštački trag feromona i lokalne heuristike, izmena feromona u odnosu na kvalitet rešenja, isparavanje traga feromona, itd. Sve navedene osobine postoje u svakom mravljem algoritmu. Interesantno je primetiti da postoji jedan dobro poznati algoritam koji, iako na neki način koristi prethodno opisani postupak, ne može biti posmatran kao primer ACO metaheuristike. To je HAS-QAP [36] u kojem se trag feromona ne koristi pri izgradnji rešenja već za izmenu kompletnog rešenja po principu lokalnog traženja. I pored toga, ovaj algoritam pripada mravljim algoritmima tj. novoj vrsti algoritama inspirisanih različitim vrstama insekata. Mravlji algoritmi postaju veoma popularni [8, 9, 11, 25] jer predstavljaju obećavajući pristup rešavanju optimizacionih problema.

1.2.4. Osnovne karakteristike Po analogiji sa primerom iz prirode mravlji algoritam je, dakle, baziran na indirektnoj komunikaciji pojedinačnih činilaca kolonije (mrava) koji međusobno komuniciraju preko deljenog medijuma (feromona). U samom algoritmu feromon predstavlja deljenu numeričku informaciju koju mravi koriste da dođu do što boljeg rešenja problema i koju prilagođavaju tokom izvršavanja algoritma u cilju daljeg poboljšanja kvaliteta rešenja. Ovim postupkom se prividno „poboljšava iskustvo“ mrava u traženju rešenja.

Glavne karakteristike ACO heuristike su dobar odziv, odvojeno računanje i korišćenje efikasne “pohlepne” (greedy) heuristike. Dobar odziv je zaslužan za brzo pronalaženje kvalitetnog rešenja, odvajanjem računanja se izbegava prerana konvergencija a greedy heuristika pomaže u pronalaženju prihvatljivog rešenja u ranim fazama procesa traženja.

Equation Section (Next)

Page 18: Miljan Radovic - Diploma Work

8

Page 19: Miljan Radovic - Diploma Work

9

2. OPIS MRAVLJIH SISTEMA U ovom poglavlju upoznaćemo se sa mravljim algoritmima tj. mravljim sistemom. Koristićemo dobro poznati TSP [3] kao primer u cilju lakšeg poređenja algoritma sa drugim heurističkim pristupima [4]. Takođe će biti opisan način funkcionisanja kolonija mrava pri traženju najbližeg puta do izvora hrane. Iako definicija modela zavisi od strukture problema, pokazaćemo da se isti pristup može iskoristiti u rešavanju različitih optimizacionih problema.

2.1. Ponašanje mrava Razmotrimo kao primer načina funkcionisanja pravih mrava eksperiment prikazan na slici 2.1. Pretpostavimo da postoji put kojim se mravi kreću od izvora hrane (A) do gnezda (E) i nazad. Zamislimo da se u nekom trenutku pojavi prepreka na putu, koji se time prekida, i tada u tački B mravi koji se kreću od tačke A do tačke E (ili u tački D oni koji se kreću suprotno) moraju da odluče da li da skrenu levo ili desno. Na odluku o izboru strane kojom će mravi krenuti utiče jačina traga feromona koji su na tom putu odložili mravi koji su tuda

Slika 2.1 Način kretanja pravih mrava u prirodi

ranije prošli. Prvi mrav koji stigne do tačke B (ili D) sa istom verovatnoćom bira da li da skrene levo ili desno jer nema feromona na novonastalim alternativnim putevima. Zbog činjenice da je put BCD kraći nego put BHD, prvi mrav koji prati taj put će stići do tačke D pre prvog mrava koji je izabrao put BHD. Rezultat toga je da taj mrav koji se vraća od E do D nailazi na jači trag feromona na putu DCB što je uzrokovano činjenicom da je, po zakonu verovatnoće, polovina mrava rešila da obiđe prepreku putem DCB i, pošto je taj

Page 20: Miljan Radovic - Diploma Work

10

put kraći, prošla istim putem unazad pre mrava koji su krenuli putem DHB, ostavljajući feromon po drugi put čime će se njegova jačina još više povećati. Upravo zbog toga će mravi koji budu kasnije prolazili davati prednost putu DCB nad DHB. Kao posledica toga, broj mrava koji se kreću putem BCD će vremenom postajati sve veći u odnosu na broj mrava koji se kreću BHD. Ova pojava uzrokuje veću koncentraciju feromona na kraćem putu u odnosu na duži put čime se verovatnoća kojom mrav bira kraći put povećeva. Konačan ishod je da će za relativno kratak vremenski period svi mravi birati kraći put.

Algoritmi koji će biti opisani u nastavku su modeli preuzeti iz analiza kolonija pravih mrava. Zbog toga ovakav sistem nazivamo mravlji sistem a algoritme mravlji algoritmi. Simulacija mravljih kolonija nam nije od nekog preteranog interesa ali primena veštačkih kolonija mrava kao alata za optimizaciju jeste s’ tim da u takvom sistemu imamo značajne razlike veštačkih u odnosu na prave mrave i to su:

• Postojanje memorije • Neće biti potpuno slepi • Živeće u okruženju gde je vreme diskretno

Posmatrajmo sliku 2.2 koja je moguća predstava mravljeg sistema sa slike 2.1b. Pretpostavimo da su razdaljine između D i H, između B i H i između B i D preko C jednake i iznose 1 i da se C nalazi na pola puta između D i B (slika 2.2a). Takođe ćemo uvesti sledeće pretpostavke:

• 30 mrava dolazi u B iz A i 30 mrava u D iz E u svakom vremenskom intervalu

• Svaki mrav se kreće brzinom 1 po jedinici vremena • Dok se kreće , mrav u jedinici vremena t odlaže na zemlju

feromon intenziteta 1 koji, da bi primer bio lakši, kompletno i potpuno isparava nakon vremenskog intervala (t+1, t+2).

Razmatraćemo šta se dešava u diskretnim vremenskim intervalima: t = 0, 1, 2, 3,... . U trenutku t=0, nema traga feromona i 30 mrava se nalazi u B i isto toliko mrava u D. Oni treba da odluče na koju stranu će krenuti (prema C ili prema H) i pošto nema traga feromona nihov izbor je sasvim slučajan. Zbog toga pretpostavljamo da će polovina mrava sa svakog čvora krenuti prema čvoru H a druga polovina prema čvoru C (slika 2.2b). U trenutku t=1, 30 mrava koji pristižu u B iz A nailaze na trag intenziteta 15 na putu koji vodi do H, koji je odložilo 15 mrava koji su prošli tim putem iz B, i na trag intenziteta 30 na putu do C što se dobija kao suma traga koji je ostavilo 15 mrava koji su prošli tim putem od B i od 15 mrava koji su pristigli u B od D preko C (slika 2.2c). Verovatnoća izbora jednog od puteva je zbog toga na strani puta koji ide preko C, tako da će očekivani broj mrava koji će ići tuda biti duplo veći od broja mrava koji će ići preko H: 20 protiv 10. Isto važi i za 30 mrava koji se nalaze u D a došli su iz E. Ovaj proces se nastavlja sve dok svi mravi ne izaberu kraći put.

Page 21: Miljan Radovic - Diploma Work

11

Slika 2.2 Funkcionisanje mravljeg algoritma

Ideja cele ove priče je da ako u nekoj tački mrav može da bira između dva puta bira onaj koji je češće biran od strane mrava koji su ranije prošli tim putem tj. put gde je nivo feromona viši, čime se verovatnoća izbora pomenutog puta povećava. Inače, po ACO poimanju, viši nivoi feromona su sinonim za kraću putanju.

2.2. ACO - Metaheuristika Veštački mravi koji se koriste u ACO su procedure stohastičkog rešavanja koje konstruišu rešenje iterativnim dodavanjem komponenti rešenja na parcijalno rešenje računajući sledeće:

• informacije nad instancom problema koji se rešava (ako su dostupne)

• (vestački) trag feromona koji se dinamički menja u toku računanja i odražava se na iskustvo agenata (mrava) u traženju rešenja ACO se tumači kao proširenje algoritma baziranog na

izgradnji rešenja iz nekoliko razloga. Stohastička komponenta u ACO dozvoljava mravima da izgrade širok spektar različitih rešenja i prema tome istražuju mnogo veći broj mogućih rešenja nego što to greedy heuristika dozvoljava. U isto vreme, korišćenje informacija iz heuristike vodi mrave ka najboljem rešenju. Pored toga, korišćenje kolonije mrava daje algoritmu veću robusnost i u mnogim primenama ACO potreban je zajednički uticaj cele populacije agenata (mrava) da bi se problem efikasno rešio.

Područje primene ACO algoritama je široko u smislu da se algoritam može primeniti nad velikim skupom problema diskretne optimizacije. U nastavku će biti definisana generička predstava problema koju mravi u ACO koriste za dobijanje rešenja a zatim će biti predstavljeno kako mravi poboljšavaju rešenje i na kraju definisana ACO metaheuristika.

Page 22: Miljan Radovic - Diploma Work

12

2.2.1. Predstavljanje problema Razmotrimo problem minimizacije ( , , )S f Ω gde je S skup mogućih rešenja, f funkcija cilja koja dodeljuje svakom kandidatu rešenja s S⊂ vrednost funkcije cilja ( , )f s t (parametar t nam ukazuje na to da funkcija cilja može biti vremenski zavisna i to su dinamički problemi) a Ω je skup ograničenja. Cilj je da se dođe do sveukupno optimalnog rešenja

opts S∈ a to je najbolje rešenje koje zadovoljava

ograničenja Ω . Predstava kombinatornog optimizacionog problema ( , , )S f Ω

koji treba da reše mravi može se specificirati na sledeći način: • Dat je konačan skup komponenti 1 2 , ,...,

CNC c c c=

• Stanja problema su definisana po kategorijama sekvenci , ,..., ,...

i j kx c c c= nad elementima skupa C. Skup svih mogućih sekvenci ćemo označiti sa χ . Dužinu sekvence x , koja predstavlja broj komponenti u sekvenci, označićemo sa x .

• Konačan skup ograničenja Ω definiše skup mogućih stanja χ% , gde je χ χ⊆% .

• Dat je skup mogućih rešenja *S , gde je *S χ⊆ % i *

S S⊆ . • Kvalitet rešenja ( , )f s t se dodeljuje svakom kandidatu za

rešenje s S∈ . • U nekim slučajevima kvalitet ili procena kvaliteta ( , )

iJ x t

može biti dodeljen stanjima umesto rešenjima. Ako j

x možemo dobiti dodavanjem komponente rešenja na stanje

ix

tada je ( , ) ( , )i j

J x t J x t≤ . Primetimo da je ( , ) ( , )J s t f s t≡ . Na osnovu prikazanog postupka, veštački mravi konstruišu

rešenja krećući se po grafu ( , )G C L= , gde su čvorovi komponente skupa C a skup L potpuno povezuje komponente C (elementi skupa L se nazivaju veze). Ograničenja problema Ω se dobijaju u toku konstruisanja rešenja, što će biti objašnjeno kasnije. Izbor načina implementacije ograničenja dozvoljava veštačkim mravima određen nivo fleksibilnosti. Ukoliko se odlučimo za implementaciju ograničenja koja su „kruta“ tada je potrebno više napora za njihovu implementaciju ali su zato moguća rešenja koja mrav pronalazi optimalna. Nasuprot takvoj vrsti implementacije ograničenja možemo se odlučiti za fleksibilniju varijantu implementacije ograničenja i tada mravi mogu konstruisati i nedozvoljena rešenja (tj. kandidate za resenje *\S S ) ali takva rešenja, u principu, mogu ali i ne moraju biti optimalna, čak šta više mogu varirati od vrlo dobrih do vrlo loših rešenja. Primer lošeg rešenja kada mrav dva ili više puta prođe kroz isti čvor mreže.

2.2.2. Ponašanje veštačkih mrava Mrave možemo predstaviti kao stohastičke procedure za dobijanje rešenja koje kreiraju rešenje krećući se po grafu ( , )G C L= . Mravi se

Page 23: Miljan Radovic - Diploma Work

13

po grafu G ne kreću proizvoljno, već po pravilu koje je funkcija ograničenja problema Ω . U principu, mravi pokušavaju da konstruišu dozvoljeno rešenje ali, ako je to neophodno, mogu da konstruišu i nedozvoljeno rešenje definisano ograničenjima. Ω . Komponente

ic C∈ i veze

ijl L∈ mogu imati dodeljen trag feromona

τ (i

τ ako je dodeljen čvoru a ij

τ ako je dodeljen vezi) čije se vrednosti pamte u memoriji tokom celog procesa konstrukcije rešenja. Mravi menjaju te vrednosti traga tokom izvršavanja algoritma a takođe menjaju i heurističku vrednost η (

iη tj.

ijη ) koja

prvenstveno predstavlja informaciju o definiciji instance problema ili informaciju koja se dobija u toku izgradnje rešenja a ne potiče od mrava. U mnogim slučajevima η je kvalitet ili procena kvaliteta tekućeg stanja. Ove vrednosti koriste mravi u donošenju odluka pri kretanju po grafu. Ssvaki mrav k koji pripada koloniji kreće se po grafu G=(C,L) (gde su

ic C∈ i

ijl L∈ definisani kao u poglavlju

2.2.1) i ima sledeće osobine: • Istražuje graf ( , )G C L= radi pronaženja mogućih rešenja s

najboljeg kvaliteta. Drugim rečima, rešenja s tako da je ˆ min ( , )s s

f f s t= • Poseduje memoriju kM koju koristi za smeštanje informacija

o putu kojim je prošao. Memoriju još može koristiti i da: o Kreira moguća rešenja odnosno postavlja

ograničenja Ω o Oceni konstruisano rešenje o Vraća se istim putem unazad radi ažuriranja

količine traga feromona na svom putu • Postavlja početno stanje k

sx i jedan ili više uslova k

e . Obično je početno stanje izraženo ili sekvencom dužina jedinki (to je sekvenca pojedinačnih komponenti), ili praznom sekvencom

• Kada je u stanju 1,r rx x i−= i ako uslov završetka nije zadovoljen, pomera se na čvor j u svojoj okolini k

iN tj. u

stanje ,rx j X∈ . Često su kretanja po mogućim rešenjima računaju ili preko definisanih vrednosti heuristike η ili korišćenjem memorije mrava

• Pomeranje se vrši primenom pravila verovatnoće. Pravilo verovatnoće kod mrava je funkcija:

o Lokalnog traga feromona i vrednosti heuristike o Memorije mrava u kojoj se čuva istorija pređenog

puta o Ograničenja problema

• Procedura kreiranja rešenja kod mrava k se zaustavlja kada je zadovoljen barem jedan od uslova završetka k

e • Kada se dodaje komponenta rešenja

jc na trenutno rešenje ona

može izmeniti trag feromona dodeljen njemu ili odgovarajućoj vezi. To se zove direktna izmena feromona korak-po-korak

Page 24: Miljan Radovic - Diploma Work

14

• Jednom kada je rešenje konstruisano, mrav prelazi put unazad radi izmene traga feromona korišćenih komponenti ili konekcija. To se zove direktna izmena feromona sa kašnjenjem Važno je primetiti da se mravi kreću simultano i nezavisno

jedan od drugog i da je svaki mrav dovoljno složen da sam dođe do (verovatno ne optimalnog) rešenja problema koji se razmatra. Tipično se kvalitetno rešenje dobija kao rezultat međusobnog uticaja mrava. Mravi vrše uticaj jedan na drugog indirektnom komunikacijom koja se postiže informacijama koje mravi čitaju/pišu u promenljive koje čuvaju vrednosti traga feromona. Ovo je, dakle, deljeni proces učenja u kojem pojedinačni agenti, tj. mravi, nisu sami za sebe prilagodljivi već nasuprot, oni prilagodljivo menjaju način na koji je problem predstavljen tako što primenjuju znanja ostalih mrava.

2.2.3. Primena stečenog znanja - metaheuristika Ponašanje mrava u ACO algoritmu može biti predstavljeno na sledeći način: kolonija mrava se istovremeno i asinhrono pomera po grafu problema gradeći puteve rešenja G. Mravi se kreću primenjujući stohastički lokalni način odlučivanja koji se bazira na tragu feromona i informacijama o heuristici. Jednom kada mrav konstruiše rešenje ili dok je rešenje u fazi konstrukcije (što zavisi od vrste algoritma koji se primenjuje) mrav vrednuje (parcijalno) rešenje i ostavlja trag feromona na komponenti ili vezi koju koristi. Ova informacija će neposredno uticati na način traženja rešenja mrava koji će sledeći proći tom vezom.

Pored kreiranja novih mrava, koje se vrši u definisanim vremenskim intervalima, i kontrole rada već kreiranih mrava tj. provera da li je neki mrav u sistemu prekoračio ograničenja Ω , ACO algoritam obavlja još dve vrlo bitne procedure:

• Isparavanje traga feromona • Pokretanje samostartujućih akcija (opciona komponenta)

Isparavanje feromona je proces pomoću koga se postiže smanjivanje intenziteta traga feromona tokom vremena, slično kao i u prirodi. Sa praktičnog gledišta, isparavanje feromona je potrebno da bi se izbegla isuviše brza konvergencija algoritma prema nekom regionu koji čak i ne mora biti optimalan. Na taj način se sprovodi korisna metoda „zaboravljanja“, koja pomaže otkrivanju šireg spektra rešenja čime se povećava verovatnoća pronaska optimalnog.

Samostartujuće akcije se koriste za implementaciju postupaka koje ne može inicirati pojedinačni agent (mrav). Primeri za to su aktiviranje procedure za lokalnu optimizaciju ili skup opštih informacija koje se mogu koristiti pri odlučivanju da li je korisno ili ne dodavanje dodatnog traga feromona da bi se traženje pomerilo iz lokalnog maksimuma. Kao praktičan primer samostartujuće akcije mogu se posmatrati putanje koje prelazi svaki pojedinačni mrav iz

Page 25: Miljan Radovic - Diploma Work

15

kolonije i odlučivati da li da se doda feromon na komponente koje koristi mrav koji konstruiše najbolje rešenje. Izmene traga feromona koje se vrše na ovaj način zovu se nezavisne izmene feromona.

Sledeći pseudo-kod opisuje ACO metaheuristiku. procedura ACO metaheuristika

RasporedAktivnosti

UpravljanjeAktivnostimaMrava()

IsparavanjeFeromona()

SamostartujućeAkcije() Opciono kraj RasporedAktivnosti

kraj ACO metaheuristika

ACO metaheuristika upravlja vremenskim planiranjem tri prethodno opisane komponente ACO algoritma preko konstrukcije RasporedAktivnosti a to su:

• Upravljanje aktivnostima mrava • Isparavanje feromona • Samopokretajuće akcije

Konstrukcija RasporedAktivnosti ne opisuje kako su ove tri aktivnosti vremenski isplanirane i sinhronizovane. Drugim rečima, ne kaže se da li one trebaju biti izvršene nezavisno jedna od druge ili je pak potrebna neka sinhronizacija među njima. Projektant je zato slobodan da speceficira način na koji će ove tri akivnosti međusobno komunicirati.

2.3. Mravlji Sistem Za lakše razumevanje rada mravljeg sistema koristićemo primer problema trgovačkog putnika. Ako imamo skup od n gradova, TSP se može definisati kao problem pronalaženja minimalne dužine zatvorenog puta koji povezuje sve gradove tako da se kroz svaki grad prođe isključivo jedanput.

ijd nazivamo dužina puta između gradova

i i j; u slučaju Euklidovog TSP, ij

d predstavlja Euklidsku dužinu puta između gradova i i j:

( ) ( )1/ 22 2

ij i j i jd x x y y = − + −

(2.1)

Primer TSP je dat grafom (N,E) gde je N skup gradova a E skup veza između gradova što predstavlja potpuno povezan graf u Euklidovom TSP. Neka je ( )( 1,..., )

ib t i n= broj mrava u gradu i u

trenutku t i neka je 1 ( )=∑= ni i

m b t ukupan broj mrava. Svaki mrav je jednostavan agent sa sledećim karakteristikama:

• Bira grad u koji će preći sa verovatnoćom koja je funkcija udaljenosti grada i količine traga feromona koji se nalazi na putu (vezi) do tog grada

Page 26: Miljan Radovic - Diploma Work

16

• Da bi se mrav ograničio da bira ispravan put, prolazak kroz već posećene gradove je zabranjen dok se put ne kompletira (ovo se kontroliše listom zabrane/ograničenja)

• Kada se put kompletira, ostavlja supstancu zvanu trag feromona na svakoj vezi između gradova kroz koje je prošao Neka je ( )

ijtτ jačina traga na vezi (i,j) u vremenu t. Svaki

mrav u trenutku t bira sledeći grad u kojem će biti u trenutku t+1. Zato, ako iteracijom AS agoritma nazovemo m pomeranja od strane m mrava u intervalu (t, t+1), onda svakih n iteracija algoritma (što nazivamo ciklus) svaki mrav kompletira svoj put. U ovom trenutku jačina traga menja se po sledećoj formuli:

( ) ( )ij ij ij

t n tτ ρ τ τ+ = ⋅ + ∆ (2.2)

gde je ρ koeficijent takav da (1 )ρ− predstavlja isparavanje traga između dva vremenska intervala t i t+n. Ovde je

1

mk

ij ij

k

τ τ=

∆ = ∆∑ (2.3)

gde je ij

τ∆ količina traga po jedinici dužine (feromon kod pravih mrava) koja se nalazi na vezi između gradova (i,j) a koju je odložio k-ti mrav između vremena t i t+n i jednak je:

/

0kk

ij

Q Lτ

∆ =

( , )ako k ti mrav koristi put i j

inače

− (2.4)

gde je Q konstanta a k

L dužina puta k-tog mrava. Koeficijent ρ mora biti postavljen na vrednost manju od 1 da bi se izbegla neograničena akumulacija traga. U eksperimentima se jačina traga u početnom trenutku 0, (0)

ijτ , postavlja na malu pozitivnu konstantnu

vrednost c. Da bi se zadovoljio uslov da mrav poseti svih n različitih

gradova, svakom mravu se dodeljuje struktura podataka zvana lista zabrana u kojoj se pamte gradovi koji su posećeni do vremena t i koja sprečava mrava da poseti isti grad ponovo pre n iteracija tj. celog ciklusa odnosno kompletiranog puta. Kada se put kompletira, lista zabrana se koristi za računanje kvaliteta rešenja (u našem slučaju razdaljine koju je mrav prešao). Lista zabrana se tada briše i mrav je slobodan da ponovo počne traženje rešenja.

Definisaćemo ktabu kao vektor koji se dinamički povećava i koji sadrži listu zabrana k-tog mrava,

ktabu kao skup kojeg čine

elementi ktabu i ( )sktabu kao s-ti element liste (npr. s-ti posećeni grad od strane k-tog mrava na tekućem putu). Količinu 1/

ijd zovemo

vidljivost ij

η . Ova količina se ne menja tokom izvršavanja AS za razliku od traga koji se menja po formuli (2.2).

Verovatnoću prelaska iz grada i u grad j za k-tog mrava definišemo kao:

Page 27: Miljan Radovic - Diploma Work

17

[ ] [ ]

( )

( )( )

0k

ij ij

kk

ik ikijk dozvoljeni

tako j dozvoljeni

tp t

inače

α β

α β

τ η

τ η∈

⋅ ∈ ⋅=

∑ (2.5)

gde je k kdozvoljeni N tabu= − a parametri α i β kontrolišu relativan značaj tragova u odnosu na vidljivost. Zbog toga je promena verovatnoće balans između vidljivosti koja nam govori da bi bliži gradovi trebali biti izabrani sa većom verovatnoćom, čime se sprovodi greedy heuristika, i jačine traga feromona u trenutku t koja govori da ako je na vezi (i,j) bilo puno saobraćaja tj. puno mrava je prošlo tom vezom, onda je ta veza poželjnija, čime se dobija autokatalitički proces.

2.3.1. Karakteristike mravljeg sistema Mravlji sistem se može primeniti na dve različite klase problema: statičke i dinamičke. Statički problemi su oni kod kojih se struktura grafa G, koji je ranije definisan, ne menja u toku izvršavanja algoritma. Primer ovakvog problema je TSP u kojem se pozicije gradova a time i njihova međusobna udaljenost ne menjaju. Nasuprot statičkim postoje dinamički problemi kod kojih se graf problema može menjati tokom izvršavanja algoritma. Primer ovakvog problema je mrežno rutiranje, gde čvorovi (ruteri) mogu nastajati i nestajati, može im se menjati propusni opseg, veze među ruterima mogu takođe nastajati i nestajati itd.

Bitne osobine mravljeg sistema su: • Svestranost, u tome da može biti primenjen na slične verzije

istog problema, npr. u slučaju TSP i ATSP jasno se uočava da je ATSP proširenje TSP.

• Robusnost, u smislu da se može, sa minimalnom izmenom, primeniti na različite optimizacione probleme kao što su QAP ili JSP.

• Pristup baziran na „naseljevanju“, interesantan u smislu da dozvoljava iskorišćenje dobrog odziva kao mehanizma traženja. Takođe dopušta sistemu paralelno izvršavanje.

Ove željene osobine algoritma protivreče jedna drugoj što znači da za neke primene mravlji sistem može biti lošiji po performansama od nekih specijalizovanih algoritama. Ovo je problem koji se uočava i kod drugih savremenih algoritama opšte namene kao što su npr. simulated annealing ili tabu search.

2.4. Proširenja mravljeg sistema Kao što je već rečeno, u prvim fazama razvoja mravlji sistem nije bio konkurentan sa tadašnjim specijalizovanim algoritmima. Iz tog

Page 28: Miljan Radovic - Diploma Work

18

razloga su započeta istraživanja u cilju poboljšanja performansi mravljeg algoritma a njihov rezultat je nekoliko poboljšanja od kojih su najbitnija sledeća:

• Strategija elite • verzija AS bazirana na rangiranju • MIN MAX− mravlji sistem (MMAS) • Sistem mravlje kolonije (Ant Colony System - ACS)

2.4.1. Strategija elite Prvo poboljšanje mravljeg sistema koje je predstavljeno zvalo se strategija elite [24, 30]. Termin strategija elite, koji na neki način podseća na strategiju elite koja se koristi u genetskim algoritmima [2], koristimo za izmenjeni algoritam kod kojeg se u svakom koraku trag koji je odložen na vezama koje pripadaju najboljem putu zvanom

gbT , gde gb predstavlja opšte najbolje (global best) do tog trenutka dodatno pojačava. U praksi, svaki put kada se vrši izmena traga feromona, onaj trag koji pripada stranicama opšteg najboljeg rešenja dobija dodatnu količinu feromona i u takvom mravljem sistemu jednačina (2.4) postaje:

/ ( )

( )0

gb

gb

ij

e L ttτ

∆ =

( , ) gbako kriva i j T

inače

∈ (2.6)

Krive koje pripadaju gbT su zbog toga pojačane sa količinom feromona 1/ gb

e L⋅ , gde je gbL duzina gbT a e je pozitivan ceo broj. Ideja je da trag najboljeg puta, tako pojačanog, utiče na ostale mrave da traže rešenje koje će sadržati neke od tih veza.

Testiranjem mravljih sistema koji koriste strategiju elite [63], nad problemom zvanim Oliver30, gde je test zaustavljen nakon

2500MAX

NC = koraka, došlo se do rezultata koji su pokazali da postoji optimalna oblast za broj elitnih mrava: ako ih je manje, povećanje broja elitnih mrava dovodi do pronalaženja boljih putanja i/ili do najboljih putanja otkrivenih ranije; ako ih je više, oni forsiraju istraživanje u blizini neoptimalnih putanja iz rane faze traženja što se rezultuje u smanjenju preformansi. Slika 2.3 prikazuje rezultate testa Oliver30 problema gde se jasno vidi gore navedeno [63].

Osvrnimo se za trenutak na pseudo-kod ACO metaheuristike sa strane 15. Pošto je strategija elite procedura koja se može pokrenuti u bilo kom trenutku tj. u trenutku koji je projektant mravljeg sistema definisao na neki način a u isto vreme ne spada ni u proceduru za upravljanje aktivnostima mrava kao ni u proceduru za isparavanje feromona, primetimo da je ovo prvi primer samopokretajuće akcije koji smo predstavili do sada.

Page 29: Miljan Radovic - Diploma Work

19

Slika 2.3 Broj ciklusa pojedinačnog mrava potreban da bi se dostigao lokalni optimum u zavisnosti od broja elitnih mrava

(nad Oliver30 problemom)

2.4.2. Rangiranje Mravlji sistem baziran na rangiranju (

rankAS ) [14] je u suštini

proširenje strategije elite na način da se mravi sortiraju u odnosu na dužine putanja koje su konstruisali odn. kvaliteta rešenja, i nakon svake faze konstrukcije puta samo ( 1)ω − najboljih mrava i mrav koji je konstruisao opšte najbolje rešenje mogu da polože feromon. r-ti najbolji mrav iz kolonije doprinosi izmeni količine feromona težinom

max 0, rω − , dok mrav koji je konstrisao opšte najbolje rešenje doprinosi feromonom tezine ω . Tada količina feromona koja se polaže po vezama iznosi:

1

1

( 1) (1 ) ( ) ( ) ( ) ( )r gb

ij ij ij ij

r

t t r t tω

τ ρ τ ω τ ω τ−

=

+ = − ⋅ + − ⋅ ∆ + ⋅ ∆∑ (2.7)

gde su ( ) 1/ ( )r r

ij t L tτ∆ = i ( ) 1/ ( )gb gb

ij t L tτ∆ = .

2.4.3. Sistem mravlje kolonije Sistem mravlje kolonije [26, 27, 32] je poboljšanje u odnosu na mravlji sistem u tome što povećava iskorišćenje informacija koje su prikupljene od strane mrava koji su ranije prošli nekom vezom tj. putanjom. Ovo se postiže preko dva mehanizma:

• Za izmenu traga feromona koristi se jaka strategija elite • Mravi biraju grad u koji će preći koristeći tzv. pseudo-slučajno

proporcionalno pravilo [27]: sa verovatnoćom 0q mrav se kreće do grada j za koji je proizvod traga feromona i informacije o heuristici maksimalan, tj.

arg max ( )ki

ij ijj Nj t

βτ η∈

= ⋅ , dok sa verovatnoćom 01 q− vrše

Page 30: Miljan Radovic - Diploma Work

20

pristrasno istraživanje gde je verovatnoća ( )k

ijp t ista kao i kod mravljeg sistema (videti formulu (2.8)) pri čemu je vrednost ρ u opsegu 0 1ρ< ≤ . Vrednost 0q je parametar takav da što je vrednost bliža vrednost 1, kao što je to slučaj u većini ACS algoritama, iskorišćenje starih puteva biva važnija od istraživanja novih. Jasno je da kada je 0 0q = pravilo odlučivanja postaje isto kao i u AS.

[ ] [ ]

( ) .( )

( ) .ki

ij ijk

ij

il ill N

tp t

t

α β

α β

τ η

τ η∈

=∑

ako k

ij N∈ (2.8)

gde je: 0 1ρ< ≤ . Kod ovakvog sistema izmena feromona se vrši koristeći jaku

strategiju elite: samo mrav koji je konstruisao najbolje rešenje ima pravo da menja trag feromona prema pravilu o izmeni traga feromona koje je slično kao i ono iz mravljeg sistema:

( 1) (1 ) ( ) ( )best

ij ij ijt t tτ ρ τ ρ τ+ = − ⋅ + ⋅∆ (2.9)

Najbolji mrav može biti najbolji mrav u iteraciji tj. mrav koji je konstruisao najbolje rešenje u jednoj iteraciji ili opšti najbolji mrav tj. mrav koji je konstruisao najbolje rešenje od početka procesa traženja.

Na kraju recimo i to da se ACS razlikuje od prethodnih ACO algoritama u tome što mravi menjaju trag feromona u toku konstrukcije rešenje tj. u toku traženja puta do hrane kao što je to bio slučaj u ant density i ant quantity algoritmima (videti poglavlje 1.2.3). U praksi, ACS mravi “jedu” jedan deo feromona sa puta kojim prolaze. Ovo ima efekat snižavanja verovatnoće puta koji koriste svi mravi čime se favorizuje istraživanje novih puteva što je suprotno od prethodna dva proširenja koja snažno favorizuju iskorišćenje prikupljenog znanja o problemu. U ACS algoritmu možemo takođe primetiti dodatak rutina za lokalno traženje koje pronalaze lokalni optimum rešenja pre izmene feromona.

2.4.4. MMAS MMAS [56, 58, 59] predstavlja gornju i donju granicu vrednosti traga feromona kao i različitu inicijalizaciju njegove vrednosti. U praksi, u MMAS dozvoljeni opseg jačine traga feromona je ograničen na interval [ ]min max,τ τ , tj. min maxij

τ τ τ≤ ≤ ij

τ∀ a tragovi feromona su postavljeni na gornju granicu što dovodi do toga da se na početku izvršavanja algoritma više radi istraživanje puteva. Takođe, kao i u ACS, u MMAS samo najbolji mrav, bilo da je reč o globalno ili o iterativno najboljem mravu, ima mogućnost da dodaje feromon nakon svake iteracije algoritma. Rezultati dobijeni ispitivanjem pokazuju da se najbolji rezultati dobijaju kada feromon menja globalno najbolji

Page 31: Miljan Radovic - Diploma Work

21

mrav. Slično ACS-u, MMAS takođe koristi lokalno traženje da bi poboljšao performanse.

2.5. Efikasnost algoritma U nastavku teksta biće razmatrane bitne karakteristike algoritma koje mogu znatno uticati na njegov rad. Analiza se bavi kako mogućim unapređenjima samog algoritma tako i ispitivanjima o načinu inicijalizacije samog sistema pre početka rada i uticaju dimenzija problema na algoritam. Napomenimo još jednom da su rezultati ekperimenata preuzeti iz literature [63].

2.5.1. Podešavanje parametara Do sada su predstavljena tri mravlja algoritma (ant cycle, ant density i ant quantity tj. AC, AD i AQ, iz poglavlja 1.2.3) baziranih na mravljim sistemima i navedene njihove dobre i loše osobine. Primetimo da većina formula kojima se opisuju algoritmi sadrži i neke parametre koje je moguće podesiti pri proračunavanju unutar algoritma. Pošto naučnici još uvek nisu razvili matematičke analize ovih modela koji bi nam dali optimalne vrednosti parametara za svaki problem koji algoritam treba da reši, moralo se pribeći simulacijama algoritma nad specifičnim problemima radi prikupljanja statističkih podataka.

Obično se razmatraju parametri koji direktno ili indirektno utiču na računanje verovatnoće u formuli (2.5) a to su:

• α - relativni značaj traga, 0α ≥ • β - relativni značaj vidljivosti, 0β ≥ • ρ - postojanost traga, 0 1≤ ρ ≤ , (1− ρ se može interpretirati

kao isparavanje traga) • Q - konstanta koja je povezana sa količinom traga koju su

mravi odložili i zavisi od primenjenog algoritma Testiranja parametara se obično vrše tako što se postavi da je

broj mrava jednak broju komponenti grafa (G=(C,L), videti poglavlje 2.2) i zatim počinje skup testiranja u kojima jedan parametar menja nekoliko različitih vrednosti dok su ostali konstante. Nakon toga se dobijeni rezultati upoređuju i na osnovu toga se zaključuje kako treba podesiti parametre za taj posmatrani graf.

Sprovedena testiranja nad problemom trgovačkog putnika (TSP) su pokazala da mravlji sistem dolazi do dobrog rešenja već u ranim fazama izvršavanja. Takođe, standardno odstupanje dužina puta nikada ne pada na nulu što znači da algoritam aktivno traži nova, eventualno bolja, rešenja što se moglo zaključiti i iz testa koji je pratio prosečno grananje čvorova koje je uvek bilo veće od 2. Grananje čvora predstavlja broj veza koje prolaze kroz posmatrani čvor i ukoliko je jednak 2 znači da samo jedan jedini put, koji jednom vezom ulazi a drugom izlazi iz čvora, prolazi kroz njega. Ovakva situacija se naziva stagnacija tj. situacija kad algoritam prestaje sa

Page 32: Miljan Radovic - Diploma Work

22

traženjem alternativnih putanja. Da se ovakva situacija ne bi desila, potrebno je odrediti opseg parametara unutar kojeg se dobijaju dobra rešenja kao što je prikazano na slici 2.4.

Slika 2.4 Primer dobijenih rešenja za razne kombinacije

parametara α i β

Dobijeni rezultati se obično grupišu u tri klase: • Loše rešenje i stagnacija. Za velike vrednosti α algoritam

ulazi u stagnaciju veoma brzo a da ne pronađe dobro rešenje. Ovakva situacija je predstavljena simbolom prekriženog O

• Loše rešenje bez stagnacije. Ako nije dato dovoljno važnosti tragu feromona tj. α je postavljeno na malu vrednost, tada algoritam ne nalazi dovoljno dobra rešenja. Ova situacija je predstavljena simbolom ∞

• Dobra rešenja. Veoma dobra rešenja se dobijaju za vrednosti α i β u centralnoj oblasti gde se nalazi simbol • Rezultati koji su dobijeni u ovim eksperimentima se poklapaju

sa našim shvatanjem algoritma: velika vrednost α označava da je trag veoma važan i zbog toga mravi teže da izaberu veze koje su ranije birane od strane drugih mrava. S druge strane, male vrednosti α čine algoritam vrlo sličan stohastičkom pohlepnom algoritmu.

Primer funkcionisanja mravljeg algoritma je prikazan na slici 2.5 gde je algoritam primenjen na jednostavan problem 10 gradova (CCA0, iz [3]) i gde se opisuje uticaj traženja na raspodelu traga feromona. Dužina veza je proporcionalna njihovom nivou traga. Na početku, (slika 2.5a) trag je ujednačeno raspoređen po svakoj vezi i na traženje utiče samo vidljivost čvorova. Kasnije, tokom procesa traženja (slika 2.5b) nova količina traga se odlaže na vezama koje proizvode kvalitetna rešenja a na vezama gde rešenja nisu kvalitetna trag potpuno isparava. Veze koje proizvode loša rešenja se uklanjaju iz grafa čime se prostor traženja smanjuje.

Page 33: Miljan Radovic - Diploma Work

23

Slika 2.5 Razvoj raspodele traga feromona za CCA0 problem.

(a)Raspodela traga na početku traženja. (b)Raspodela traga nakon 100 ciklusa algoritma

2.5.2. Efekat sinergije Pojam sinergija predstavlja združenu radnju dva ili više agenta koji proizvode rešenje koje je kvalitetnije od rešenja koje bi dobili svaki pojedinačno. Dalja testiranja mravljeg algoritma su rađena u cilju ocenjivanja važnosti komunikacije među agentima tokom traženja puta kao i uticaja broja mrava koji se koriste u algoritmu na efikasnost procesa traženja.

Rezutati eksperimenata su pokazali da postoji efekat sinergije ako se koristi više agenata i ako se koristi mehanizam komunikacije preko traga feromona tj. algoritam je efikasniji u pogledu traženja ako postoji međusobna komunikacija agenata. U slučaju mrava koji komuniciraju, postoji “tačka optimalnosti” data sa m n≈ , u kojoj efekat sinergije dostiže maksimum, gde n predstavlja broj komponenti grafa (čvorova) a m broj mrava.

2.5.3. Inicijalizacija mravljeg sistema Naredni eksperiment je vršen u cilju utvrđivanja da li raspodela mrava po komponentama grafa (čvorovima) na početku izvršavanja algoritma utiče na performanse mravljeg sistema. Vršeni su testovi u situaciji kada su u početnom trenutku t=0 svi mravi u istom gradu i u situaciji kada su mravi uniformno raspoređeni. Kažemo da su mravi uniformno raspoređeni ako se u trenutku t=0 u svakom gradu nalazi isti broj mrava što znači da m mora biti sadržalac n.

Testiranje je vršeno sa različitim vrstama grafova i u svim slučajevima ako su mravi bili uniformno raspoređeni po gradovima (čvorovima) dobijali su se bolji rezultati. Takođe je testirano da li je nasumična početna raspodela mrava po gradovima bolja od uniformne; rezultati su pokazali da nema značajnijih razlika između ova dva izbora mada je nasumična raspodela davala neznatno bolje rezultate.

Page 34: Miljan Radovic - Diploma Work

24

2.5.4. Povećanje dimenzija problema Mravlji sistem se može primeniti na grafove sa različitim brojem komponenti i njihovih međusobnih veza što znači da grafovi mogu varirati od vrlo jednostavnih do izuzetno složenih. Međutim, složenost algoritma nam ne govori ništa o tome koliko je vremena potrebno da bi se dostigao optimum. Eksperiment koji je vršen je izveden sa ciljem da se razmotri efektivnost algoritma kada se dimenzija problema povećava. Jedan primer rezulata testiranja problema mreža različitih dimenzija je prikazan u tabeli 2.1.

Problem n

(dimenzija) Najbolje rešenje

Prosečan broj koraka za nalaženje optimuma

Vreme potrebno da se pronađe

optimum (sekundi)

4x4 16 160 5.6 8 5x5 25 254.1 13.6 75 6x6 36 360 60 1020 7x7 49 494.1 320 13440 8x8 64 640 970 97000

Tabela 2.1 Vreme potrebno za pronalaženje optimuma u zavisnosti od dimenzija problema

2.6. Primer algoritma za problem trgovačkog putnika

U početnom trenutku izvršavanja algoritma vrši se faza inicijalizacije tokom koje se mravi pozicioniraju u različite gradove i postavlja se početna vrednost jačine traga (0)

ijτ na vezama između gradova. Prvi

element u listi zabrana svakog mrava sadrži grad iz kojeg mrav počinje traženje rešenja. Zatim se svaki mrav kreće iz grada i u grad j birajući grad koji će sledeći posetiti sa verovatnoćom koja je funkcija dva željena kriterijuma, sa parametrima α i β , kao u formuli (2.4). Prvi kriterijum, trag ( )

ijt t daje informaciju o tome koliko je mrava do

tada odabralo istu vezu (i, j). Drugi kriterijum, vidljivost ij

η , govori da što je grad bliži to je poželjniji. Očigledno je da ako se postavi da je 0α = , nivo traga se više ne razmatra i tada se algoritam pretvara u stohastički pohlepni (greedy) algoritam sa više polaznih tačaka.

Posle n iteracija svi mravi završavaju svoj put i njihove liste zabrana će biti popunjene; u tom trenutku za svakog mrava k računa se dužina puta

kL i vrednosti k

ijτ∆ se koriguju po formuli (2.5). Takođe se najkraći put (tj. min , 1,...,

kL k m= ) koji je pronađen od

strane mrava snima i sve liste zabrana se prazne. Ovaj proces se nastavlja dok broj iteracija ne dođe do maksimalne (korisnički definisane) vrednosti broja iteracija maxNC ili dok svi mravi ne

Page 35: Miljan Radovic - Diploma Work

25

naprave istu putanju. Ovaj drugi slučaj se naziva stagnacija zato što označava situaciju u kojoj algoritam prestaje sa traženjem alternativnih rešenja.

Mravlji algoritam za rešavanje TSP se može predstaviti pseudo-kodom:

procedura TSP

InicijalizacijaTragaFeromona()

RaspoređivanjeMravaPoGradovima()

InicijalizacijaTabuListe()

WHILE NOT TabuListaPopunjena()

PomeranjeMrava()

AžuriranjeTabuLista()

RačunanjeDužinePuta()

KorekcijaNajkraćegPuta()

AžuriranjeTragaFeromona()

IF NOT PrekoračenMaxBrojCiklusa() AND NOT

Stagnacija()

BrisanjeListaZabrana()

GOTO RaspoređivanjeMravaPoGradovima()

ELSE

IspisNajboljegPuta()

kraj TSP

Vršeni si eksperimenti i sa preostale dve vrste mravljih

algoritama: AD i AQ koji se razlikuju po načinu na koji se trag koriguje tako što svaki mrav odlaže trag u svakom koraku ne čekajući na završetak celokupnog puta. U AD algoritmu količina traga Q se odlaže po vezama (i,j) svaki put kada mrav prođe putem od i do j, dok u AQ algoritmu mrav koji se kreće od i do j ostavlja količinu traga od /

ijQ d po vezama (i,j) svaki put kada se kreće od i do j. Zbog

toga, u AD algoritmu imamo:

0k

ij

Q∆τ =

[ , 1]k ti mrav se kreće od i do j u vremenu t t

inače

− +(2.10)

dok u AQ algoritmu imamo:

0

kijij

Q

d

∆τ =

[ , 1]k ti mrav se kreće od i do j u vremenu t t

inače

− +(2.11)

Iz ovih definicija je jasno da u AD algoritmu povećanje traga feromona na vezama (i,j) kada se mrav kreće od i do j ne zavisi od

ijd , dok je u AQ algoritmu situacija obrnuto proporcionalna

ijd tj.

kraće veze su poželjnije mravima u AQ modelu.

Page 36: Miljan Radovic - Diploma Work

26

Equation Section (Next)

Page 37: Miljan Radovic - Diploma Work

27

3. SPECIFIKACIJA MRAVLJEG SISTEMA

Jedan od zadataka rada je specifikacija softverskog okruženja koje će realizovati funkcionalnost mravljeg sistema. Realizovano programsko okruženje će se sastoji iz dva dela: prvi deo (AntSystem.jar) koji izvršava logiku mravljeg sistema (algoritma) i drugog dela (AntSystemGUI.jar) koji u sebe uključuje prvi deo, upravlja njime, preuzima njegove rezultate rada i vrši njihov grafički prikaz (GUI). U daljim razmatranjima pod mravljim sistemom podrazumevaće se prvi deo programskog okruženja.

U ovom poglavlju biće prikazan mravlji sistem specijalizovan za probleme mrežnog rutiranja, mada nema prepreka da se sistem koristi i za slične probleme rutiranja koji su navedeni u uvodnim razmatranjima. Videćemo koje su to razlike u odnosu na prethodno opisani algoritam opšte namene primenjen na TSP a takođe ćemo, radi boljeg razumevanja funkcionisanja sistema, opisati njegove bitne delove.

3.1. Analiza zahteva U uvodnim razmatranjima pomenuli smo da ukoliko uopšte želimo da vršimo rutiranje na nekom sistemu, moramo obezbediti da svaki čvor posmatranog sistema poseduje tabelu rutiranja. Takođe, naglasili smo da je za efikasno rutiranje potrebno da tabele rutiranja sadrže podatke koji dobro opisuju stanje u sistemu.

Sve što se zahteva od algoritma jeste da održava podatke unutar tabela rutiranja svih čvorova u sistemu ažurnima tj. da dobro oslikava stanje sistema i da se dobro prilagođava promenama koje se eventualno mogu desiti: promena propusnog opsega veza, promena propusnog opsega rutera, promena stanja rutera i/ili veza (aktivan/neaktivan) i svih drugih stvari koje se mogu desiti u jednom realnom sistemu.

3.2. Specifičnosti mravljeg algoritma za problem mrežnog rutiranja u odnosu na problem trgovačkog putnika

Mravlji algoritam spada u algoritme opšte namene što znači da se jedan isti algoritam, manjim ili većim izmenama, može primeniti na širok spektar problema. U prethodnom poglavlju za opis rada mravljih algoritama koristili smo problem trgovačkog putnika. Algoritam za rutiranje koristi iste koncepte kao i gore opisani algoritam, pri čemu postoje sledeće bitne specifičnosti:

• Problem je dinamičke prirode. Dok je problem trgovačkog putnika statičke prirode tj. topologija sistema se ne menja u vremenu jer gradovi ne mogu da se pomeraju pa su i razdaljine među njima konstantne tokom vremena, problem mrežnog rutiranja je izrazito dinamičke prirode: čvorovi nastaju i

Page 38: Miljan Radovic - Diploma Work

28

nestaju tokom vremena kao i veze među njima, kašnjenja među čvorovima se stalno menjaju što zavisi od opterećenja mreže, rutera, i mnogih drugih faktora tako da i algoritam mora podržavati opciju praćenja tih izmena

• Sama postavka problema je drugačija zbog činjenice da mrav ne mora da obiđe sve čvorove u mreži već da treba da pronađe optimalni put između dva čvora koristeći proizvoljan broj čvorova posrednika. Zbog toga, mravu je potrebna dodatna informacija: krajnji čvor tj. čvor do kog mrav treba da stigne nakon čega počinje vraćanje unazad. Zaključujemo da se samim tim menja i način na koji se interpretiraju ograničenja (lista ozabrana) u smislu da mrav prekida sa radom kad se u listi pojavi krajnji čvor a ne kada se lista popuni svim čvorovima posmatranog sistema što je bio slučaj kod primene na TSP

• Težine između čvorova ne moraju biti simetrične. Na primer, kod TSP imali smo situaciju gde je rastojanje između gradova A i B jednako rastojanju između gradova B i A dok kod problema rutiranja to može ali i ne mora uvek da važi. Inače, neki algoritmi za TSP podržavaju i ovu opciju koja se obično koristi kada se radi o obilaženju avionom kada su gradovi veoma udaljeni pa se tada mora uzeti u obzir i uticaj rotacije zemljine kugle Nabrojane razlike utiču na to da realizovani mravlji sistem

primenjen za rutiranje mora imati mogućnost prilagođavanja promenama koje se dešavaju u grafu. Realizovani sistem podržava opciju menjanja strukture grafa na taj način što mu se prosledi novo stanje grafa na osnovu kog se sistem prilagodi i nesmetano nastavi sa radom.

Druga bitna razlika se ogleda u načinu na koji se definiše kretanje mrava. Dok se kod problema trgovačkog putnika mrav kretao po zatvorenoj putanji (početni čvor je ujedno bio i krajnji) kod problema rutiranja to nije slučaj već se mrav uvek kreće između dva različita čvora. (Primetimo da je ovakav način kretanja mrava sličan unicast rutiranju iz uvodnih razmatranja.) Kao i kod problema trgovačkog putnika i kod problema rutiranja nije dozvoljen prolazak kroz isti čvor dva puta jer to ne predstavlja optimalno rešenje. Kada se ovakva situacija desi kod TSP mrav prekida sa radom dok kod rutiranja to može ali ne mora da se desi, što zavisi od podešavanja parametara. Dakle, kod rutiranja imamo mogućnost da iskoristimo mrava koji je dva puta prošao kroz isti čvor i to na taj način što ćemo ga vratiti korak unazad do prethodnog čvora koji nije izazvao takvo stanje.

Treća razlika koja se ogleda u mogućnosti postavljanja nesimetričnih težina (kašnjenja) u vezama je stvar implementacije grafa.

Page 39: Miljan Radovic - Diploma Work

29

3.3. Funkcionisanje mravljeg sistema Deo programskog okruženja koji izvršava logiku mravljeg algoritma (gore spomenuti AntSystem.jar) se sastoji od nekoliko celina koje možemo grupisati u:

• Raspoređivanje mrava po čvorovima • Mrav • Čuvanje rezulata rada algoritma • Ostali delovi

Nakon inicijalizacije i pokretanja, sistem funkcioniše tako što u određenim vremenskim trenucima (koji su definisani ulaznim parametrima) deo za raspoređivanje mrava po čvorovima na svakom čvoru mreže kreira po jednog novog mrava koji dalje nastavlja samostalno da se kreće po mreži. U toku rada mrav koristi i menja podatke koji se nalaze u delovima za čuvanje rezulata rada algoritma koji, ustvari, predstavljaju deljenu numeričku informaciju za sve mrave. Radi dobijanja informacija koje su im potrebne u toku rada mravi koriste deo za proračun. Pomoćni delovi obavljaju sporedne funkcije koje nisu direktno vezane za mravlj sistem a to su: deo koji pseudo-slučajno bira odredišne čvorove novonastalih mrava, deo koji čuva podatke o strukturi mreže, deo koji čuva parametre, itd. Svi nabrojani delovi će biti detaljnije objašnjeni u nastavku teksta.

3.3.1. Inicijalizacija mravljeg sistema Pre nego što mravlji sistem uopšte počne sa radom potrebno je izvršiti njegovu inicijalizaciju. Inicijalizacija mravljeg sistema se sastoji u tome da mu se proslede dva ulazna parametra:

• struktura mreže • parametri mravljeg algoritma

Prvi parametar koji predstavlja mrežu na kojoj će se algoritam izvršavati je obavezno proslediti sistemu dok drugi parametar može biti izostavljen i tada će sistem primeniti podrazumevane parametre. Inače, primena podrazumevanih parametara se ne preporučuje već bi parametre trebalo podesiti u odnosu na konkretnu mrežu. Nakon početne inicijalizacije sistem je spreman i može se pustiti u rad.

Spomenuli smo da je mrežno rutiranje izrazito dinamički proces. Imajući to u vidu, bilo je potrebno realizovati mogućnost izmene strukture mreže u toku rada mravljeg sistema da se sistem ne bi morao prekidati čime bi se izgubile sve informacije koje je prikupio do tada. Ukoliko se struktura mreže promeni to znači da ni parametri mravljeg sistema koji su bili primenjivani do tada ne moraju više biti optimalni za novonastalu mrežu pa je bilo potrebno realizovati i mogućnost izmene parametara mravljeg sistema. Ove dve mogućnosti su realizovane i detaljnije objašnjene u poglavlju 3.4.

Page 40: Miljan Radovic - Diploma Work

30

3.3.1.1. Struktura mreže

Struktura mreže kao parametar se prosleđuje mravljem sistemu u obliku matrice koja sadrži čvorove mreže i njihovu međusobnu povezanost koja je predstavljena kašnjenjima. Primer mreže sa 7 čvorova predstavljen je matricom prelaza prikazanom na slici 3.1.

Slika 3.1 Primer matrice prelaza

Vidimo da matrica ima isti broj vrsta i kolona. Prva vrsta i prva kolona, koje su obeležene sivom bojom, sadrže sve čvorove (rutere) mreže, pri čemu je prva kolona određena tako da sadrži polazne čvorove a prva vrsta odredišne, što vidimo iz prve ćelije (OD/DO). Unutar matrice nalaze se težine prelaza (kašnjenja) među čvorovima. Težina, u našem slučaju, predstavlja vreme potrebno da se pređe iz polaznog u odredišni čvor. Objasnićemo upotrebu matrice prelaza kroz primer: uzmimo čvorove 3 i 4 i odredimo kašnjenja pri prelasku iz jednog čvora u drugi. Kad tražimo kašnjenje od čvora 3 do čvora 4 tada treba da pronađemo početni čvor 3 u prvoj koloni a odredišni čvor 4 u prvoj vrsti. U preseku pronađene vrste i kolone nalazi se podatak o vrednosti kašnjenja između od čvora 3 do čvora 4 i on iznosi 12. Koristeći se istim principom, zaključujemo da kašnjenje od čvora 4 do čvora 3 ima vrednost 4. Ćelije koje su prazne (ne sadrže nikakav podatak) označavaju da ne postoji veza između čvorova.

Primetimo da su ćelije unutar matrice prelaza koje se nalaze na preseku dva ista čvora obojene plavom bojom. Te ćelije sadrže podatak o tome koliko je vremena potrebno čvoru da prosledi paket, drugim rečima, koliko je kašnjenje samog čvora, čime se simulira njegova opterećenost.

Iz matrice definisane na ovaj način može se rekonstruisati kompletna mreža: čvorovi, veze, težine. Sličnu strukturu koristi i realizovani mravlji sistem koji vrši njenu transformaciju u strukturu Network koja je veoma slična matrici prelaza ali sadrži još i neke dodatne metode prilagođene samom sistemu.

3.3.1.2. Parmetri mravljeg algoritma

Ulazni parametri mravljeg algoritma služe nam da definišemo ponašanje sistema. Već smo napomenuli da ovaj parametar nije

Page 41: Miljan Radovic - Diploma Work

31

potrebno prosleđivati i da će sistem tada koristiti podrazumevane ali se strogo preporučuje da se to ne radi.

Parametri mravljeg sistema se čuvaju u strukturi Parameters iz koje su dostupni svim delovima sistema koji je koriste. U daljem tekstu ćemo nabrojati i objasniti sve parametre i njihove uticaje na mravlji sistem. Parametri se pojavljuju abecednim redosledom.

antDelayTime – predstavlja tzv. “vreme zadržavanja” mrava. Izražava se u milisekundama i predstavlja vremenski interval između dva koraka mrava u toku kojeg on stoji u mestu. Zadržavanje mrava vrši se u cilju grafičkog prikaza kretanja kroz mrežu jer bi inače bilo skoro nemoguće ljudskim okom videti kuda se kreće.

antDieOnLoop – u toku rada, mrav pamti put kojim je prošao i u isto vreme proverava da li se desila petlja na tom putu tj. prolazak kroz isti čvor više od jedanput. Ukoliko se desi takva situacija, ovaj parametar predstavlja indikator da li da mrav odmah prekine sa radom (u daljem tekstu koristićemo termin „umre“) ili da nastavi. Parametar je usko povezan sa parametrom loopDetection (detekcija petlje), koji će biti kasnije objašnjen, u smislu da se koristi samo kada i sistem radi u režimu detekcija petlji. Parametar je logičkog tipa (true / false) i ukoliko je postavljen na true, mrav umire i nikakve promene na sistemu se ne dešavaju. Nasuprot tome, ukoliko je parametar postavljen na false, mrav ne umire u slučaju detekcije petlje, vraća u poslednji čvor u putu koji nije izazvao petlju (prethodni), “pretvara” se u backward mrava i počinje povratak do početnog čvora ažurirajući tabele rutiranja i statistike saobraćaja ukoliko su dobijeni rezultati dobri (detaljnije objašnjenje o kretanju mrava se nalazi u poglavlju 3.3.2) Ovim postupkom smo uspeli da iskoristimo mrava što ne bi bio slučaj ako umire odmah pri detekciji petlje.

antGenerationTime – vreme generisanja mrava, predstavlja vremenski interval u milisekundama nakon kojeg sistem generiše po jednog novog mrava u svakom čvoru mreže. Generisanje novih mrava se vrši ukoliko nije prekoračen maksimalan broj generisanih mrava ili ukoliko nije prekoračen maksimalan broj mrava po čvoru (čvorovi koji nisu prekoračili ovo ograničenje generišu mrave).

antThreadPriority – Predstavlja numerički podatak o prioritetu programske niti (thread-a) tj. u našem slučaju prioritetu mrava koji su implementirani na ovaj način. Parametar može da ima vrednost od 1 do 10 gde jedan predstavlja najmanji a 10 najveći prioritet. Ovaj parametar nema nikakav uticaj na rad mravljeg algoritma već se koristi da bi se resursi računarskog sistema, na kojem se algoritam izvršava, manje ili više opteretili. Napomenimo da ovog parametra ne bi bilo ukoliko bi se algoritam izvršavao na pravim računarskim mrežama.

elitistStrategy – Označava da li algoritam u svom radu koristi strategiju elite ili ne (videti poglavlje 2.4.1). Parametar je logičkog tipa. Da podsetimo, strategija elite je samostartujuća akcija koja dodaje određenu količinu feromona (pojačanja) najboljem putu.

Page 42: Miljan Radovic - Diploma Work

32

explorationProbability – predstavlja numerički podatak o verovatnoći istraživanja u smislu koji procenat od ukupnog broja mrava će biti istraživači. Parametar je decimalnog tipa a moguće vrednosti su u opsegu od 0.0 do 1.0.

expMeanCoefficient – je koeficijent umerenosti računanja. On nam govori sa kojim značajem se uzimaju rezultati rada mrava pri računanju prosečnih vremena i razlika u vremenu. Ovaj parametar utiče i na veličinu prozora (bafera) (poglavlje 3.3.4) koji čuvaju određen broj najskorijih rezultata rada mrava. Čuvanje samo najskorijih rezultata je potrebno jer imamo promene u sistemu i rezultati koji su vremenski stari ne moraju biti relevantni a ovim postupkom se oni izuzimaju iz računice.

loopDetection – detekcija petlje. Kao što je ranije pomenuto, ovaj parametar nam govori da li sistem radi u režimu prepoznavanja (detekcije) petlje ili ne. Detekcija petlje je bitna iz razloga da rešenja koja nisu optimalna ne bi trebala da ulaze u računicu.

maxActiveAntsCoefficient – predstavlja maksimalan broj generisanih mrava iz jednog čvora koji su trenutno aktivni u sistemu. Ukoliko u ciklusu generisanja mrava sistem ustanovi da neki čvor ima maksimalno dozvoljeni broj mrava u sistemu, ne dozvoljava tom čvoru da generiše novog mrava.

maxAntAge – je maksimalno vreme života jednog mrava i govori nam koji vremenski inteval (u milisekundama) mrav može maksimalno da provede u mreži pri kretanju unapred ili unazad. Ovaj koncept koristimo zato da mravi koji uđu u veze koje kasnije postanu neaktivne ne bi tamo ostajali dug vremenski interval, dajući time veoma loše rezultate i nepotrebno zauzimajući računarske resurse.

maxHopsCoefficient – predstavlja maksimalan broj skokova (prelazaka iz čvora u čvor) koje jedan mrav može da napravi. Koristi se radi optimizacije kretanja mrava, kao i prethodni parametar.

maxRandomChoosingDifference – predstavlja maksimalnu razliku u odabiranju odredišnih čvorova. Sistem za svaki čvor beleži podatke koliko je puta taj čvor odabrao neki drugi čvor u mreži za odredišni i ne dozvoljava da neki čvor bude previše isforsiran tj. mnogo više puta odabran od nekog drugog čvora. Ovaj parametar nam govori kolika je to maksimalna razlika u odabiranju između čvora koji je najmanje puta izabran i čvora koji je najviše puta izabran.

maxReinforcement – pojačanje se koristi pri ažuriranju tabela rutiranja pri povratku mrava u početni čvor i izračunava se na osnovu kvaliteta dobijenog rešenja. Pojačanje može biti u intervalu 0.0 do 1.0 a ovaj parametar predstavlja maksimalno dozvoljenu vrednost. Sistem ograničava sve vrednost koje prekorače maksimalno dozvoljenu vrednost pojačanja tako što ih smanjuje na vrednost maksimalno definisanog pojačanja. Koristi se u kombinaciji sa još

Page 43: Miljan Radovic - Diploma Work

33

jednim parametrom (maxRoutingTableProbability) da sistem ne bi ušao u zasićenje.

maxRoutingTableProbability – tj. maksimalna vrednost verovatnoće u tabeli rutiranja. Sistem ograničava vrednost ove verovatnoće da ne bi ušao u zasićenje.

maxTotalAntsCoefficient – je maksimalan broj generisanih mrava posmatrano za ceo sistem i koristimo ga da bi ograničili vreme rada algoritma tako što sistem prekida sa generisanjem novih mrava kada broj generisanih mrava premaši zadatu vrednost.

newProbabilityValue – predstavlja vrednost “nove” verovatnoće u tabeli rutiranja koja se pojavljuje kada se pojavi nova veza u mreži čime se menja struktura tabela rutiranja čvorova između kojih je nastala nova veza, dodavanjem još jedne kolone. Parametar je decimalnog tipa i može imati vrednost u opsegu 0.0 – 1.0. i označava važnost koja će se dati novostvorenom putu.

squashingFunctionCoefficient – označava koeficijent tzv. „funkcije gomilanja“ i koristi se pri računanju pojačanja radi “doterivanja” ove vrednosti.

styledDocument – predstavlja površinu (konzolu) na koju će se ispisivati rezultati rada algoritma. Nema uticaja na rad sistema i ne mora se čak ni inicijalizovati (i tada nema ispisa na konzolu).

timeWeight – predstavlja značaj kašnjenja među čvorovima u odnosu na stečeno znanje pri računanju pojačanja tokom kretanja mrava. Znači, što je veća vrednost parametra to je veći uticaj težina između čvorova u odnosu na stečeno znanje. Parametar je decimalnog tipa u opsegu od 0.0 do 1.0.

windowSizeCoefficient – predstavlja podatak o veličini prozora (bafera) u kojima se čuvaju najskoriji rezultati rada sistema. Parametar je decimalnog tipa i što je veći to se više rezultata pamti.

zetaConfidenceLevel – predstavlja nivo poverenja pri uzimanju u obzir rezultata koje je mrav dobio u toku rada tj. određuje koji opseg vrednosti rezultata može ući u proračun. Ukoliko određeni mrav dobije rezultat koji je izvan ovog opsega (koji se dobija na osnovu ranije dobijenih rezultata drugih mrava) tada taj rezultati ne ulazi u proračun.

3.3.2. Raspoređivanje mrava po čvorovima Kao što samo ime kaže, ovaj deo aplikacije služi za početno raspoređivanje mrava po čvorovima mreže. Kada se mravlji sistem pokrene ovaj deo sistema počinje da se izvršava u beskonačnoj petlji dok neko od ograničenja sistema (vremensko, ukupan broj mrava, itd.) ne prekine njegovo izvršavanje ili korisnik sam ne prekine izvršavanje.

U određenim vremenskim trenucima, koji su definisani parametrima mravljeg sistema, generiše se po jedan novi mrav na

Page 44: Miljan Radovic - Diploma Work

34

svakom čvoru mreže i podešava mu se prioritet (prioritet programske niti). Nakon toga, mrav samostalno nastavlja obilazak mreže a sistem prelazi u stanje čekanja do sledećeg trenutka u kojem treba da rasporedi mrave po čvorovima.

3.3.3. Način rada mrava u sistemu U prethodnom poglavlju smo napomenuli da mravi predstavljaju suštinu mravljeg sistema i da, ustvari, od njih zavisi način rada celog sistema. U daljem tekstu objasnićemo način rada mrava od trenutka njegovog kreiranja do trenutka prestanka rada. Način rada mrava objasnićemo na primeru jednog mrava jer se svi mravi ponašaju po istim pravilima.

Kao što smo rekli u prethodnom poglavlju, deo za raspoređivanje mrava u određenim vremenskim intervalima kreira po jednog mrava u svakom čvoru mreže. To je trenutak nastanka mrava i početka njegovog samostalnog rada. Kreirani mrav je tzv. forward mrav jer se kreće unapred – do odredišnog čvora. Pri kreiranju, mravu se podešavaju određeni parametri:

• Jedinstveni identifikator mrava • Početni čvor • Odredišni čvor • Istraživač • Prioritet • Utrošeno vreme

Identifikator mrava predstavlja jedinstveni identifikator za svakog mrava u mreži, početni i odredišni čvor su jasne stavke, pojam istraživač predstavlja ponašanje mrava koje ćemo u daljem tekstu pobliže objasniti, prioritet predstavlja prioritet programske niti a utrošeno vreme predstavlja „vreme života“ mrava tj. vreme koje je mrav proveo u mreži i u trenutku kreiranja mrava to vreme ima vrednost 0.

Nakon početnih podešavanja mrav se ponaša kao slobodan agent i započinje kretanje mrežom po određenim pravilima pokušavajući da dođe do zadatog mu odredišnog čvora. Da bi nam bilo jasnije kako se mrav kreće kroz mrežu uzećemo za primer mrežu sa slike 1.1 i pretpostaviti da je mrav kreiran u čvoru 2 (početni čvor) a treba da dođe do čvora 5 (odredišni čvor).

Sa slike vidimo da iz čvora 2 mrav može da krene jednim od tri moguća puta: prema čvoru 1, 3 ili 4. Mrav određuje sledeći čvor tako što se „obrati“ tabeli rutiranja čvora 2 kao onoj na slici 1.6. Pošto je mravu zadat odredišni čvor 5 on pronalazi taj čvor u prvoj koloni tabele rutiranja čvora 2 i na osnovu dobijenog pseudoslučajnog broja odabira neki od susednih čvorova iz prve vrste. Kako? Pretpostavimo da je tabela rutiranja čvora 2 ista kao ona sa slike 1.6. Posmatrajmo samo vrstu gde se nalazi odredišni čvor 5

Page 45: Miljan Radovic - Diploma Work

35

kao na slici 3.2 gde vidimo da verovatnoće prelaska u sledeći čvor imaju vrednosti (0.002, 0.912, 0.084).

Slika 3.2 Primer tabele rutiranja

Pošto čvor ima tri susedna čvora sistem kreira tri oblasti: • Za susedni čvor 1: [0 – 0.002) • Za susedni čvor 3: [0.002 – 0.914) • Za susedni čvor 4: [0.914 – 1)

Vrednost 0.914 je dobijena zbirom 0.002 + 0.912 a vrednost 1 predstavlja zbir sve tri vrednosti iz posmatrane vrste. Dalje sistem bira susedni čvor tako što generiše pseudoslučajni broj u intervalu [0 – 1) i posmatra čijoj oblasti generisani broj pripada.

Ovo je slučaj kada mrav nije istraživač. Ukoliko je mrav istraživač na njega ne utiču verovatnoće iz tabele rutiranja tj. on bira susedne čvorove sa podjednakom verovatnoćom. Zbog toga se svakom čvoru dodeljuje podjednaka verovatnoća prelaska 1 / broj susednih čvorova što u slučaju sa slike 3.2 iznosi 1 / 3 = 0.33˙ pa bi granične oblasti u tom slučaju bile:

• Za susedni čvor 1: [0 – 0.33˙) • Za susedni čvor 3: [0.33˙ – 0.66˙) • Za susedni čvor 4: [0.66˙ – 1)

Dalje biranje se izvodi na potpuno isti način, generisanjem pseudoslučajnog broja. Inače, mravi istraživači se koriste radi otkrivanja (moguće boljih) alternativnih putanja i da sistem ne bi ušao u zasićenje. Postupak kretanja kroz čvorove se ponavlja sve dok mrav ne stigne do odredišnog čvora ili ne prekrši jedno od sledećih ograničenja sistema:

• Prekoračen maksimalan broj skokova • Prekoračeno maksimalno vreme života (trajanja) mrava • Petlja u putu

Ukoliko mrav prekorači maksimalan broj skokova (prelazaka sa čvora na čvor) ili maksimalno dozvoljeno vreme života tada prestaje sa radom tj. umire ne utičući nikako na sistem. Ukoliko se pojavi petlja u putu (prolazak kroz neki čvor dva puta) tada mrav može da prekine sa radom (umre, ne utičući na sistem) ili da nastavi sa radom povratkom u prethodni čvor, što je određeno parametrima sistema.

Celim tokom kretanja unapred mrav je pamtio čvorove kroz koje je prolazio i vremena potrebna za dolazak do njih što će mu koristiti pri ažuriranju tabela rutiranja i statistika saobraćaja pri

Page 46: Miljan Radovic - Diploma Work

36

povratku. U nastavku teksta pretpostavićemo da se mrav kretao putanjom 2-3-5 i došao do čvora 5 ne narušavajući nijedno ograničenje.

Ukoliko je mrav ostao u životu u trenutku dolaska do odredišnog čvora, završio je sa forward režimom rada i prelazi u tzv. backward režim – kretanje unazad do početnog čvora. Mrav se vraća do pretposlednjeg čvora u putu (u našem slučaju to je čvor 3), prosleđuje rezultate rada tj. vreme potrebno za dolazak od trenutnog do odredišnog čvora (3-5) i ukoliko je rezultat rada dobar dozvoljava mravu da ažurira tabelu rutiranja i statistike saobraćaja. Mrav se dalje kreće prema početnom čvoru i (ukoliko su rezultati dobri) ažurira ostale podputanje (u našem slučaju to je 2-3-5) U čvoru 2 mrav je završio sa radom i umire.

3.3.4. Čuvanje rezulata rada algoritma Pomenuli smo da mravi u toku rada koriste i menjaju deljene numeričke informacije o mreži u kojoj se kreću. Te informacije su u sistemu realizovane kao dve zasebne celine:

• Tabele rutiranja (RoutingTable) • Statistike saobraćaja (LocalTrafficStatistics)

Tabele rutiranja predstavljaju iste onakve tabele rutiranja kakve možemo sresti u pravim računarskim mrežama. U realizovanom sistemu tabele rutiranja su iste kao na slici 1.6 i podaci unutar tabela rutiranja su verovatnoće prelaska u susedni čvor. Podaci unutar tabela rutiranja se menjaju u zavisnosti od kvaliteta dobijenog rešenja po formuli (2.2). Korišćenjem ove formule slede jednačine koje se koriste za ažuriranje vrednosti verovatnoća prelaska:

• Ukoliko mrav prolazi kroz čvor potrebno je pojačati trag i tada formula glasi:

novaVer = staraVer + pojačanje * (1 - staraVer) (3.1)

• Ukoliko mrav ne prolazi kroz čvor tada se trag smanjuje po formuli:

novaVer = staraVer - pojačanje * staraVer (3.2)

Uzmimo opet za primer tabelu rutiranja sa slike 1.6. Pretpostavimo da treba da se ažurira vrsta gde je odredišni čvor 1 (gde su sve verovatnoće 0.33˙) i da je mrav išao putem preko susednog čvora 3. Pomenuli smo da se ažuriranje vrši tako što se na osnovu kvaliteta rešenja dobije informacija o pojačanju i primeni na pomenutu vrstu. Pretpostavimo da je dobijeno pojačanje vrednosti 0.6. U tom slučaju nove vrednosti verovatnoća će, na osnovu formula (3.1) i (3.2) glasiti:

• Za čvor 3 (preko kojeg mrav prolazi)

novaVer = 0.33˙ + 0.6 * (1 – 0.33˙) = 0.733˙

Page 47: Miljan Radovic - Diploma Work

37

• Za ostale čvorove:

novaVer = 0.33˙ - 0.6 * 0.33˙ = 0.13

Korišćenje tabela rutiranja je objašnjeno u prethodnom poglavlju pa se time nećemo baviti.

Statistike saobraćaja predstavljaju malo složeniju strukturu od tabele rutiranja unutar koje se prati više informacija. Svaki čvor u mreži poseduje jednu ovakvu strukturu, baš kao i tabelu rutiranja. Ovi podaci se stalno ažuriraju u toku rada sistema i to ažuriranje vrše mravi pri povratku do početnog čvora isto kao i tabele rutiranja. Na osnovu podataka koje im pružaju statistike saobraćaja mravi dobijaju informacije o pojačanju koje treba da primene na neki čvor pri povratku u početni. Takođe, iz statistika saobraćaja se vidi koji je to najbolji otkriveni put do tada između bilo koja dva čvora u mreži. Unutar jedne statistike saobraćaja se prate podaci o:

• Najskorije dobijenim putevima od posmatranog do svih ostalih čvorova u mreži

• Prosečna vremena od posmatranog do svih ostalih čvorova u mreži

• Razlike u vremenima od posmatranog do svih ostalih čvorova u mreži

• Najskorija najbolja vremena od posmatranog do svih ostalih čvorova u mreži

• Najbolje ikad postignuta vremena od posmatranog do svih ostalih čvorova u mreži Svaki mrav u fazi povratka u gnezdo (backward) svakom

čvoru kroz koji se vraća prosleđuje rešenje koje je dobio, čvor proverava kvalitet rešenja i ukoliko je rešenje u granicama poverenja (parametar zetaConfidenceLevel) ono se pamti unutar statistika saobraćaja i vrši se ažuriranje ostalih podataka. Koliko će se poslednje dobijenih rezultata čuvati zavisi od podešavanja koje korisnik naveo u parametrima (parametar windowSizeCoefficient).

3.3.5. Ostali delovi U prethodnim poglavljima smo predstavili delove mravljeg sistema koji direktno utiču na njegov rad: deo za raspoređivanje mrava, delovi za čuvanje rezultata rada kao i sami mravi koji definišu način rada celog sistema. Postoji još jedan deo sistema koji direktno utiče na njegov rad a to je deo za proračun dok ostali delovi utiču na sistem na manje direktan način. U nastavku teksta ćemo predstaviti ove delove sistema.

Kao što mu samo ime kaže, deo za proračun (AntNest) predstavlja deo sistema koji se bavi računanjima. Ovaj deo sistema, u neku ruku, predstavlja spregu između mrava i dela za čuvanje rezultata rada. U toku rada mrav od ovog dela sistema zahteva informacije o tome kakvog tipa da bude (istraživač ili ne), kuda da se

Page 48: Miljan Radovic - Diploma Work

38

kreće po mreži tj. koji sledeći čvor u putu da izabere, koliko pojačanje da primeni na čvor itd. Ovaj deo je, dakle, zadužen za ažuriranje rezultata rada kao i za pružanje potrebnih informacija mravima u toku rada.

Kao što smo videli u poglavlju 3.3.3, u fazi kreiranja mravu se podešavaju određeni parametri a jedan od tih parametara predstavlja odredišni čvor. Kako sistem funkcioniše tako što u određenim vremenskim trenucima kreira po jednog mrava u svakom čvoru mreže a odredišni čvor se nasumično bira, da bi se odredio taj odredišni čvor koristi se generator pseudoslučajnih brojeva. Ipak, poznato je da se ovakvim načinom izbora neki broj (čvor) može izabrati više puta u odnosu na neki drugi. Realizovani sistem koristi tehniku pseudoslučajnih brojeva za dobijanje odredišnog čvora u kombinaciji sa ograničavanjem razlike u broju odabiranja. Ovaj deo se u sistemu naziva RandomDestinationNodeChooser (RDNC) i predstavlja strukturu sličnu tabeli rutiranja ili rezultatima rada u smislu da svaki čvor mreže poseduje jednu takvu. RDNC beleži koliko je posmatrani čvor puta birao neki drugi čvor u mreži za odredišni i ne dozvoljava da neki od njih bude mnogo puta više odabran od nekog drugog. Ta razlika je definisana celobrojnim parametrom maxRandomChoosingDifference koji ustvari predstavlja maksimalnu dozvoljenu razliku odabiranja između odredišnog čvora koji je najviše i čvora koji je najmanje puta izabran.

Uzmimo na primer mrežu sa slike 1.5 i posmatrajmo čvor 2. Pretpostavićemo da maksimalna razlika odabiranja ima vrednost 3. Ukoliko se mrav kreira u čvoru 2, odredišni čvor tog mrava može biti neki od preostalih čvorova, dakle 1, 3, 4 ili 5 što određuje RDNC struktura. Na slici 3.3 je prikazana RDNC struktura čvora 2 nakon inicijalizacije.

RDNC čvora 2 Odredišni 1 3 4 5 Izabran puta 0 0 0 0

Slika 3.3 RDNC nakon inicijalizacije

Pretpostavimo da je nakon toga sistem pušten u rad i da su mravi koji su kreirani u čvoru 2 dobili od RDNC sledeće pseudoslučajno generisane odredišne čvorove: 5, 1, 4, 4, 1, 4, 5. Tada je situacija u RDNC strukturi čvora 2 kao na slici 3.4.

RDNC čvora 2 Odredišni 1 3 4 5 Izabran puta 2 0 3 2

Slika 3.4 RDNC u nekom trenutku rada

Pretpostavimo dalje da je kreiran sledeći novi mrav i da je RDNC pseudoslučajno izgenerisao 4 kao odredišni čvor. Tada dolazi

Page 49: Miljan Radovic - Diploma Work

39

do situacije da čvor 4 treba da bude odabran, dakle, čatvrti put. Primećujemo da bi tada razlika odabiranja između čvorova 3 i 4 bila četiri što premašuje zadatu granicu odabiranja koja ima vrednost 3. Zbog toga RDNC generiše novi pseudoslučajni čvor dok god ne pronađe onaj koji neće dovesti do ovakve greške. U posmatranoj situaciji to bi bio bilo koji čvor osim 4.

Zaključujemo da se brojač koliko je koji čvor puta odabran stalno uvećava kako vreme rada sistema odmiče. Da se ne bi desilo da sistem premaši maksimalno definisanu celobrojnu vrednost, vrši se stalno umanjivanje brojača. Zamislimo da je nakon situacije na slici 3.4 RDNC izgenerisao čvor 3 što bi dovelo do situacije da je svaki čvor odabran više od jedanput. RDNC poseduje detekciju takve situacije i vrši smanjivanje svih vrednosti brojača da bi se došlo do situacije da čvor koji je najmanje puta biran ima vrednost brojača nula. Situacija nakon odabiranja čvora 3 i umanjivanja brojača je prikazana na slici 3.5.

RDNC čvora 2 Odredišni 1 3 4 5 Izabran puta 1 0 2 1

Slika 3.5 RDNC nakon umanjivanja brojača

Kao što znamo, veštački mravi se, između ostalog, razlikuju od pravih po tome što imaju memoriju koja ima služi da bi pamtili putanju kojom su prošli. Pored putanje mrava tj. svih čvorova kroz koje je prošao, potrebno je pamtiti i vremena dolaska do određenog čvora u putanji radi ocenjivanja kvaliteta rešenja. Zato svaki mrav poseduje strukturu koja pamti ove informacije i koja se u sistemu naziva Path.

Radi lakšeg objašnjenja kako izgleda Path struktura pretpostavimo da je jedan mrav kreiran u čvoru 2 na mreži sa slike 1.5 i da se kretao od čvora 2 do čvora 3 dokle je kašnjenje 16 i dalje od čvora 3 do čvora 5 gde je kašnjenje 19. Struktura Path tada ima izgled kao na slici 3.6.

Path čvora 2 Čvor 2 3 5 Ukupno vreme 0 16 35

Slika 3.6 Primer Path strukture

Sa slike primećujemo da se u Path strukturi pamte svi čvorovi kroz koje je mrav prošao kao i ukupno vreme od početnog do svakog čvora u listi, što nam je i bio cilj.

3.4. Osnovne funkcije sistema Kao što smo ranije napomenuli, delom koji izvršava logiku mravljeg sistema (AntSystem) upravlja se iz dela koji vrši grafički prikaz

Page 50: Miljan Radovic - Diploma Work

40

(AntSystemGUI) korišćenjem public metoda. U daljem tekstu daćemo pregled osnovnih metoda (funkcija) preko kojih se upravlja mravljim sistemom:

• Start() – pokretanje mravljeg sistema. Kada se mravlji sistem pokrene deo za raspoređivanje mrava počinje sa radom

• Pause(boolean) – pauziranje mravljeg sistema i to tako da sistem prekida sa generisanjem novih mrava ali mravi nastavljaju sa radom (ukoliko je prosleđen parametar false) ili i mravi prekidaju sa radom (ukoliko je prosleđen parametar true). Pozicije mrava se pamte radi eventulnog nastavka rada. Takođe se pamte i rezultati rada u pomoćnim strukturama

• Stop() – prekid rada mravljeg sistema. Svi mravi prekidaju sa radom i umiru. Rezulati rada se pamte

• Reset() – resetovanje mravljeg sistema. Vrši se ponovna inicijalizacija celog sistema: svi mravi umiru i brišu se svi dotadašnji rezultati rada algoritma

• setNetwork(int[][]) – promena strukture mreže. Ovo je, inače, najčešće korišćena metoda mravljeg sistema u realnim uslovima rada. Metoda na osnovu dobijenih parametara o novom stanju mreže modifikuje tabele rutiranja, statistike saobraćaja, RDNC a takođe „ubija“ mrave koji se nalaze u nepostojećim vezama i čvorovima tj onima koje su u međuvremenu nestale

• setParameters(Parameters) – ponovno postavljanje parametara mravljeg sistema. Pošto sistem na početku zahteva da mu se postave bilo kakvi parametri da bi počeo sa radom, ova funkcija nam omogućava da ih naknadno promenimo

• Samostartujuće akcije – kao što smo već pomenuli, algoritam može podržavati neke od samostartujućih akcija. U našem algoritmu su implementirane dve samostartujuće akcije a to su strategija elite i uklanjanje neaktivnih mrava pre generisanja novih

3.5. Modeli sistema U ovom poglavlju biće predstavljeni modeli mravljeg sistema tj. dela realizovanog programskog okruženja koje izvršava logiku mravljeg algoritma i to su: slučajevi korišćenja (use case dijagrami), statički i dinamički modeli sistema. Modelima dela programskog okruženja koje grafički prikazuje način i rezultate rada mravljeg sistema (GUI) se nećemo baviti.

3.5.1. Slučajevi korišćenja – use case dijagrami U ovom poglavlju ćemo prikazati neke od najbitnijih slučajeva korišćenja u realizovanom mravljem sistemu. Prikazani su sledeći

Page 51: Miljan Radovic - Diploma Work

41

slučajevi korišćenja: inicijalizacija mravljeg sistema, osnovne funkcije sistema i raspoređivanje mrava po čvorovima.

3.5.1.1. Inicijalizacija mravljeg sistema

Slika 3.7 Slučaj korišćenja: inicijalizacija mravljeg sistema

Slučaj korišćenja Inicijalizacija mravljeg sistema Učesnici Mravlji sistem Kratak opis Mravlji sistem pre početka rada vrši

inicijalizaciju potrebnih klasa Uslovi pre izvršenja Prosleđeni parametri: struktura mreže

(obavezno) i parametri mravljeg sistema Opis Mravlji sistem vrši inicijalizaciju klase

AntSystem, nakon toga se vrši inicijalizacija klasa Network i Parameters na osnovu kojih se kasnije inicijalizuje klasa AntNest

Specijalni slučajevi Nema ih Uslovi posle izvršenja Inicijalizovan mravlji sistem spreman za rad

Tabela 3.1 Opis slučaja korišćenja: inicijalizacija mravljeg sistema

Page 52: Miljan Radovic - Diploma Work

42

3.5.1.2. Osnovne funkcije sistema

Slika 3.8 Slučaj korišćenja: osnovne funkcije sistema

Slučaj korišćenja Osnovne funkcije sistema Učesnici Korisnik, GUI, mravlji sistem Kratak opis Korisnik preko grafičkog interfejsa (GUI)

upravlja funkcionisanjem realizovanog mravljeg sistema

Uslovi pre izvršenja Inicijalizovan mravlji sistem Opis Korisnik preko realizovanog dela

programskog okruženja koji grafički prikazuje način rada mravljeg sistema, upravlja njegovim osnovnim funkcijama: inicijalizacijom, pokretanjem, pauziranjem, zaustavljanjem, resetovanjem kao i promenom strukture mreže i parametara mravljeg sistema

Specijalni slučajevi Nema ih Uslovi posle izvršenja Promena stanja mravljeg sistema

Tabela 3.2 Opis slučaja korišćenja: osnovne funkcije sistema

Page 53: Miljan Radovic - Diploma Work

43

3.5.1.3. Raspoređivanje mrava po čvorovima

Slika 3.9 Slučaj korišćenja: raspoređivanje mrava po

čvorovima

Slučaj korišćenja Raspoređivanje mrava po čvorovima Učesnici Mravlji sistem, mrav Kratak opis Mravlji sistem kreira novog mrava i pušta

ga u mrežu Uslovi pre izvršenja Inicijalizovan mravlji sistem Opis Mravlji sistem kreira novog mrava i zatim

mu podesi sve potrebne parametre i postavi ga u početni čvor.

Specijalni slučajevi Nema ih Uslovi posle izvršenja Ukoliko pronađe dobra rešenja mrav trajno

menja tabele rutiranja i statistike saobraćaja čvorova kroz koje je prošao

Tabela 3.3 Opis slučaja korišćenja: raspoređivanje mrava po čvorovima

3.5.2. Statički model sistema – dijagram klasa Statički model sistema opisan je dijagramom klasa koji zbog svoje veličine nije prikazan u osnovnom tekstu već se nalazi na kraju rada

Page 54: Miljan Radovic - Diploma Work

44

kao dodatak A1 formata. Dijagram klasa se sastoji od 10 klasa: AntSystem, Ant, AntNest, LocalTrafficStatistics, RoutingTable, Parameters, Path, RandomDestinationNodeChooser, Network i Matrix koje ćemo u nastavku teksta pobliže objasniti.

AntSystem predstavlja deo mravljeg sistema preko koga se vrši njegova inicijalizacija. Kao što je već rečeno, inicijalizacija podrazumeva da se sistemu proslede dva parametra: struktura mreže i parametri mravljeg sistema. Na osnovu prvog parametra inicijalizuje se klasa Network koja će pamtiti strukturu mreže a na osnovu drugog klasa Parameters koja će čuvati podešavanja mravljeg sistema. Inače, ova klasa je zadužena na međusobnu komunikaciju sa delom za grafički prikaz. Pored toga, u ovoj klasi je implementirana metoda za raspoređivanje mrava po čvorovima.

Nakon inicijalizacije i pokretanja mravljeg sistema počinje generisanje mrava po čvorovima mreže. Mravi (Ant) su implementirani kao programske niti i nakon inicijalizacije oni su samostalni agenti koji se kreću po mreži po određenim pravilima. AntSystem nikako ne utiče na njihov rad u smislu načina kretanja već jedino može da prekine ili pauzira njihov rad ukoliko korisnik to želi.

Mravi u toku kretanja po grafu (mreži) pamte putanje kojima su prošli u posebnoj strukturi koja je implementirana u obliku klase Path. Način rada klase Path je opisan u poglavlju 3.3.5 pa se njome nećemo detaljnije baviti.

Tokom rada mravlji sistem radi razna proračunavanja i ažuriranja. Deo koji je zadužen za ove stvari je spojen u jednu celinu u obliku klase AntNest. Ovaj deo, dakle, vrši izračunavanja potrebnog pojačanja koje će se primeniti na neku tabelu rutiranja, određuje da li je mrav istraživač, određuje sledeći čvor u kretanju mrava itd.

Tokom rada, mrav se služi deljenim numeričkim informacijama koje su u sistemu izvedene u obliku dve klase; tabela rutiranja (RoutingTable) i statistika saobraćaja (LocalTrafficStatistics). Način rada ovih delova sistema je opisan u poglavlju 3.3.4.

RandomDestinationNodeChooser, kao što je već rečeno u poglavlju 3.3.5, predstavlja deo za određivanje odredišnih čvorova novonastalih mrava a klase Network i Matrix predstavljaju pomoćne klase prilagođene potrebama implementiranog mravljeg sistema.

U klasi Parameters se čuvaju podešavanja mravljeg sistema tj. parametri koji su opisani u poglavlju 3.3.1.2, koje koriste neke od klasa u toku izvršavanja algoritma.

3.5.3. Dinamički modeli sistema – dijagrami aktivnosti

Dinamički model sistema predstavljen je sledećim dijagramima aktivnosti: mravlji sistem, inicijalizacija mravljeg sistema, raspoređivanje mrava po čvorovima i ponašanje mrava.

Page 55: Miljan Radovic - Diploma Work

45

3.5.3.1. Mravlji sistem - AntSystem

Kao što je već rečeno, AntSystem je klasa koja se prva pokreće i iz koje se inicijalizuju sve ostale klase. Osnovna svrha ove klase je raspoređivanje mrava po čvorovima. Dijagram aktivnosti je prikazan na slici 3.10

Slika 3.10 Dijagram aktivnosti mravljeg sistema (AntSystem)

Na početku rada mravljeg sistema vrši se njegova inicijalizacija prosleđivanjem parametara. Nakon inicijalizacije mravljeg sistema a osnovu prosleđenih parametara inicijalizuju se sledeće klase:

• AntNest – deo za proračun • Parameters – deo koji pamti parametre mravljeg sistema • Network – deo koji pamti strukturu mreže

3.5.3.2. Inicijalizacija mravljeg sistema

Inicijalizacija je bitan deo rada mravljeg sistema jer bez uspešne inicijalizacije nije moguće pokrenuti sistem. Inicijalizacija se vrši u četiri koraka kako je to prikazano na slici 3.11.

Page 56: Miljan Radovic - Diploma Work

46

Slika 3.11 Dijagram aktivnosti inicijalizacije mravljeg sistema

Na slici vidimo da se prvo počinje sa inicijalizacijom mravljeg sistema, zatim se inicijalizuju klase Parameters i Network a zatim, koristeći ove dve klase, inicijalizuje se i klasa za proračun AntNest. Da bi se sistem uspešno inicijalizovao potrebno je da mu se obavezno prosledi parametar o strukturi mreže (matrica prelaza). Nakon uspešne inicijalizacije mravljeg sistema i navedenih klasa, sistem se može pokrenuti.

3.5.3.3. Raspoređivanje mrava po čvorovima

Nakon uspešne inicijalizacije, sistem je stanju praznog hoda i ne obavlja nikakvu funkciju. Da bi sistem obavljao svoju funkciju potrebno je kreirati mrave i pustiti ih da se kreću po mreži i kreiraju rešenja. Raspoređivanje mrava se vrši u vremenskim trenucima koji su definisani parametrima mravljeg sistema (antGenerationTime). Dijagram aktivnosti koji pokazuje kako se vrši raspoređivanje mrava po čvorovima prikazan je na slici 3.12

Page 57: Miljan Radovic - Diploma Work

47

Slika 3.12 Dijagram aktivnosti raspoređivanja mrava po

čvorovima

3.5.3.4. Ponašanje mrava

U prethodnom poglavlju smo opisali kako se mravi raspoređuju po čvorovima mreže. Ranije smo pomenuli da se mrav nakon kreiranja i inicijalizacije ponaša kao agent koji samostalno odlučuje kako će se kretati po mreži, poštujući zadata pravila i ograničenja. U poglavlju 3.3.3 smo opisali da se mrav može nalaziti u jednom od dva stanja: forward ili backward. Kada je u stanju forward kreće se unapred do zadatog odredišnog čvora a kada je backward tada se vraća istim putem unazad i vrši ažuriranja. Mrav, dakle, prvo obavlja forward radnje a zatim, ukoliko ostane “živ”, backward radnje. Dijagram aktivnosti ponašanja mrava je dat na slici 3.13.

Slika 3.13 Dijagram aktivnosti mrava

Page 58: Miljan Radovic - Diploma Work

48

Na slici vidimo je prva aktivnost kreiranje mrava. Ovaj deo se ustvari izvršava u delu za raspoređivanje mrava po čvorovima a ovde je naveden iz razloga da bi bilo jasnije da mrav mora biti kreiran i inicijalizovan.

U nastavku rada mrav obavlja aktivnosti forward mrava koje su prikazane na dijagramu aktivnost sa slike 3.14 i ukoliko se nakon forward režima okrene („postane“ backward mrav) tada obavlja aktivnosti prikazane na slici 3.15.

Slika 3.14 Dijagram aktivnosti forward mrava

Page 59: Miljan Radovic - Diploma Work

49

Slika 3.15 Dijagram aktivnosti backward mrava

Page 60: Miljan Radovic - Diploma Work

50

Page 61: Miljan Radovic - Diploma Work

51

4. IMPLEMENTACIJA SISTEMA U ovom poglavlju upoznaćemo se sa detaljima implementacije realizovanog mravljeg sistema. Ukratko će biti prikazano korišćeno razvojno okruženje a detaljnije programsko okruženje za grafički prikaz rada sistema pomoću kojeg ćemo objasniti kako funkcioniše implementirani mravlji sistem.

4.1. Razvojno okruženje Alati koji su korišćeni za razvoj mravljeg sistema i grafičkog prikaza njegovog rada su:

• Power Designer – softverski alat koji je korišćen u projektovanju slučajeva korišćenja, dijagrama klasa, dijagrama aktivnosti tj. kompletnog UML-a

• Eclipse – softverski alat za pisanje Java koda kojim je implementirano kompletno programsko okruženje mravljeg sistema. Eclipse je takav alat da podržava razne dodatke (tzv. plugin-ove) a dodatak koji je korišćen je vizuelni editor (VE) radi lakšeg kreiranja grafičkog interfejsa (GUI) pomoćne aplikacije

• Java Development Kit (JDK) – razvojno okruženje za izgradnju aplikacija, apleta i komponenti koristeći Java programski jezik (u našem slučaju Eclipse). Komponenta u sebi sadrži alate za razvoj i testiranje programa napisanih u Javi. Inače, ovo je komponenta koju Eclipse koristi i bez koje ne bi mogao da funkcioniše

• Icon Workshop – alat za kreiranje programskih ikonica pomoću kojeg su kreirane ikonice za deo programskog okruženja koji prikazuje rad mravljeg sistema

Detaljniji opisi korišćenih programa se mogu naći u poglavlju 6 (prilozi).

4.2. Delovi biblioteke Nakon inicijalizacije mravljeg sistema on može početi sa radom. U daljem tekstu ćemo se pozabaviti svakim delom sistema i njegovom ulogom u sistemu u toku rada. Delovi mravljeg sistema su navedeni po abecednom redosledu.

AntSystem - predstavlja vezu svih ostalih delova sistema, pokreće se prvi i zadužen je za komunikaciju biblioteke sa drugim programom radi prikaza rezultata rada i radi upravljanja radom mravljeg sistema (u našem slučaju sa pomoćnom aplikacijom AntSystemGUI.jar). AntSystem na osnovu zadatih parametara mravljeg sistema kreira po jednog novog mrava u svakom čvoru u određenim vremenskim intervalima i pušta ih da se samostalno kreću po mreži. Takođe ima zadatak da prati njihov broj radi eventualnog prekida rada algoritma.

Page 62: Miljan Radovic - Diploma Work

52

AntNest - koriste mravi radi dobijanja potrebnih informacija o tome iz kojeg će čvora krenuti, koji će čvor biti sledeći u njihovom putu, koliko pojačanje/smanjenje da primene na neki čvor, itd a u isto vreme je zadužen i za ažuriranje tabela rutiranja svih čvorova u mreži. (U isto vreme ažuriraju se i pomoćne strukture mravljeg sistema: LocalTrafficStatistic i RandomDestinationNodeChooser). U suštini, AntNest izvršava računsku logiku celog mravljeg sistema.

Ant – predstavlja slobodnog agenta realizovanog kao programsku nit. Kao što smo rekli, oni predstavljaju suštinu mravljeg sistema i od njih, u velikoj meri, zavisi rad mravljeg sistema.

LocalTrafficStatistic – predstavlja strukturu, koju poseduje svaki čvor, u kojoj se pamte putevi od posmatranog do svih ostalih čvorova, beleže najbolja vremena, računaju razlike među dobijenim vremenima od mrava, prosečna vremena itd. Ta vremena se koriste pri ažuriranju tabela rutiranja.

Matrix –struktura matrice koja je modifikovana za specifične operacije koje se koriste u algoritmu kao što su proširivanje matrice, brisanje celih kolona i vrsta, kao i druge specifične operacije.

Network – pomoćna struktura koja sadrži definiciju posmatrane mreže: rutere, veze među njima kao i težine a takođe poseduje specijalizovane metode prilagođene potrebama sistema.

Parameters – predstavlja strukturu koja sadrži vrednosti parametara sistema koji se u njemu primenjuju.

Path – je struktura koja predstavlja put (putanju). Koristi je mrav radi pamćenja puta (i vremena) koji je prošao.

RandomDestinationNodeChooser – prilikom odabiranja odredišnog čvora mrava koristi se random generator brojeva koji može neke čvorove više da forsira od drugih. Da se to ne bi dešavalo koristi se ova struktura koja je detaljnije objašnjena u poglavlju 3.3.5.

RoutingTable - predstavlja tabele rutiranja i to potpuno iste onakve kakve su i kod pravih rutera. Struktura je, dakle, ista kao i ona predstavljena na slici 1.6 (pa je nećemo ponovo predstavljati) tako da se tabela rutiranja dobijena kao rezultat rada mravljeg sistema može lako „prekopirati“ u pravi ruter mreže za koju se vrše računanja.

4.3. Povezivanje biblioteke sa programskim okruženjem

Kao zadatak diplomskog rada definisano je da se specificira i implementira programsko okruženje za analizu procesa rutiranja. Realizovano rešenje se sastoji iz dva dela: prvog, koji izvršava logiku mravljeg algoritma i drugog koji koristi prvi deo, upravlja njegovim radom i prikazuje rezultate njegovog rada. Dakle, pošto prvi deo (logika mravljeg sistema) sam za sebe ne znači mnogo jer ne možemo videti rezultate njegovog rada, potrebno je bilo implemetirati i drugi

Page 63: Miljan Radovic - Diploma Work

53

deo programskog okruženja koji će upravo to omogućiti. Inače, ova dva dela sistema su međusobno nezavisna.

Da bi se deo koji izvršava logiku mravljeg sistema povezao sa delom koji će vršiti grafički prikaz (dve zasebne jar biblioteke) potrebno je jar fajl prvog dela ubaciti u build path drugog dela, uključiti je u projekat (import funkcijom) i inicijalizovati unutar istog na sledeći način: …

AntSystem antSystem = new AntSystem(

int[][] matricaPrelaza, Parameters parametri);

Pretpostavka je da su ulazni parametri matricaPrelaza i parametri inicijalizovani. Dalje se inicijalizovani mravlji sistem koristi kao i svaka druga klasa u Javi pozivom metoda koje su predstavljene u poglavlju 3.4: antSystem.Start();

antSystem.setNetwork(int[][] newNetwork);

antSystem.setParameters(Parameters newParameters);

antSystem.Pause(true);

...

4.4. Programsko okruženje Kao što smo i ranije pomenuli, realizovano rešenje se sastoji iz dva dela. U daljem tekstu predstavićemo izgled dela za grafički prikaz rada mravljeg sistema imajući na umu da sve što se prikazuje na panelima ovog dela programskog okruženja, a tiče se mravljeg sistema, proizilazi od dela koji izvršava logiku mravljeg sistema.

4.4.1. Glavni prozor Pokretanjem programskog okruženja pojavljuje se njegov glavni prozor čiji izgled je dat na slici 4.1. On se sastoji iz sledećih celina:

• Glavni meni (main menu) • Paleta sa alatkama (toolbar) • Radna površina (work area) • Bočna paleta sa alatkama (side toolbar) • Površina za ispis informacija o izvršavanju mravljeg algoritma

(info log) • Statusna linija (status bar)

Page 64: Miljan Radovic - Diploma Work

54

Slika 4.1 Glavni prozor pomoćne aplikacije

4.4.1.1. Glavni meni

Glavni meni se nalazi pri vrhu glavnog prozora i sadrži opcije za pokretanje svih funkcija programskog okruženja. Glavni meni je organizovan u 6 celina koje ćemo u daljem tekstu opisati, nabrojati i navesti čemu služe.

• Program – meni za baratanje sa grafom (mrežom) o Novi – dobija se nova radna površina za prikaz grafa o Snimi – snimanje trenutno prikazanog grafa o Učitaj – učitavanje grafa iz spoljašnje datoteke o Brisanje svih veza – briše sve veze sa trenutno

prikazanog grafa o Podešavanja – pokretanje dijaloga za podešavanje

osnovnih opcija programa (koji će biti opisan u poglavlju 4.4.3.1)

o Izlaz – zatvaranje glavnog prozora • Prikaz – meni za podešavanje prikaza grafa

o Rešetka – prikaz / skrivanje rešetke grafa (koja je na slici 4.1 predstavljena svetlo plavom bojom na radnoj površini)

o ID rutera – prikaz / skrivanje identifikatora rutera (čvora)

o Cena rutera - prikaz / skrivanje cene (težine) rutera o ID veze - prikaz / skrivanje identifikatora veze o Cena veze - prikaz / skrivanje cene veze

Page 65: Miljan Radovic - Diploma Work

55

• Mravlji sistem – meni za upravljanje funkcijama mravljeg sistema

o Start – pokretanje mravljeg algoritma o Pauza – pauziranje mravljeg algoritma o Stop – zaustavljanje mravljeg algoritma o Reset – resetovanje mravljeg algoritma o Podešavanja – pokretanje dijaloga za podešavanje

parametara mravljeg sistema (koji će biti opisan u poglavlju 4.4.3.2)

• Statistike – meni za prikaz statistika programa i algoritma o Matrica prelaza – pokretanje dijaloga za prikaz matrice

prelaza grafa (koji će biti opisan u poglavlju 4.4.2.1) o Mravi u sistemu - pokretanje dijaloga za prikaz svih

mrava u sistemu (koji će biti opisan u poglavlju 4.4.2.2)

o Tabele rutiranja i statistike saobraćaja - pokretanje dijaloga za prikaz tabela rutiranja i statistika saobraćaja (koji će biti opisan u poglavlju 4.4.2.3)

• Log – meni za kontrolu površine za ispis informacija o Početak – pomeranje na početak log-a o Snimi – snimanje log-a o Obriši – brisanje log-a (brisanje teksta ne datoteke u

koju je eventualno snimljen neki log) o Kraj – pomeranje na kraj log-a o Automatski skroluj – izbor automatskog pomeranja

log-a na kraj ispisa koji algoritam u toku rada menja • Pomoć – meni za pomoć

o O programu – osnovne informacije o programu

4.4.1.2. Paleta sa alatkama

Paleta sa alatkama sadrži najčešće upotrebljavane opcije iz glavnog menija radi njihovog bržeg i jednostavnijeg korišćenja. Izgled palete sa alatkama je prikazan na slici 4.2.

Slika 4.2 Izgled palete sa alatkama

Sve prikazane alatke su prečice do opcija iz glavnog menija osim alatke koja se nalazi izdvojena na desnoj strani i predstavlja indikator statusa mravljeg algoritma. U tabeli 4.1 su prikazana moguća stanja algoritma sa objašnjenjima. Napomenimo da se detaljnije informacije o stanju algoritma (kada je pokrenut) mogu naći u statusnoj liniji (poglavlje 4.4.1.6).

Page 66: Miljan Radovic - Diploma Work

56

Stanje (lampica) Objašnjenje stanja algoritma Ni jedna Nije inicijalizovan Crveno Izvršavanje samostartujućih akcija

Žuto Prazan hod Zeleno Generisanje mrava

Tabela 4.1 Objašnjenje stanja mravljeg algoritma

4.4.1.3. Bočna paleta sa alatkama

Bočna paleta sa alatkama se nalazi u levom delu glavnog prozora a aktivira se kada se mišem dođe iznad panela na kojem je vertikalno ispisno Paletka. Ona sadrži alate za kreiranje, modifikaciju i brisanje mreže koja će nam služiti kao reprezent prave mreže. Izgled bočne palete (nakon njenog prikaza) prikazan je na slici 4.3.

Slika 4.3 Izgled bočne palete sa alatkama

Graf može da se nalazi u jednom od 3 stanja koje zavisi od izabrane opcijesa palete sa alatkama:

• Izbor (selekcija) komponente • Veza • Ruter

Kada je u stanju selekcije tada je moguće odabrati neku komponentu sa radne površine i vršiti modifikaciju nad njom ili brisanje. U ovom stanju dok se ne izabere neka komponenta nema dodatnih opcija.

U stanju dodavanja veze vrši se dodavanje nove veze između dva postojeća rutera na mreži a u stanju dodavanja rutera vrši se postavljanje novog rutera na mrežu. U ovim stanjima pojavljuju se dodatne opcije prikazane sa slici 4.4. Vidimo da kada se dodaje veza imamo opciju podešavanja težina na početnom i krajnjem ruteru a kod dodavanja rutera imamo opciju podešavanja težine samog rutera. Opcijom Nas. (nasumično) sistem bira nasumično (random) odabrane vrednosti ovih težina pri dodavanju komponente na radnu površinu.

Na slici vidimo i neke opcije koje nisu omogućene. To su opcije koje se pojavljuju kada korisnik izabere već postojeću vezu ili ruter na radnoj površini i želi da radi modifikaciju. Te opcije su prikazane crvenim brojevima na slici 4.5.

Page 67: Miljan Radovic - Diploma Work

57

Slika 4.4 Dodatne opcije bočne palete sa alatkama pri

dodavanju veze tj. rutera

Slika 4.5 Dodatne opcije bočne palete sa alatkama pri

modifikaciji veze tj. rutera

Na slici su prikazane dodatne opcije bočne palete sa alatkama pri modifikaciji odabrane komponente pri čemu su brojevi crvene boje dodati radi lakšeg raspoznavanja nabrojanih komponenti (ne pojavljuju se u programu).

Dodatne opcije pri modifikaciji veze su podešavanje da li je veza aktivna (1), dugme za prihvatanje promena (2) kao i dugme za brisanje izabrane veze (3). Pri modifikaciji rutera to su: dugme za prihvatanje promena (1), dugme za brisanje svih veza izabranog rutera (2) i dugme za brisanje samog rutera (3).

Page 68: Miljan Radovic - Diploma Work

58

4.4.1.4. Radna površina

Radna površina zauzima najveću površinu glavnog prozora i služi za prikaz mreže nad kojom će se primenjivati mravlji algoritam. Koristeći prethodno opisane alate možemo kreirati mrežu ili učitati neku prethodno kreiranu mrežu. Na slici 4.6 imamo prikazanu situaciju kada je na radnoj površini kreirana mreža. Primetimo da je mreža ista kao mreža sa slike 1.5 pri čemu su ovde prikazane i težine među čvorovima.

Slika 4.6 Izgled radne površine sa kreiranom mrežom

Radna površina ima izgled kao sa slike kada smo u fazi izgradnje (podešavanja) mreže tj. kada mravlji sistem nije pokrenut (ili kada mravlji sistem završi sa radom). U toku rada mravi se kreću po mreži i aplikacija vrši njihov prikaz pa se izgled radne površine razlikuje u tome što tada možemo videti mrave u „akciji“, kao na slici 4.7. Aplikacija prikazuje mrave na njihovim trenutnim pozicijama i njihovo trenutno stanje koje je određeno bojom čije značenje je detaljnije objašnjeno u tabeli 4.2.

Boja Tip mrava Tamno plava Forward Svetlo plava Backward

Crvena Forward istraživač Narandžasta Backward istraživač

Crna Mrtav

Tabela 4.2 Značenje boja mrava u sistemu

Page 69: Miljan Radovic - Diploma Work

59

Slika 4.7 Izgled radne površine sa kreiranom mrežom i

pokrenutim mravljim sistemom

4.4.1.5. Površina za ispis informacija

Ovaj deo programa se nalazi između radne površine i statusne linije a služi za ispis informacija koje generiše algoritam u toku svog rada. Algoritam generiše korisne informacije kao što su podaci o generisanju novih mrava, okretanju mrava, ažuriranju rezultata, vrednosti pojačanja i sl. Primetimo da postoji mogućnost da se ove informacije ne ispisuju i to tako što se biblioteci neće proslediti parametar styledDocument na koji se, ustvari, ispisuju ove informacije. Izgled ove površine je prikazan na slici 4.8.

Slika 4.8 Izgled površine za ispis informacija (info log-a)

4.4.1.6. Statusna linija

Statusna linija se nalazi u donjem delu glavnog prozora i sastoji se iz pet celina. Prve tri celine prikazuju statistike rada algoritma (s’ leva): ukupan broj kreiranih mrava, broj trenutno aktivnih mrava u mreži/ trenutno aktivnih + broj „umrlih“ u toku praznog hoda, procenat izvršenja mravljeg algoritma. Primetimo da ukoliko je sistem podešen da radi u beskonačnoj petlji (parametar maxTotalAntsCoefficient = 0) tada će progres bar „šetati“ levo – desno tj. neće biti prikazana nikakva informacija o procentu izvršenja. Četvrta statistika predstavlja trenutno stanje grafa tj. radne površine. (Moguća stanja su opisana u poglavlju 4.4.1.3). Peta statistika predstavlja koordinate kursora kada se nalazi na radnoj

Page 70: Miljan Radovic - Diploma Work

60

površini. Izgled statusne linije u toku rada mravljeg algoritma je prikazan na slici 4.9.

Slika 4.9 Izgled površine za ispis informacija (info log-a)

4.4.2. Statistike Statistike se u programu koriste za praćenje i kontrolu rada mravljeg sistema. Program prikazuje tri vrste statistika mravljeg sistema:

• matrica prelaza • mravi u sistemu • tabele rutiranja i lokalnog saobraćaja

Poslednje navedena statistika je i najbitnija statistika jer nam prikazuje rezultate rada mravljeg sistema: tabele rutiranja i najbolje rezultate. U daljem tekstu ćemo opisati sve tri statistike ponaosob.

4.4.2.1. Matrica prelaza

Matrica prelaza predstavlja reprezent posmatrane prave mreže na algoritmu pojmljiv način. U prvoj vrsti i prvoj koloni nalaze se identifikatori svih čvorova mreže a unutar matrice vrednosti (težine) prelaza između čvorova. Polja obojena plavom bojom predstavljaju kašnjenje samih čvorova mreže. Izgled matrice prelaza je dat na slici 4.10.

Slika 4.10 Izgled dijaloga za prikaz matrice prelaza trenutno

aktivnog grafa

Dijalog poseduje dve opcije za način prikazivanja matrice prelaza i one se nalaze u gornjem delu dijaloga. Prva opcija (Prikazuj -1 za nepostojeći link) prikazuje broj -1 umesto praznih polja koja označavaju da veza između ta dva čvora ne postoji. Druga opcija (Prikazuj 0 cene rutera) služi da prikaže kašnjenje čvorova čak i ukoliko ona ne postoje tj. jednaka su nuli.

Page 71: Miljan Radovic - Diploma Work

61

4.4.2.2. Mravi u sistemu

Dijalog mravi u sistemu nam je daleko bitniji od prethodno opisanog dijaloga matrica prelaza jer sadrži prikaz svih mrava koji se trenutno nalaze u mravljem sistemu. Ova statistika nam je od koristi jer iz nje imamo uvid u stanje svih mrava: polazni i krajnji čvor, prioritet, trenutnu poziciju itd. Izgled ovog dijaloga prikazan je na slici 4.11.

Slika 4.11 Izgled dijaloga za prikaz mrava u sistemu

Kao što vidimo, dijalog nam prikazuje mnogo više informacija o mravu nego što smo gore naveli pa je u tabeli 4.3 dat detaljan pregled svih osobina.

Osobina Značenje ID Jedinstveni identifikator A Mrav je aktivan (Y/N) P Mrav je pauziran (Y/N)

TP Prioritet programske niti (1-10) SRC Početni čvor CUR Trenutna pozicija DLY Pozicija u putu DST Krajnji čvor

E Mrav je istraživač (Y/N) F Mrav je forward (Y/N)

PATH Pređeni put

Tabela 4.3 Objašnjenje osobina mrava

Page 72: Miljan Radovic - Diploma Work

62

Primetimo na desnoj strani dijaloga zbirni pregled koji nam prikazuje ukupan broj trenutno aktivnih, pauziranih, istraživača, forward i backward mrava kao i ukupan broj svih mrava. Napomenimo, takođe, da ovaj dijalog samo predstavlja statistike mrava i da iz ovog dijaloga nije moguće upravljati mravima (npr. dodavati, brisati, menjati putanje i sl.).

4.4.2.3. Tabele rutiranja i statistike saobraćaja

Tabele rutiranja i statistike saobraćaja predstavljaju najznačajnije statistike programa jer nam daju izgled tabele rutiranja oblika kakav je i u stvarnom ruteru i prikaz rezultata rada algoritma, dakle, optimalnih puteva među čvorovima. Izgled dijaloga za prikaz tabela rutiranja i statistika saobraćaja prikazan je na slici 4.12. Dijalog se sastoji od palete sa alatkama (u gornjem delu) i radne površine na kojoj se prikazuju tabela rutiranja i statistike saobraćaja izabranog čvora.

Slika 4.12 Izgled dijaloga za prikaz tabela rutiranja i statistika

saobraćaja odabranih čvorova

Paleta sa alatkama sadrži alate za prikaz željenih statistika. Prva komponenta sa leva je Combo box iz kojeg se može odabrati željeni čvor mreže, dalje slede tri dugmeta od kojih prvo dugme prikazuje statistike odabranog čvora, drugo statistike svih čvorova mreže a treće uklanja sve statistike sa prikaza. Sledeća dva dugmeta su strelice plave boje koje nam služe za sortiranje prikaza statistika i to u rastućem ili opadajućem redosledu. Dalje sledi kontrola (Slider) za podešavanje odnosa prikaza tabela rutiranja i statistika saobraćaja a nakon toga kontrola podešavanja visine statistike svakog čvora ponaosob.

Page 73: Miljan Radovic - Diploma Work

63

Kao što smo rekli, radna površina nam služi za prikaz tabela rutiranja i statistika saobraćaja čvorova koje želimo da posmatramo. Na slici 4.12 je prikazana situacija kada se posmatraju statistike za čvorove 1 i 5. Na levoj strani se nalaze tabele rutiranja a na desnoj statistike saobraćaja. Pošto je izgled i način rada sa tabelom rutiranja već objašnjen u poglavlju 1.1 posvetićemo pažnju prikazu statistika saobraćaja. Kao što vidimo, sistem prati ukupno šest statistika koje su navedene u tabeli 4.4.

Osobina Značenje DST Odredište AVG Prosečno vreme do čvora VAR Razlika u vremenu do čvora BTE Najbolje vreme ikada BTW Najbolje vreme u prozoru DIF Razlika između BTW i BTE

PATH Najbolja (najoptimalnija) putanja

Tabela 4.4 Objašnjenje osobina statistika saobraćaja

Dakle, za izabrani čvor, pored tabele rutiranja koja služi za konfigurisanje rutera, prikazuju se i statistike saobraćaja koje nam daju vizuelnu informaciju koji su to optimalni putevi i kolika su kašnjenja od posmatranog početnog do željenog odredišnog čvora.

4.4.3. Podešavanja Kao što svaka iole kvalitetnija aplikacija ima neku vrstu podešavanja tako je slučaj i sa našim programskim okruženjem. U nastavku ćemo predstaviti jedine dve vrste podešavanja: programa i parametara mravljeg sistema.

4.4.3.1. Podešavanja programskog okruženja

Podešavanja programskog okruženja dobijamo pokretanjem novog dijaloga koji je prikazan na slici 4.13.

Slika 4.13 Izgled dijaloga za podešavanje parametara

programskog okruženja

Page 74: Miljan Radovic - Diploma Work

64

Primećujemo da se nije poklanjala velika pažnja podešavanjima programskog okruženja već su implementirana samo ona koja su neophodna za njegovo funkcionisanje. Vidimo da su podešavanja vrlo jednostavna i tiču se vremenskog intervala osvežavanja prikaza mrava i svih statistika.

4.4.3.2. Podešavanja mravljeg sistema

Podešavanja mravljeg sistema su u mnogome bitnija od podešavanja programskog okruženja jer pravilno podešeni parametri mravljeg sistema u odnosu na posmatranu mrežu dovode do kvalitetnih (optimalnih) rešenja u kraćem vremenskom intervalu dok loše podešeni parametri mogu čak da dovedu do toga da se nikad ni ne dođe do optimalnog rešenja.

Slika 4.14 Izgled dijaloga za podešavanje ulaznih parametara

mravljeg sistema

Na slici 4.14 prikazan je izgled dijaloga za podešavanje parametara mravljeg sistema. Dijalog poseduje mogućnost podešavanja svih parametara navedenih u poglavlju 3.3.1.2 dok parametar styledDocument nema podešavanja jer se ipak više tiče komunikacije između dva dela programa nego radom mravljeg sistema.

Primetimo da se parametri mravljeg sistema mogu menjati u bilo kom trenutku: kako pre tako i nakon pokretanja algoritma.

Page 75: Miljan Radovic - Diploma Work

65

4.5. Bitniji delovi programskog koda U nastavku teksta biće prikazana implementacija programskog koda nekih najbitnijih metoda mravljeg sistema. Bavićemo se samo bibliotekom koja izvršava rad mravljeg sistema dok se okruženjem nećemo baviti. Klase će biti navedene abecednim redosledom a metode hronološki tj. po vremenu izvršavanja.

4.5.1. Ant

4.5.1.1. Ant.run()

Ovom metodom je predstavljeno šta radi mrav kada se pokrene. Iz programskog koda se može videti na mrav izvršava metodu korak unapred dok je forward mrav a kada „postane“ backward tada izvršava metodu korak unazad. Ove dve metode će biti objašnjene nakon metode run(). public void run()

while (this.active)

if (this.stop == false)

if (forward)

this.StepForward();

if (!forward)

this.StepBackward();

try

Thread.sleep(this.delay);

catch (InterruptedException e)

e.printStackTrace();

4.5.1.2. Ant.StepForward()

Ovo je metoda koja predstavlja jedan korak mrava unapred. Metoda se koristi kada je mrav forward i služi za „usmeravanje kretanja“ mrava kroz mrežu kao i za kontrolu rada mrava tj. provere da li je mrav prekoračio neka ograničenja i, ukoliko jeste, odluka o tome da li da nastavi ili prekine sa radom. private void StepForward()

do

// Ukoliko mrav ne čeka u čvoru ili vezi tada

treba odrediti šta dalje

if (this.nodeDelay == -1 && this.linkDelay == -1)

this.currentNode = this.nextNode;

this.path.Add(this.currentNode, this.timeElapsed);

Page 76: Miljan Radovic - Diploma Work

66

// Petlja

if (this.params.isLoopDetection() &&

this.path.HasLoop())

if (this.params.isAntDieOnLoop())

this.Die(-2);

else

this.loopDetected = true;

this.lastLoopNodeSkipped = false;

// Okrenemo mrava

this.Reverse();

// Premasen max broj skokova (hops)

else if (this.params.getMaxHopsCoefficient() !=

0.0 && this.path.getHops() >

(int) (this.nest.getNodeCount() *

params.getMaxHopsCoefficient()))

this.Die(-3);

// Premašeno maksimalno vreme življenja

else if (this.params.getMaxAntAge() != 0 &&

this.timeElapsed > this.params.getMaxAntAge())

this.Die(-4);

if (this.forward && this.isActive())

// Ukoliko je mrav stigao do odredišnog čvora

tada završava sa traženjem puta i "postaje"

backward mrav

if (this.currentNode == this.destinationNode)

// Postavlja kašnjenje čvora na 0 što znači

da čvor treba da izbaci mrava unazad tj.

mrav postaje backward i počinje da se

vraća unazad

// Postavimo se na pretposlednji čvor u putu

this.path.currentIndex--;

this.nextNode = this.path.getCurrentNodeId();

// Kašnjenje pri povratku

this.nodeDelay = 0;

this.linkDelay = 0;

// Okrećemo mrava

this.Reverse();

else

// Ako nije došao do odredišnog čvora tada

treba da traži sledeći čvor na koji će

"skočiti"

this.nextNode = this.nest.ChooseNextNode(

this.currentNode, this.destinationNode,

this.explorer);

// ukoliko nema sledećeg čvora (tj. ne postoji

veza) tada mrav umire

Page 77: Miljan Radovic - Diploma Work

67

if (this.nextNode == -1)

this.Die(-5);

// Kašnjenje sledećeg čvora i veze

this.nodeDelay = 0;

this.linkDelay = 0;

while (this.isActive() &&

this.forward && ProgressAnt());

4.5.1.3. Ant.StepBackward()

Ovo je metoda koja predstavlja jedan korak mrava unazad. Metoda se koristi kada je mrav backward i samim tim služi za kretanje mrava unazad do početnog čvora. private void StepBackward()

boolean mandatory = false;

do

if (this.nodeDelay == -1 && this.linkDelay == -1)

if (this.loopDetected &&

!this.lastLoopNodeSkipped)

// Obrišemo poslednji čvor (koji je i izazvao

petlju)

this.lastLoopNodeSkipped = true;

this.nodeDelay = 0;

this.linkDelay = 0;

this.nextNode = this.path.getNodeIdAt(

this.path.currentIndex);

this.destinationNode = this.nextNode;

else

this.currentNode = this.nextNode;

Path tempPath = new Path();

tempPath = this.path.getSubPath(

this.currentNode, this.destinationNode);

mandatory =

(this.path.currentIndex == 0) ? true : false;

this.nest.UpdatePath(tempPath, mandatory);

// Pomerimo se na sledeći čvor unazad

this.path.currentIndex--;

if (this.path.currentIndex < 0)

this.path.currentIndex = 0;

this.Die(0);

this.nextNode = path.getCurrentNodeId();

// Kašnjenje čvora i veze

Page 78: Miljan Radovic - Diploma Work

68

this.nodeDelay = 0;

this.linkDelay = 0;

while (this.isActive() && ProgressAnt());

4.5.2. AntNest

4.5.2.1. AntNest.ChooseNextNode(...)

Ova metoda nam otkriva implementaciju dela sistema koji koristi mrav radi dobijanja informacije koji sledeći čvor da izabere. public int ChooseNextNode(int nodeId, int destNodeId,

boolean explorer)

double[][] probabilitiesForDest;

double probSum, random;

probabilitiesForDest = this.getRoutingTable(nodeId)

.getProbabilitiesForDest(destNodeId);

// ukoliko čvor ima susedni

if (probabilitiesForDest != null)

if (explorer)

// Ukoliko je mrav istraživač (explorer) tada na

// njegovu odluku o izboru sledećeg čvora ne utiču

// verovatnoće iz tabele rutiranja već svaki

// susedni čvor ima podjednaku šansu da bude

// izabran tako da je potrebno izjednačiti sve

// verovatnoće

for (int i = 0; i < probabilitiesForDest[0].

length; i++)

probabilitiesForDest[1][i] = 1.0 /

probabilitiesForDest[0].length - 1;

// vršimo transformaciju (primer):

// IZ

// node: 1 2 3 4

// prob: 1/7 3/7 2/7 1/7

// U

// node: 1 2 3 4

// prob: 1/7 4/7 6/7 1

probabilitiesForDest[1]

[probabilitiesForDest[0].length - 1] = 1;

for (int i = probabilitiesForDest[0].

length - 2; i >= 0; i--)

probSum = 0.0;

Page 79: Miljan Radovic - Diploma Work

69

for (int j = 0; j <= i; j++)

probSum += probabilitiesForDest[1][j];

probabilitiesForDest[1][i] = probSum;

// Generišemo pseudoslučajni broj [0-1) i vidimo

// kojem opsegu pripada

random = Math.random();

int i = 0;

while (random > probabilitiesForDest[1][i])

i++;

return (int) probabilitiesForDest[0][i];

return -1;

4.5.2.2. AntNest.getReinforcement()

Ovo je metoda koja mravu, na osnovu prosleđenih podataka o početnom (tj. trenutnom, pošto se mrav kreće od krajnjeg prema početnom unazad) i krajnjem čvoru kao i o dužini pređenog puta, daje podatak o tome koliko pojačanje treba da primeni na čvoru na kojem se trenutno nalazi. public double getReinforcement(int sourceNodeId,

int destNodeId, int tripTime)

double reinforcement = 0.0;

double average =

this.getLocalTrafficStatistic(sourceNodeId)

.getAverageTime(destNodeId);

double variance =

this.getLocalTrafficStatistic(sourceNodeId)

.getVarianceTime(destNodeId);

double Wbest =

this.getLocalTrafficStatistic(sourceNodeId)

.getBestTimeInWindow(destNodeId);

double z = params.getZetaConfidenceLevel();

double c2 = params.getTimeWeight();

double c1 = 1.0 - c2;

double Isup = 0.0;

int T = tripTime;

int windowSize =

this.getLocalTrafficStatistic(sourceNodeId)

.getWindowSize();

if (average > Wbest)

Isup = average + z * (variance /

Page 80: Miljan Radovic - Diploma Work

70

Math.sqrt((double) windowSize));

else

Isup = Wbest + z * (variance /

Math.sqrt((double) windowSize));

double Iinf = Wbest;

double currentTimeToBestRatio = ((Wbest / T));

double stabilityOfCurrentValue = (Isup - Iinf) /

((Isup - Iinf) + (T - Iinf));

double r = c1 * currentTimeToBestRatio +

c2 * stabilityOfCurrentValue;

reinforcement = SquashedReinforcement(

sourceNodeId, r, true);

if (reinforcement <= 0.0)

try

throw new Exception(

"Vrednost pojačanja r=" + reinforcement +

" je manja od nule!");

catch (Exception e)

e.printStackTrace();

if (reinforcement > this.params.

getMaxReinforcement())

reinforcement = this.params.

getMaxReinforcement();

return reinforcement;

4.5.2.3. AntNest.UpdatePath(…)

Metoda se koristi za ažuriranje tabele rutiranja i statistika saobraćaja čvora na kojem se mrav trenutno nalazi na osnovu puta koji je mrav prešao. Parametar mand (mandatory) predstavlja podatak da li je ažuriranje obavezno čak i ako je putanja loša koje se koristi samo kada se ažuriranje vrši između početnog i krajnjeg čvora (ne između čvorova posrednika). public void UpdatePath(Path p, boolean mand)

Path path = p, subPath;

boolean mandatory;

int source, dest;

path.currentIndex = 0;

Page 81: Miljan Radovic - Diploma Work

71

for (int i = 0; i < path.getNodesCount() - 1; i++)

source = path.getNodeIdAt(i);

for (int j = i + 1; j < path.getNodesCount(); j++)

dest = path.getNodeIdAt(j);

// Obavezan update

if (i == 0 &&

j == path.getNodesCount() - 1 && mand)

mandatory = mand;

else

mandatory = false;

subPath = path.getSubPath(source, dest);

if (this.UpdateLocalTrafficStatistic(

source, dest, subPath, mandatory))

int neighborNodeId = subPath.getNodeIdAt(1);

double reinf = this.getReinforcement(

source, dest, subPath.getTotalElapsedTime());

// Update Routing Table ako je LTS updated

this.UpdateRoutingTable(

source, neighborNodeId, dest, reinf);

else

this.params.printlnToConsole(

"Rezultat računanja podputanje " +

subPath.toString() +

" je loš, računanje se ne radi!");

4.5.3. AntSystem

4.5.3.1. AntSystem.Pause(...)

Pauziranje mravljeg sistema sa odlukom o nastavku ili pauziranju rada mrava. public void Pause(boolean pauseAnts)

this.paused = true;

if (pauseAnts)

this.setAntsAreStopped(true);

this.nest.getParams().printlnToConsole(

"Mravlji sistem je pauziran.");

Page 82: Miljan Radovic - Diploma Work

72

4.5.3.2. AntSystem.Reset()

Metoda se koristi za resetovanje stanja mravljeg sistema: poništavanje rezultata rada i ubijanje svih mrava pri čemu sistem nastavlja sa radom. public void Reset()

this.Stop();

this.antsBuffer.removeAllElements();

this.antsGenerated = 0;

this.nest.Reset();

4.5.3.3. AntSystem.run()

U nastavku teksta biće opisana metoda koja vrši kreiranje i raspoređivanje novih mrava po čvorovima u određenim vremenskim intervalima i koja kontroliše njihov broj da bi se, eventualno, prekinulo sa radom. public void run()

int limitAnts;

while (true)

if (this.stopped == false && this.paused == false)

this.systemState = 1;

limitAnts = this.nest.getParams().

getMaxTotalAntsCoefficient() *

nest.getNodeCount();

int[] nodes = nest.getAllNodes();

// Ako nije prekoračen maksimalan broj

// aktivnih mrava

if (ActiveAntsCount() + nodes.length <=

this.nest.getParams().

getMaxActiveAntsCoefficient() *

nest.getNodeCount())

for (int i = 0; i < nodes.length; i++)

// Provera da li je prekoračen maksimalan broj

// generisanih mrava

if (limitAnts != 0 && this.antsGenerated >=

limitAnts)

this.Pause(false);

this.nest.getParams().printlnToConsole(

"# Prekoračen je maksimalan broj

generisanih mrava! Generisanje se

prekida!");

break;

Page 83: Miljan Radovic - Diploma Work

73

// Ako nije: kreiramo novog mrava!

Ant ant = new Ant((int) this.antsGenerated,

nodes[i], nest, this.nest.getParams());

ant.setPriority(this.nest.getParams()

.getAntThreadPriority());

// Pokretanje kreiranog mrava

ant.start();

this.antsBuffer.add(ant);

this.antsGenerated++;

if (this.antsGenerated < 0)

this.antsGenerated = 0;

if (limitAnts != 0)

this.percentageDone =

(this.antsGenerated * 100) / limitAnts;

this.systemState = 2; // daemon actions

this.RemoveInactiveAnts();

if(this.nest.getParams().isElitistStrategy())

this.nest.ElitistStrategy();

this.systemState = 0; // idle

try

Thread.sleep(this.nest.getParams().

getAntGenerationTime());

catch (InterruptedException e)

e.printStackTrace();

4.5.3.4. AntSystem.setNetwork(…)

Sledeća metoda se koristi za izmenu strukture mreže. Takođe se vrši provera i ažuriranje mrava ukoliko su koristili putanje koje više ne postoje. public void setNetwork(int[][] newData)

boolean systemWasStarted = false;

// Zapamti stanje sistema i pauziraj ga ukoliko radi

if (this.started == true)

systemWasStarted = true;

this.Pause(true);

// Primeni promene

Page 84: Miljan Radovic - Diploma Work

74

Vector[] changes = this.nest.setNetwork(newData);

// Pobij sve mrave koji sadrže obrisane čvorove

// (početne, čvorove u putu ili odredišne)

for (int i = 0; i < this.antsBuffer.size(); i++)

if (((Ant) this.antsBuffer.elementAt(i)).

HasInPath(changes[0]))

((Ant) this.antsBuffer.elementAt(i)).Die(-6);

// Ponovo pokreni sistem ukoliko je radio

if (systemWasStarted)

this.Start();

4.5.3.5. AntSystem.setParameters(…)

Metoda vrši izmenu parametara mravljeg sistema. public void setParameters(Parameters params)

this.nest.setParams(params);

for (int i = 0; i < this.antsBuffer.size(); i++)

((Ant) this.antsBuffer.elementAt(i)).

setParams(params);

4.5.3.6. AntSystem.Start()

Metoda koja služi za pokretanje mravljeg sistema. public void Start()

// Sistem nije pokrenut ni jedanput

if (!this.started)

this.start();

this.started = true;

this.nest.getParams().printlnToConsole(

"Mravlji sistem je pokrenut.");

else if (this.started)

this.nest.getParams().printlnToConsole(

"Mravlji sistem je nastavio sa radom.");

this.setAntsAreStopped(false);

this.stopped = false;

this.paused = false;

4.5.3.7. AntSystem.Stop()

Predstavljena metoda se koristi za zaustavljanje mravljeg sistema i prekid rada mrava. public void Stop()

Page 85: Miljan Radovic - Diploma Work

75

this.stopped = true;

this.setAntsAreActive(false);

if (this.nest.getParams().

getMaxTotalAntsCoefficient() != 0)

this.percentageDone = 0;

else

this.percentageDone = -1;

this.antsBuffer.removeAllElements();

// this.nest.Reset();

this.nest.getParams().printlnToConsole(

"Mravlji sistem je zaustavljen.");

4.5.4. LocalTrafficStatistics

4.5.4.1. LocalTrafficStatistics.Update(...)

Ovo je metoda koja služi za ažuriranje statistika saobraćaja izabranog čvora. public synchronized boolean Update(int destNodeId,

Path path, boolean mandatory)

int pathTime = path.getTotalElapsedTime();

int nodeIndex = getNodeIndex(destNodeId);

int windowIndex =

ReserveWindowIndexForNode(destNodeId);

double average = ((Double) this.averageTime.elementAt(

this.getNodeIndex(destNodeId))).doubleValue();

double variance =

((Double) this.varianceTime.elementAt(

this.getNodeIndex(destNodeId))).doubleValue();

int Wbest =

((Integer) this.bestTimeInWindow.elementAt(

nodeIndex)).intValue();

double Isup = (average > Wbest) ? average : Wbest;

Isup += params.getZetaConfidenceLevel() *

(variance / Math.sqrt(1.0 /

params.getExpMeanCoefficient() * 5));

double diff;

// Radimo update LTS-a samo ukoliko je put dobar tj.

unutar granica poverenja ili ako je to obavezno tj.

odredišni čvor je poslednji čvor u celom putu

if (mandatory == true || (double) pathTime < Isup

|| (average == 0.0 && variance == 0.0))

// Računanje prosečnog vremena

diff = pathTime - average;

average += params.getExpMeanCoefficient() * diff;

Page 86: Miljan Radovic - Diploma Work

76

this.averageTime.setElementAt(new Double(average),

this.getNodeIndex(destNodeId));

// Računanje odstupanja u vremenu

variance += params.getExpMeanCoefficient() *

(Math.abs(diff) - variance);

this.varianceTime.setElementAt(new Double(variance),

this.getNodeIndex(destNodeId));

// Dodajemo put

this.windowData.set(windowIndex, nodeIndex, path);

// Ukoliko je vreme putanje bolje od dosadasnjeg

najboljeg vremena

if (pathTime < ((Integer) this.bestTimeEver.

elementAt(nodeIndex)).intValue())

this.bestTimeEver.setElementAt(

new Integer(pathTime), nodeIndex);

// Računanje najboljeg vremena u prozoru

Wbest = Integer.MAX_VALUE;

for (int i = 0; i < this.windowSize; i++)

if (this.windowData.get(i, nodeIndex) != null)

if (((Path) this.windowData.get(i, nodeIndex))

.getTotalElapsedTime() < Wbest)

Wbest = ((Path) this.windowData.get(

i, nodeIndex)).getTotalElapsedTime();

this.bestTimeInWindow.setElementAt(

new Integer(Wbest), nodeIndex);

this.notify();

return true;

return false;

4.5.5. RoutingTable

4.5.5.1. RoutingTable.Update(...)

Ovo je metoda koja služi za ažuriranje tabele rutiranja izabranog čvora. public synchronized void Update(int neighborNodeId,

int destNodeId, double reinf)

double probability, newProbability;

int indexOfDest = IndexOfDestNode(destNodeId);

int indexOfNeighbor =

Page 87: Miljan Radovic - Diploma Work

77

IndexOfNeighborNode(neighborNodeId);

for (int i = 1; i < this.data.getCols(); i++)

probability = ((Double)

this.data.get(indexOfDest, i)).doubleValue();

if (i != indexOfNeighbor)

// smanjujemo

newProbability =

probability - reinf * probability;

else

// pojačavamo

newProbability =

probability + reinf * (1 - probability);

this.data.set(indexOfDest, i,

new Double(newProbability));

if (this.params.

getMaxRoutingTableProbability() != 1.0)

this.LimitProbabilityAndEqualize(destNodeId);

this.params.printlnToConsole("Od [" + this.getId() +

"] do [" + destNodeId + "] preko [" +

neighborNodeId + "] ažurirano sa pojačanjem = " +

reinf);

this.notify();

Page 88: Miljan Radovic - Diploma Work

78

Page 89: Miljan Radovic - Diploma Work

79

5. ZAKLJUČAK U radu je dat prikaz osnovnih mravljih algoritama. Analizirane su mogućnosti primene pristupa baziranog na mravljim algoritmima na rutiranje u mreži. Na osnovu rezultata analize, odabran je model algoritma za problem TSP i modifikovan tako da zadovolji specifičnosti zadatka rutiranja na računarskoj mreži. Specificirano je i implementirano softversko okruženje za praktičnu obuku studenata koje omogućuje analizu procesa rutiranja na različitim računarskim mrežnim strukturama i za različite parametre mravljeg algortima. Za specifikaciju je korišćen objektni pristup i UML metodologija. Implementacija sistema izvršena je na Java platformi.

Sistem podržava sledeće osnovne funkcije: • Inicijalizacija mravljeg sistema koja se sastoji u tome da mu se

proslede dva ulazna parametra: struktura mreže i parametri mravljeg algoritma

• Početno raspoređivanje mrava po čvorovima mreže, gde se, na osnovu zadatih parametara mravljeg sistema, generiše po jedan novi mrav na svakom čvoru mreže i podešava mu se prioritet

• Rad mrava u sistemu koji obuhvata ponašanje mrava od trenutka njegovog kreiranja do trenutka prestanka rada

• Podrška funkcijama korišćenja i modifikacije deljenih numeričkih informacija o mreži u kojoj se mravi kreću U osnovnom tekstu rada, u poglavlju 2.4, navedena su neka

od mogućih poboljšanja mravljeg algoritma. Realizovani algoritam podržava jedno od navedenih poboljšanja: strategiju elite. Algoritam poseduje još jedno poboljšanje koje je predstavljeno u poglavlju 3.3.3 a tiče se načina kretanja mrava, tačnije, načina na koji mrav reaguje na petlju u putu. U daljem tekstu ćemo razmatrati moguća poboljšanja koja u implementiranom sistemu nisu realizovana.

Odredišni čvor za mrava koji je kreiran i počinje obilazak mreže bira se nasumično (videti poglavlje 3.3.5). Tako odabran čvor može se nalaziti „daleko“ (po pitanju broja skokova) od posmatranog početnog čvora i pošto na početku rada mravi nemaju nikakve podatke tj. nikakvo znanje o topologiji mreže, kreću u obilazak mreže i dolaze do generalno loših rešenja. Kako vreme odmiče mravi dobijaju „uvid“ u topologiju mreže i dolaze do optimalnih rešenja. Jedno od poboljšanja koje bi doprinelo efektivnijem izvršavanju algoritma bilo bi da na početku rada algoritam generiše mrave čiji će odredišni čvor biti susedni čvor posmatrnog čvora tj. da maksimalni broj skokova na početku bude jednak 1 i da algoritam postepeno to ograničenje povećava kako mravi stiču iskustvo.

Aplikacija nema mogućost dodavanja tzv. plug-in-ova tako da bi se sve eventualne izmene na sistemu vršile direktno u izvornom kodu što u nekim situacijama i primenama nije dobro tako da bi se aplikacija mogla preraditi da podrži i plug-in-ove.

Page 90: Miljan Radovic - Diploma Work

80

Page 91: Miljan Radovic - Diploma Work

81

6. PRILOG

6.1. Skraćenice Skr. Pun naziv Objašnjenje

AC Ant Cycle Jedan od tri algoritma iz prvobitnog

algoritma mravlji sistem koji je kasnije preimenovan u AS

ACS Ant Colony System Sistem koji koristi metode mravlje

kolonije

AD Ant Density Jedan od tri algoritma iz prvobitnog

algoritma mravlji sistem

ACO Ant Colony

Optimization Način optimizacije korišćenjem

mravljeg algoritma AS Ant System Mravlji sistem

AQ Ant Quantity Jedan od tri algoritma iz prvobitnog

algoritma mravlji sistem

BA Backward Ant

Oznaka za mrava koji se kreće od krajnjeg do početnog čvora i pritom ažurira tabele rutiranja čvorova kroz

koje se vraća

EC Evolutionary Computation

Evoluciono računanje

FA Forward Ant Oznaka za mrava koji se kreće od početnog i traži put do krajnjeg

čvora

GUI Graphic User

Interface

Grafički korisnički interfejs – predstavlja spregu korisnika sa programom na čoveku pojmljiv

način (slikama i simbolima)

JSP Job-Shop Scheduling

Planiranje poslova (jedan od problema optimizacije koji se može

rešavati primenom mravljeg sistema)

Page 92: Miljan Radovic - Diploma Work

82

LTS LocalTrafficStatistic

Statistike saobraćaja – predstavlja pomoćnu aplikaciju mravljeg

sistema zaduženu za pamćenje rezultata rada mrava a u cilju

računanja potrebnih pojačanja koja će se primeniti

NR Network Routing

Mrežno rutiranje (jedan od problema optimizacije koji se može rešavati

primenom mravljeg sistema) a ovde je i tema diplomskog rada

QAP Quadric Assignment

Problem

Problem kvadratne raspodele (jedan od problema optimizacije koji se

može rešavati primenom mravljeg sistema)

RDNC RandomDestination-

NodeChooser

Nasumični birač odredišnih čvorova – pomoćna aplikacija koja se koristi

kod biranja odredišnog čvora pri kreiranju mrava

TSP Travelling Salesman

Problem

Problem trgovačkog putnika (jedan od problema optimizacije koji se

može rešavati primenom mravljeg sistema)

UML Unified Modeling

Language Opšti jezik za modelovanje

VE Visual Editor

Vizuelni editor – alat kojim se korisnički interfejs (GUI) kreira preko za to predviđenog GUI-ja

ponuđenog alata, ne kucanjem koda

Tabela 6.1 Korišćene skraćenice

6.2. Korišćeni alati U razvoju diplomskog rada korišćeni su sledeći alati:

• Power Designer

o Autor: Sybase o Verzija: 11.0.0.1363 o Godina: 2004

Page 93: Miljan Radovic - Diploma Work

83

Slika 6.1 Sybase Power Designer

• Eclipse

o Autor: Eclipse Contributors and others o Verzija: 3.2.1 o Godina: 2006

Slika 6.2 Eclipse

• Java Development Kit

o Autor: Sun Microsystems inc. o Verzija: 6 o Godina: 2006

Slika 6.3 Java Development Kit (JDK)

Page 94: Miljan Radovic - Diploma Work

84

• Icon Workshop

o Autor: Axialis o Verzija: 6.01 o Godina: 2005

Slika 6.4 Axialis Icon Workshop

6.3. Primeri primene mravljeg algoritma Neki primeri primene ACO algoritama su navedeni u tabeli 6.2. U nekim od nabrojanih primena, ACO algoritmi su dostigli vrhunske performanse, što je slučaj sa npr. kvadratnom dodelom, sekvencijalnim naručivanjem, trasiranjem vozila, vremenskim planiranjem itd.

Naziv problema

Autor(i) Naziv

algoritma God. Literatura

Traveling Salesman

Dorigo, Maniezzo,

Colorni AS 1991

[24, 29, 30]

Gambardella, Dorigo

Ant-Q 1995 [31]

Dorigo, Gambardella

ACS & ACS-3-opt

1996 [26, 27,

32]

Stützle, Hoos MMAS 1997 [56, 58,

59] Bullnheimer, Hartl, Strauss

Asrank 1997 [14]

Page 95: Miljan Radovic - Diploma Work

85

Cordón, et al. BWAS 2000 [16]

Quadric Assignment

Maniezzo, Colorni, Dorigo

AS-QAP 1994 [44]

Gambardella, Taillard, Dorigo

HAS-QAPa 1997 [36]

Stützle, Hoos MMAS-

QAP 1997 [54, 59]

Maniezzo ANTS-QAP 1998 [41] Maniezzo,

Colorni AS-QAPb 1999 [43]

Scheduling problems

Colorni, Dorigo, Maniezzo

AS-JSP 1994 [15]

Stützle AS-FSP 1997 [55]

Bauer et al ACS-

SMTTP 1999 [5]

den Besten, Stützle, Dorigo

ACS-SMTWTP

1999 [18]

Merkle, Middendorf,

Schmeck ACO-RCPS 2000 [45]

Vehicle routing

Bullnheimer, Hartl, Strauss

AS-VRP 1997 [12, 13]

Gambardella, Tillard, Agazzi

HAS-VRP 1999 [35]

Connection-oriented network routing

Schoonderwoerd et al.

ABC 1996 [51, 52]

White, Pagurek, Oppacher

ASGA 1998 [62]

Di Caro, Dorigo AntNet-FS 1998 [22]

Bonabeau et al. ABC –

smart ants 1998 [10]

Connection-less network

routing

Di Caro, Dorigo AntNet &

AntNet-FA 1997

[20, 21, 23]

Subramanian, Druschel, Chen

Regular ants 1997 [60]

Heusse et al. CAF 1998 [22] van der Put, Rothkrantz

ABC-backward

1998 [61]

Sequental ordering

Gambardella, Dorigo

HAS-SOP 1997 [33, 34]

Page 96: Miljan Radovic - Diploma Work

86

Graph coloring

Costa, Hertz ANTCOL 1997 [17]

Shortest common

supersequence

Michael, Middendorf

AS-SCS 1998 [46, 47]

Frequency assignment

Maniezzo, Carbonaro

ANTS-FAP 1998 [42]

Generalized assignment

Ramalhinho, Lourenço, Serra

MMAS-GAP

1998 [49]

Multiple knapsack

Leguizamón, Michalewicz

AS-MKP 1999 [39]

Optical networks routing

Navarro, Varela, Sinclair

ACO-VWP 1999 [48]

Redundancy allocation

Liang, Smith ACO-RAP 1999 [40]

Constraint satisfaction

Solnon Ant-P-solver 2000 [53]

Tabela 6.2 Primeri primene algoritma

Page 97: Miljan Radovic - Diploma Work

87

7. LITERATURA

[1] B.Milosavljević, M.Vidaković – Java i Internet programiranje, Novi

Sad, Srbija, 2002. [2] D.E.Goldberg. Genetic Algorithms in Search, Optimization &

Machine Learning, Addison-Wesley, Reading, MA, 1989. [3] B.Golden, W.Stewart. Empiric analysis of heuristics, in The

Travelling Salesman Problem, E. L. Lawler, J. K. Lenstra, A. H. G. Rinnooy-Kan, D. B. Shmoys eds., New York:Wiley, 1985.

[4] E.L.Lawler, J.K.Lenstra, A.H.G.Rinnooy-Kan, D.B.Shmoys eds. The Travelling Salesman Problem, New York:Wiley, 1985.

[5] A. Bauer, B. Bullnheimer, R. F. Hartl, and C. Strauss. An ant colony optimization approach for the single machine total tardiness problem. In Proceedings of the 1999 Congress on Evolutionary Computation

(CEC’99), pages 1445–1450. IEEE Press, Piscataway, NJ, 1999. [6] R. Beckers, J.-L. Deneubourg, and S. Goss. Modulation of trail laying

in the ant Lasius niger (hymenoptera: Formicidae) and its role in the collective selection of a food source. Journal of Insect Behavior, 6(6):751–759, 1993.

[7] M. Bolondi and M. Bondanza. Parallelizzazione di un algoritmo per la risoluzione del problema del commesso viaggiatore. Master’s thesis, Dipartimento di Elettronica, Politecnico di Milano, Italy, 1993.

[8] E. Bonabeau, M. Dorigo, and G. Theraulaz. Swarm Intelligence:

From Natural to Artificial Systems. Oxford University Press, New York, NJ, 1999.

[9] E. Bonabeau, M. Dorigo, and G. Theraulaz. Inspiration for optimization from social insect behavior. Nature, 406:39–42, 2000.

[10] E. Bonabeau, F. Henaux, S. Guérin, D. Snyers, P. Kuntz, and G. Theraulaz. Routing in telecommunication networks with ”Smart” ant-like agents. In Proceedings of IATA’98, Second Int.Workshop on

Intelligent Agents for Telecommunication Applications. Lectures Notes in AI vol. 1437, Springer Verlag, 1998.

[11] E. Bonabeau and G. Theraulaz. Swarm smarts. Scientific American, 282(3):54–61, 2000.

[12] B. Bullnheimer, R. F. Hartl, and C. Strauss. Applying the Ant System to the vehicle routing problem. In S. Voß S. Martello, I. H. Osman, and C. Roucairol, editors, Meta-Heuristics: Advances and Trends in

Local Search Paradigms for Optimization, pages 285–296. Kluwer Academic Publishers, Dordrecht, 1999.

[13] B. Bullnheimer, R. F. Hartl, and C. Strauss. An improved ant system algorithm for the vehicle routing problem. Annals of Operations

Research, 89:319–328, 1999.

Page 98: Miljan Radovic - Diploma Work

88

[14] B. Bullnheimer, R. F. Hartl, and C. Strauss. A new rank-based version of the Ant System: A computational study. Central European

Journal for Operations Research and Economics, 7(1):25–38, 1999. [15] A. Colorni, M. Dorigo, V. Maniezzo, and M. Trubian. Ant System for

jobshop scheduling. JORBEL - Belgian Journal of Operations

Research, Statistics and Computer Science, 34(1):39–53, 1994. [16] O. Cordón, I. Fernández de Viana, F. Herrera, and L. Moreno. A new

ACO model integrating evolutionary computation concepts: The best-worst ant system. In M. Dorigo, M. Middendorf, and T. Stützle, editors, Abstract proceedings of ANTS2000 – From Ant Colonies to

Artificial Ants: A Series of International Workshops on Ant

Algorithms, pages 22–29. Universit´e Libre de Bruxelles, 2000. [17] D. Costa and A. Hertz. Ants can colour graphs. Journal of the

Operational Research Society, 48:295–305, 1997. [18] M. den Besten, T. Stützle, and M. Dorigo. Ant colony optimization

for the total weighted tardiness problem. In M. Schoenauer, K. Deb, G. Rudolph, X. Yao, E. Lutton, J. J. Merelo, and H.S. Schwefel, editors, Proceedings of PPSN-VI, Sixth International Conference on

Parallel Problem Solving from Nature, volume 1917 of Lecture Notes

in Computer Science, pages 611–620. Springer Verlag, Berlin, Germany, 2000.

[19] J.-L. Deneubourg, S. Aron, S. Goss, and J.-M. Pasteels. The self-organizing exploratory pattern of the Argentine ant. Journal of Insect

Behavior, 3:159–168, 1990. [20] G. Di Caro and M. Dorigo. AntNet: A mobile agents approach to

adaptive routing. Technical Report IRIDIA/97-12, IRIDIA, Universit´e Libre de Bruxelles, Belgium, 1997.

[21] G. Di Caro and M. Dorigo. AntNet: Distributed stigmergetic control for communications networks. Journal of Artificial Intelligence

Research, 9:317–365, 1998. [22] G. Di Caro and M. Dorigo. Extending AntNet for best-effort Quality-

of-Service routing. Unpublished presentation at ANTS’98 - From Ant

Colonies to Artificial Ants: First International Workshop on Ant

Colony Optimization

http://iridia.ulb.ac.be/ants98/ants98.html, October 15-16 1998. [23] G. Di Caro and M. Dorigo. Two ant colony algorithms for best-effort

routing in datagram networks. In Y. Pan, S. G. Akl, and K. Li, editors, Proceedings of the Tenth IASTED International Conference

on Parallel and Distributed Computing and Systems (PDCS’98), pages 541–546. IASTED/ACTA Press, Anheim, 1998.

[24] M. Dorigo. Optimization, Learning and Natural Algorithms (in Italian). PhD thesis, Dipartimento di Elettronica, Politecnico di Milano, Italy, 1992. pp.

[25] M. Dorigo, E. Bonabeau, and G. Theraulaz. Ant algorithms and stigmergy. Future Generation Computer Systems, 16(8):851–871, 2000.

Page 99: Miljan Radovic - Diploma Work

89

[26] M. Dorigo and L. M. Gambardella. Ant colonies for the traveling salesman problem. BioSystems, 43:73–81, 1997.

[27] M. Dorigo and L. M. Gambardella. Ant Colony System: A cooperative learning approach to the traveling salesman problem. IEEE Transactions on Evolutionary Computation, 1(1):53–66, 1997.

[28] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: An autocatalytic optimizing process. Technical Report 91-016 Revised, Dipartimento di Elettronica, Politecnico di Milano, Italy, 1991.

[29] M. Dorigo, V. Maniezzo, and A. Colorni. Positive feedback as a search strategy. Technical Report 91-016, Dipartimento di Elettronica, Politecnico di Milano, Italy, 1991.

[30] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization by a colony of cooperating agents. IEEE Transactions

on Systems, Man, and Cybernetics – Part B, 26(1):29–41, 1996. [31] L. M. Gambardella and M. Dorigo. Ant-Q: A reinforcement learning

approach to the traveling salesman problem. In A. Prieditis and S. Russell, editors, Proceedings of the Twelfth International Conference

on Machine Learning (ML-95), pages 252–260. Morgan Kaufmann Publishers, Palo Alto, CA, 1995.

[32] L. M. Gambardella and M. Dorigo. Solving symmetric and asymmetric TSPs by ant colonies. In Proceedings of the 1996 IEEE

International Conference on Evolutionary Computation (ICEC’96), pages 622–627. IEEE Press, Piscataway, NJ, 1996.

[33] L. M. Gambardella and M. Dorigo. HAS-SOP: An hybrid Ant System for the sequential ordering problem. Technical Report IDSIA-11-97, IDSIA, Lugano, Switzerland, 1997.

[34] L. M. Gambardella and M. Dorigo. Ant Colony System hybridized with a new local search for the sequential ordering problem. INFORMS Journal on Computing, 12(3):237–255, 2000.

[35] L. M. Gambardella, È. D. Taillard, and G. Agazzi. MACS-VRPTW: A multiple ant colony system for vehicle routing problems with time windows. In D. Corne, M. Dorigo, and F. Glover, editors, New Ideas

in Optimization, pages 63–76. McGraw Hill, London, UK, 1999. [36] L. M. Gambardella, È. D. Taillard, and M. Dorigo. Ant colonies for

the quadratic assignment problem. Journal of the Operational

Research Society, 50(2):167–176, 1999. [37] S. Goss, S. Aron, J. L. Deneubourg, and J. M. Pasteels. Self-

organized shortcuts in the Argentine ant. Naturwissenschaften, 76:579–581, 1989.

[38] E. L. Lawler, J. K. Lenstra, A. H. G. Rinnooy Kan, and D. B. Shmoys. The Travelling Salesman Problem. John Wiley & Sons, Chichester, UK, 1985.

[39] G. Leguizamón and Z. Michalewicz. A new version of Ant System for subset problems. In Proceedings of the 1999 Congress on

Evolutionary Computation (CEC’99), pages 1459–1464. IEEE Press, Piscataway, NJ, 1999.

Page 100: Miljan Radovic - Diploma Work

90

[40] Y.-C. Liang and A. E. Smith. An Ant System approach to redundancy allocation. In Proceedings of the 1999 Congress on Evolutionary

Computation, pages 1478–1484. IEEE Press, Piscataway, NJ, 1999. [41] V. Maniezzo. Exact and approximate nondeterministic tree-search

procedures for the quadratic assignment problem. INFORMS Journal

on Computing, 11(4):358–369, 1999. [42] V. Maniezzo and A. Carbonaro. An ANTS heuristic for the frequency

assignment problem. Future Generation Computer Systems, 16(8):927 – 935, 2000.

[43] V. Maniezzo and A. Colorni. The Ant System applied to the quadratic assignment problem. IEEE Transactions on Data and Knowledge

Engineering, 11(5):769–778, 1999. [44] V. Maniezzo, A. Colorni, and M. Dorigo. The Ant System applied to

the quadratic assignment problem. Technical Report IRIDIA/94-28, IRIDIA, Universit´e Libre de Bruxelles, Belgium, 1994.

[45] D. Merkle, M. Middendorf, and H. Schmeck. Ant colony optimization for resource-constrained project scheduling. In Proceedings of the Genetic and Evolutionary Computation

Conference (GECCO-2000), pages 893–900. Morgan Kaufmann Publishers, San Francisco, CA, 2000.

[46] R. Michel and M. Middendorf. An island model based Ant System with lookahead for the shortest supersequence problem. In A. E. Eiben, T. Bäck, M. Schoenauer, and H.-P. Schwefel, editors, Proceedings of PPSN-V, Fifth International Conference on Parallel

Problem Solving from Nature, volume 1498 of Lecture Notes in

Computer Science, pages 692–701. Springer Verlag, Berlin, Germany, 1998.

[47] R. Michel and M. Middendorf. An ACO algorithm for the shortest supersequence problem. In D. Corne, M. Dorigo, and F. Glover, editors, New Ideas in Optimization, pages 51–61. McGraw Hill, London, UK, 1999.

[48] G. Navarro Varela and M. C. Sinclair. Ant colony optimisation for virtualwavelength-path routing and wavelength allocation. In Proceedings of the 1999 Congress on Evolutionary Computation

(CEC’99), pages 1809–1816. IEEE Press, Piscataway, NJ, 1999. [49] H. Ramalhinho Lourenço and D. Serra. Adaptive approach heuristics

for the generalized assignment problem. Technical Report Technical Report Economic Working Papers Series No.304, Universitat Pompeu Fabra, Dept. of Economics and Management, Barcelona, Spain, 1998.

[50] G. Reinelt. The Traveling Salesman: Computational Solutions for

TSP Applications, volume 840 of Lecture Notes in Computer Science. Springer Verlag, Berlin, Germany, 1994.

[51] R. Schoonderwoerd, O. Holland, and J. Bruten. Ant-like agents for load balancing in telecommunications networks. In Proceedings of

Page 101: Miljan Radovic - Diploma Work

91

the First International Conference on Autonomous Agents, pages 209–216. ACM Press, 1997.

[52] R. Schoonderwoerd, O. Holland, J. Bruten, and L. Rothkrantz. Antbased load balancing in telecommunications networks. Adaptive

Behavior, 5(2):169–207, 1996. [53] C. Solnon. Solving permutation constraint satisfaction problems with

artificial ants. In W. Horn, editor, Proceedings of the 14th European

Conference on Artificial Intelligence, pages 118–122. IOS Press, Amsterdam, The Netherlands, 2000.

[54] T. Stützle. MAX–MIN Ant System for the quadratic assignment problem. Technical Report AIDA–97–4, FG Intellektik, FB Informatik, TU Darmstadt, July 1997.

[55] T. Stützle. An ant approach to the flow shop problem. In Proceedings

of the 6th European Congress on Intelligent Techniques & Soft

Computing (EUFIT’98), volume 3, pages 1560–1564. Verlag Mainz, Aachen, 1998.

[56] T. Stützle. Local Search Algorithms for Combinatorial Problems:

Analysis, Improvements, and New Applications. Infix, Sankt Augustin, Germany, 1999.

[57] T. Stützle andM. Dorigo. ACO algorithms for the quadratic assignment problem. In D. Corne, M. Dorigo, and F. Glover, editors, New Ideas in Optimization, pages 33–50. McGraw Hill, London, UK, 1999.

[58] T. Stützle and H. H. Hoos. The MAX–MIN Ant System and local search for the traveling salesman problem. In T. Bäck, Z. Michalewicz, and X. Yao, editors, Proceedings of the 1997 IEEE

International Conference on Evolutionary Computation (ICEC’97), pages 309–314. IEEE Press, Piscataway, NJ, 1997.

[59] T. Stützle and H. H. Hoos. MAX–MIN Ant System. Future

Generation Computer Systems, 16(8):889–914, 2000. [60] D. Subramanian, P. Druschel, and J. Chen. Ants and reinforcement

learning: A case study in routing in dynamic networks. In Proceedings of IJCAI-97, International Joint Conference on Artificial

Intelligence, pages 832–838. Morgan Kaufmann, 1997. [61] R. van der Put. Routing in the faxfactory using mobile agents.

Technical Report R&D-SV-98-276, KPN Research, 1998. [62] T. White, B. Pagurek, and F. Oppacher. Connection management

using adaptive mobile agents. In H.R. Arabnia, editor, Proceedings of

the International Conference on Parallel and Distributed Processing

Techniques and Applications (PDPTA’98), pages 802–809. CSREA Press, 1998.

[63] Marco Dorigo, Vittorio Maniezzo, Alberto Colorni. The Ant System:Optimization by a colony of cooperating agents. IEEE

Page 102: Miljan Radovic - Diploma Work

92

Transactions on Systems, Man, and Cybernetics–Part B, Vol.26, No.1, 1996, pp.1-13

Page 103: Miljan Radovic - Diploma Work

93

Page 104: Miljan Radovic - Diploma Work

94

8. BIOGRAFIJA

Miljan Radović rođen je 06. oktobra 1980. godine u Kuli, Republika Srbija, gde je završio osnovnu i srednju školu i stekao zvanje elektrotehničar automatike 1999. godine. Iste godine upisao se na Fakultet Tehničkih Nauka u Novom Sadu, odsek za Elektrotehniku i Računarstvo, smer za Računarstvo i Informatiku da bi se školske 2002/2003. upisao na usmerenje za Računarske Nauke i Informatiku.

Tokom 2005. i 2006. godine bio je zaposlen u kompaniji Rodić M&B u Novom Sadu na poslovima održavanja računarske infrastrukture.

Položio je sve ispite propisane planom i programom.

Novi Sad, 2007.

Page 105: Miljan Radovic - Diploma Work
Page 106: Miljan Radovic - Diploma Work

KLJUČNA DOKUMENTACIJSKA INFORMACIJA

Redni broj, RBR Identifikacioni broj, IBR Tip dokumentacije, TD monografska publikacija Tip zapisa, TZ tekstualni štampani dokument Vrsta rada, VR diplomski rad Autor, AU Miljan Radović Mentor, MN Prof. dr. Zora Konjović Naslov rada, NR Rutiranje pomoću mravljih algoritama Jezik publikacije, JP srpski (latinica) Jezik izvoda, JI srpski / engleski Zemlja publikovanja, ZP Srbija Uže geografsko područje, UGP

Vojvodina

Godina, GO 2007 Izdavač, IZ autorski reprint Mesto i adresa, MA Novi Sad, Fakultet tehničkih nauka, Odsek za računarstvo

i automatiku, Trg D. Obradovića 6 Fizički opis rada, FO

(поглавља/страна/референци/ слика/графика/додатака)

5 / 106 / 63 / 36 / - / 4

Naučna oblast, NO računarske nauke Uža naučna oblast, ND računarska inteligencija Predmetna odrednica/ ključne reči, PO

mravlji algoritmi, rutiranje, Java, UML

UDK broj,UDK Čuva se u, ČU Biblioteka Fakulteta tehničkih nauka, Trg D. Obradovića

6, Novi Sad Važna napomena,VN Izvod, IZ U radu je dat prikaz osnovnih mravljih algoritama.

Analizirane su mogućnosti primene pristupa baziranog na mravljim algoritmima na rutiranje u mreži. Na osnovu rezultata analize, odabran je model algoritma za problem TSP i modifikovan tako da zadovolji specifičnosti zadatka rutiranja na računarskoj mreži. Specificirano je i implementirano softversko okruženje za praktičnu obuku studenata koje omogućuje analizu procesa rutiranja na različitim računarskim mrežnim strukturama i za različite parametre mravljeg algortima. Za specifikaciju je korišćen objektni pristup i UML metodologija. Implementacija sistema izvršena je na Java platformi.

Datum prihvatanja teme od naučno-nastavnog veća, DP

Datum odbrane, DO Članovi komisije, KO Predsednik: Dr Dušan Surla, red. Prof., PMF Novi Sad Član: Dr Branko Milosavljević, docent, FTN, Novi Sad Mentor: Dr Zora Konjović, red. prof., FTN Novi Sad

Page 107: Miljan Radovic - Diploma Work

KEY WORDS DOCUMENTATION Redni broj, RBR Identifikacioni broj, IBR Tip dokumentacije, TD monografska publikacija Tip zapisa, TZ tekstualni štampani dokument Vrsta rada, VR diplomski rad Autor, AU Miljan Radović Mentor, MN Prof. dr. Zora Konjović Naslov rada, NR Rutiranje pomoću mravljih algoritama Jezik publikacije, JP srpski (latinica) Jezik izvoda, JI srpski / engleski Zemlja publikovanja, ZP Srbija Uže geografsko područje, UGP

Vojvodina

Godina, GO 2007 Izdavač, IZ autorski reprint Mesto i adresa, MA Novi Sad, Fakultet tehničkih nauka, Odsek za računarstvo

i automatiku, Trg D. Obradovića 6 Fizički opis rada, FO

(поглавља/страна/референци/ слика/графика/додатака)

5 / 106 / 63 / 36 / - / 4

Naučna oblast, NO računarske nauke Uža naučna oblast, ND računarska inteligencija Predmetna odrednica/ ključne reči, PO

mravlji algoritmi, rutiranje, Java, UML

UDK broj,UDK Čuva se u, ČU Biblioteka Fakulteta tehničkih nauka, Trg D. Obradovića

6, Novi Sad Važna napomena,VN Izvod, IZ U radu je dat prikaz osnovnih mravljih algoritama.

Analizirane su mogućnosti primene pristupa baziranog na mravljim algoritmima na rutiranje u mreži. Na osnovu rezultata analize, odabran je model algoritma za problem TSP i modifikovan tako da zadovolji specifičnosti zadatka rutiranja na računarskoj mreži. Specificirano je i implementirano softversko okruženje za praktičnu obuku studenata koje omogućuje analizu procesa rutiranja na različitim računarskim mrežnim strukturama i za različite parametre mravljeg algortima. Za specifikaciju je korišćen objektni pristup i UML metodologija. Implementacija sistema izvršena je na Java platformi.

Datum prihvatanja teme od naučno-nastavnog veća, DP

Datum odbrane, DO Članovi komisije, KO Predsednik: Dr Dušan Surla, red. Prof., PMF Novi Sad Član: Dr Branko Milosavljević, docent, FTN, Novi Sad Mentor: Dr Zora Konjović, red. prof., FTN Novi Sad