You are on page 1of 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.


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.
ii
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
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
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
vi
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ć
viii

Equation Section (Next)


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.
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.
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
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
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
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
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)


8
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
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.
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.
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 sopt ∈ 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 C = {c1 , c2 ,..., cNC }
• Stanja problema su definisana po kategorijama sekvenci
x = ci , c j ,..., ck ,... 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 J ( xi , t )
može biti dodeljen stanjima umesto rešenjima. Ako x j
možemo dobiti dodavanjem komponente rešenja na stanje xi
tada je J ( xi , t ) ≤ J ( x j , 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
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 ci ∈ C i veze lij ∈ 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 ci ∈ C i lij ∈ 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
fˆs = min s f ( s, t )
• Poseduje memoriju M k 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 xsk i jedan ili više uslova ek . 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 xr = xr −1 , i i ako uslov završetka nije
zadovoljen, pomera se na čvor j u svojoj okolini N ik tj. u
stanje xr , 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 ek
• Kada se dodaje komponenta rešenja c j 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
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
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. dij nazivamo dužina puta između gradova
i i j; u slučaju Euklidovog TSP, dij predstavlja Euklidsku dužinu puta
između gradova i i j:
1/ 2
d ij = ( xi − x j ) + ( yi − y j ) 
2 2
(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 bi (t )(i = 1,..., n) broj mrava u gradu i u
trenutku t i neka je m = ∑in=1 bi (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
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 τ ij (t ) 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 (t + n) = ρ ⋅τ ij (t ) + ∆τ ij (2.2)
gde je ρ koeficijent takav da (1 − ρ ) predstavlja isparavanje traga
između dva vremenska intervala t i t+n. Ovde je
m
∆τ ij = ∑ ∆τ ijk (2.3)
k =1

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:
Q / Lk ako k − ti mrav koristi put (i, j )
∆τ ijk =  (2.4)
 0 inače
gde je Q konstanta a Lk 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, τ ij (0) , 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 tabuk kao vektor koji se dinamički povećava i
koji sadrži listu zabrana k-tog mrava, tabuk kao skup kojeg čine
elementi tabuk i tabuk ( s ) kao s-ti element liste (npr. s-ti posećeni
grad od strane k-tog mrava na tekućem putu). Količinu 1/ dij 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:
17

 α
τ ij (t )  ⋅ ηij 
β

 ako j ∈ dozvoljenik

pijk (t ) =  ∑ [τ ik (t )] ⋅ [ηik ]
α β
(2.5)
 k∈dozvoljenik
 0 inače
gde je dozvoljenik = { N − tabuk } 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
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
T gb , 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:
e / Lgb (t ) ako kriva (i, j ) ∈ T gb
∆τ ijgb (t ) =  (2.6)
 0 inače
Krive koje pripadaju T gb su zbog toga pojačane sa količinom
feromona e ⋅1/ Lgb , gde je Lgb duzina T gb 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
NCMAX = 2500 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.
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 ( AS rank ) [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
τ ij (t + 1) = (1 − ρ ) ⋅τ ij (t ) + ∑ (ω − r ) ⋅ ∆τ ijr (t ) + ω ⋅ ∆τ ijgb (t ) (2.7)
r =1

gde su ∆τ (t ) = 1/ L (t ) i ∆τ (t ) = 1/ Lgb (t ) .
r
ij
r gb
ij

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 q0 mrav se
kreće do grada j za koji je proizvod traga feromona i
informacije o heuristici maksimalan, tj.
j = arg max j∈N k {τ ij (t ) ⋅ηijβ } , dok sa verovatnoćom 1 − q0 vrše
i
20

pristrasno istraživanje gde je verovatnoća pijk (t ) ista kao i kod


mravljeg sistema (videti formulu (2.8)) pri čemu je vrednost
ρ u opsegu 0 < ρ ≤ 1 . Vrednost q0 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 q0 = 0 pravilo
odlučivanja postaje isto kao i u AS.
α β
τ ij (t )  . ηij 
p (t ) = 
k
ako j ∈ N ik (2.8)
∑ l∈N k [τ il (t )] .[ηil ]
ij α β
i

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:
τ ij (t + 1) = (1 − ρ ) ⋅τ ij (t ) + ρ ⋅ ∆τ ijbest (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 ≤ τ ij ≤ τ max ∀τ 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
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
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.
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.
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.

Prosečan broj Vreme potrebno


n Najbolje koraka za da se pronađe
Problem
(dimenzija) rešenje nalaženje optimum
optimuma (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 τ ij (0) 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 tij (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 Lk i vrednosti ∆τ ijk se koriguju po formuli (2.5).
Takođe se najkraći put (tj. min Lk , k = 1,..., 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 NCmax ili dok svi mravi ne
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 Q / d ij po vezama (i,j) svaki put kada se kreće od i do j. Zbog
toga, u AD algoritmu imamo:
Q k − ti mrav se kreće od i do j u vremenu [t , t + 1]
∆τijk =  (2.10)
0 inače
dok u AQ algoritmu imamo:
Q
 k − ti mrav se kreće od i do j u vremenu [t , t + 1]
k
∆τ =  dij
ij (2.11)
0 ina če

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
dij , dok je u AQ algoritmu situacija obrnuto proporcionalna dij tj.
kraće veze su poželjnije mravima u AQ modelu.
26

Equation Section (Next)


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
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.
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.
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
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.
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š
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
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
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
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˙
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
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.

Odredišni 1 3 4 5
RDNC čvora 2
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.

Odredišni 1 3 4 5
RDNC čvora 2
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
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.
Odredišni 1 3 4 5
RDNC čvora 2
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.

Čvor 2 3 5
Path čvora 2
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
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
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
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
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
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.
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.
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
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


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


49

Slika 3.15 Dijagram aktivnosti backward mrava


50
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.
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
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)
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
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).
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.
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).
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
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
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.
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
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.
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
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.
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);
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
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


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;
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 /
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;
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.");
}
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;
}
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
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() {


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;
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 =
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();
}
78
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.
80
81

6. PRILOG
6.1. Skraćenice
Skr. Pun naziv Objašnjenje
Jedan od tri algoritma iz prvobitnog
AC Ant Cycle algoritma mravlji sistem koji je
kasnije preimenovan u AS
Sistem koji koristi metode mravlje
ACS Ant Colony System
kolonije
Jedan od tri algoritma iz prvobitnog
AD Ant Density
algoritma mravlji sistem
Ant Colony Način optimizacije korišćenjem
ACO
Optimization mravljeg algoritma
AS Ant System Mravlji sistem
Jedan od tri algoritma iz prvobitnog
AQ Ant Quantity
algoritma mravlji sistem
Oznaka za mrava koji se kreće od
krajnjeg do početnog čvora i pritom
BA Backward Ant
ažurira tabele rutiranja čvorova kroz
koje se vraća
Evolutionary
EC Evoluciono računanje
Computation
Oznaka za mrava koji se kreće od
FA Forward Ant početnog i traži put do krajnjeg
čvora
Grafički korisnički interfejs –
Graphic User predstavlja spregu korisnika sa
GUI
Interface programom na čoveku pojmljiv
način (slikama i simbolima)
Planiranje poslova (jedan od
problema optimizacije koji se može
JSP Job-Shop Scheduling
rešavati primenom mravljeg
sistema)
82

Statistike saobraćaja – predstavlja


pomoćnu aplikaciju mravljeg
sistema zaduženu za pamćenje
LTS LocalTrafficStatistic
rezultata rada mrava a u cilju
računanja potrebnih pojačanja koja
će se primeniti
Mrežno rutiranje (jedan od problema
optimizacije koji se može rešavati
NR Network Routing
primenom mravljeg sistema) a ovde
je i tema diplomskog rada
Problem kvadratne raspodele (jedan
Quadric Assignment od problema optimizacije koji se
QAP
Problem može rešavati primenom mravljeg
sistema)
Nasumični birač odredišnih čvorova
RandomDestination- – pomoćna aplikacija koja se koristi
RDNC
NodeChooser kod biranja odredišnog čvora pri
kreiranju mrava
Problem trgovačkog putnika (jedan
Travelling Salesman od problema optimizacije koji se
TSP
Problem može rešavati primenom mravljeg
sistema)
Unified Modeling
UML Opšti jezik za modelovanje
Language
Vizuelni editor – alat kojim se
korisnički interfejs (GUI) kreira
VE Visual Editor
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
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)


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 Naziv
Autor(i) God. Literatura
problema algoritma
Dorigo,
[24, 29,
Maniezzo, AS 1991
30]
Colorni
Gambardella,
Ant-Q 1995 [31]
Dorigo
Traveling
Dorigo, ACS & [26, 27,
Salesman 1996
Gambardella ACS-3-opt 32]
[56, 58,
Stützle, Hoos MMAS 1997
59]
Bullnheimer,
Asrank 1997 [14]
Hartl, Strauss
85

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


Maniezzo,
AS-QAP 1994 [44]
Colorni, Dorigo
Gambardella,
HAS-QAPa 1997 [36]
Taillard, Dorigo
Quadric
MMAS-
Assignment Stützle, Hoos 1997 [54, 59]
QAP
Maniezzo ANTS-QAP 1998 [41]
Maniezzo,
AS-QAPb 1999 [43]
Colorni
Colorni, Dorigo,
AS-JSP 1994 [15]
Maniezzo
Stützle AS-FSP 1997 [55]
ACS-
Bauer et al 1999 [5]
Scheduling SMTTP
problems den Besten, ACS-
1999 [18]
Stützle, Dorigo SMTWTP
Merkle,
Middendorf, ACO-RCPS 2000 [45]
Schmeck
Bullnheimer,
AS-VRP 1997 [12, 13]
Vehicle Hartl, Strauss
routing Gambardella,
HAS-VRP 1999 [35]
Tillard, Agazzi
Schoonderwoerd
ABC 1996 [51, 52]
et al.
Connection-
White, Pagurek,
oriented ASGA 1998 [62]
Oppacher
network
Di Caro, Dorigo AntNet-FS 1998 [22]
routing
ABC –
Bonabeau et al. 1998 [10]
smart ants
AntNet & [20, 21,
Di Caro, Dorigo 1997
AntNet-FA 23]
Connection- Subramanian,
Regular ants 1997 [60]
less network Druschel, Chen
routing Heusse et al. CAF 1998 [22]
van der Put, ABC-
1998 [61]
Rothkrantz backward
Sequental Gambardella,
HAS-SOP 1997 [33, 34]
ordering Dorigo
86

Graph
Costa, Hertz ANTCOL 1997 [17]
coloring
Shortest
Michael,
common AS-SCS 1998 [46, 47]
Middendorf
supersequence
Frequency Maniezzo,
ANTS-FAP 1998 [42]
assignment Carbonaro
Generalized Ramalhinho, MMAS-
1998 [49]
assignment Lourenço, Serra GAP
Multiple Leguizamón,
AS-MKP 1999 [39]
knapsack Michalewicz
Optical
Navarro, Varela,
networks ACO-VWP 1999 [48]
Sinclair
routing
Redundancy
Liang, Smith ACO-RAP 1999 [40]
allocation
Constraint
Solnon Ant-P-solver 2000 [53]
satisfaction
Tabela 6.2 Primeri primene algoritma
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.
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.
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.
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
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
92

Transactions on Systems, Man, and Cybernetics–Part B, Vol.26,


No.1, 1996, pp.1-13
93
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.


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,
Vojvodina
UGP
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/ mravlji algoritmi, rutiranje, Java, UML
ključne reči, PO
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
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,
Vojvodina
UGP
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/ mravlji algoritmi, rutiranje, Java, UML
ključne reči, PO
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

You might also like