Artur Jaworski
Temat Pracy Magisterskiej:
„Komputerowy system do bada艅 efektywno艣ci meta-heurystyki „System Mr贸wek” w zakresie optymalizacji dyskretnej.”
Promotor:
dr hab. in偶. Konrad Wala, prof. nadzwyczajny
Spis tre艣ci.
Spis tre艣ci.
1. Wprowadzenie
Wiek XX to gwa艂towny rozw贸j nauk zwi膮zanych z technikami obliczeniowymi. Rozwi膮zano wiele problem贸w, kt贸re ze wzgl臋du na z艂o偶ono艣膰 obliczeniow膮 wydawa艂y si臋 nierozwi膮zywalne. Powsta艂a nowa nauka nazwana „badaniami operacyjnymi”. Jej pocz膮tki zwi膮zane s膮 z drug膮 wojn膮 艣wiatow膮, kiedy w si艂ach zbrojnych USA i Wielkiej Brytanii zosta艂y utworzone specjalne grupy naukowc贸w w celu przygotowywania r贸偶nych wariant贸w rozwi膮za艅 dotycz膮cych organizacji i zabezpieczenia 艣rodk贸w dla dzia艂a艅 bojowych. Po zako艅czeniu wojny metody dzia艂ania bada艅 operacyjnych zostaj膮 przeniesione do innych dzia艂a艅 ludzkiej dzia艂alno艣ci. W dniu dzisiejszym metody bada艅 operacyjnych wykorzystuje si臋 w przemy艣le, gospodarce rolnej, handlu, transporcie, organizacji s艂u偶by zdrowia itp.
Ten gwa艂towny rozw贸j bada艅 operacyjnych w bardzo du偶ym stopniu zwi膮zany jest z pojawieniem si臋 maszyny nazwanej z biegiem czasu komputerem. Komputer ze wzgl臋du na swoj膮 moc obliczeniow膮 pozwoli艂 rozwi膮zywa膰 problemy du偶ych rozmiar贸w, potrzebuj膮ce du偶ych ilo艣ci rachunk贸w. Niemniej zosta艂o jeszcze wiele problem贸w, dla kt贸rych nie znaleziono rozwi膮zania lub znalezione rozwi膮zanie jest niezadowalaj膮ce. Przyk艂adem mo偶e by膰 tzw. problem komiwoja偶era, kt贸rego istota przedstawiona b臋dzie w dalszej cz臋艣ci pracy. Nauka w dalszym ci膮gu poszukuje algorytmy, kt贸re pozwol膮 rozwi膮zywa膰 to zadania w rozs膮dnym czasie, nawet gdy wielko艣膰 zadania jest du偶a. Praca ta ma na celu sprawdzenia, czy algorytm zwany „System mr贸wek” mo偶e znale藕膰 zastosowania w艂a艣nie do tego problemu.
Jako zagadnienie optymalizacji dyskretnej wybrano asymetryczne zagadnienie komiwoja偶era z uwagi na:
Asymetryczne zagadnienie komiwoja偶era jest szczeg贸lnie trudnym zagadnieniem optymalizacji dyskretnej
W bibliotece zada艅 testowych TSPLIB znajduje si臋 znaczna liczba test贸w tego zagadnienia umo偶liwiaj膮ca por贸wnanie otrzymanych rozwi膮za艅 za pomoc膮 zaprojektowanych algorytm贸w z innymi algorytmami.
Asymetryczne zagadnienie komiwoja偶era modeluje znaczn膮 liczb臋 wa偶nych praktycznych problem贸w.
2. Podstawowe definicje
Poniewa偶 praca opiera si臋 g艂贸wnie na materia艂ach z konferencji naukowych uzna艂em za stosowne wyja艣nienie pewnych poj臋膰, kt贸re mog膮 by膰 pomocne w odpowiednim zrozumieniu dalszej cz臋艣ci pracy.
2.1 Graf
Graf G definiujemy jako par臋 G = (V, E), gdzie V jest zbiorem sko艅czonym, za艣 E jest relacj膮 binarn膮 w V. Zbi贸r V nazywamy zbiorem wierzcho艂k贸w G, a jego elementy nazywane s膮 wierzcho艂kami. Relacja binarna E jest nazywana zbiorem kraw臋dzi G, a jej elementy kraw臋dziami.
Rozr贸偶niamy dwa podstawowe rodzaje graf贸w:
Graf nieskierowany, zbi贸r kraw臋dzi E to zbi贸r nieuporz膮dkowanych par wierzcho艂k贸w. Oznacza to, 偶e kraw臋d藕 jest zbiorem {u, v}, gdzie u, v nale偶膮 do zbioru V. Je偶eli ponadto u 鈮v, tj. graf nie posiada p臋tli oraz wielokrotnych kraw臋dzi to nazywany jest grafem prostym.
Rys. 1
Na rysunku 1 przedstawiony jest przyk艂ad przedstawienia graficznego grafu nieskierowanego. Wierzcho艂ki przedstawiane s膮 jako k贸艂ka, kraw臋dzie jako linie.
Graf skierowany, to graf gdzie zbi贸r kraw臋dzi E to zbi贸r uporz膮dkowanych par wierzcho艂k贸w. R贸偶nice z grafem opisywanym wcze艣niej s膮 nast臋puj膮ce:
W tego typu grafie zapisy (u, v) i (v, u) oznaczaj膮 dwie r贸偶ne kraw臋dzie cz臋sto nazywane 艂ukami.
W grafach skierowanych mog膮 pojawi膰 si臋 p臋tle.
Rys. 2
Na rysunku 2 przedstawiony jest obraz grafu skierowanego. Jak mo偶na zauwa偶y膰, r贸偶nica z rysunkiem 1 kryje si臋 w przedstawieniu kraw臋dzi. W grafie skierowanym przedstawiaj膮 je strza艂ki nie kraw臋dzie.
Dla jasnego przeprowadzenia dalszych rozwa偶a艅 nale偶y wyja艣ni膰 dalsze dwa poj臋cia zwi膮zane z grafem:
艢cie偶ka (droga) d艂ugo艣ci k z wierzcho艂ka u do wierzcho艂ka u' w grafie G=(V, E) jest ci膮giem wierzcho艂k贸w <v0, v1, v2, ..., vk> takich, 偶e u=v0, u'=vk i (vi-1, vi) nale偶y do zbioru E dla i=1, 2, ..., k. D艂ugo艣膰 艣cie偶ki jest liczb膮 kraw臋dzi 艣cie偶ki.
Graf nieskierowany nazywamy sp贸jnym, je偶eli ka偶da para wierzcho艂k贸w jest po艂膮czona 艣cie偶k膮.
2.2 Cykl „Hamiltona”
Poj臋cie cyklu „Hamiltona”, zwanego marszrut膮, rozpatrywano ju偶 od przesz艂o stu lat. Zwi膮zane jest ono z poj臋ciem grafu. Formalnie rzecz bior膮c, cykl Hamiltona w grafie nieskierowanym G = (V, E) to cykl prosty zawieraj膮cy wszystkie wierzcho艂ki zbioru V. Graf, kt贸ry ma cykl Hamiltona, nazywamy hamiltonowskim; w przeciwnym razie niehamiltonowskim.
2.3 Heurystyka
Poj臋cie heurystyka jest ma艂o znane, cho膰 popularne s膮 jego r贸偶ne szczeg贸艂owe techniki i metody (a najbardziej intuicyjnie stosowane wskaz贸wki heurystyczne). Trudno jest odnale藕膰 w literaturze definicje tego s艂owa. Nie ma go przyk艂adowo w takich du偶ych opracowaniach encyklopedycznych jak: 30-tomowa Encyclopedia Americana, 29-tomowa Encyclopedia Britannica, 3-tomowa The Canadian Encyclopedia czy te偶 w mniejszych pracach specjalistycznych: S艂ownik poj臋膰 filozoficznych W. Krajewskiego, S艂ownik encyklopedyczny. Filozofia - G. Vesey, P. Foulkes.
Heurystyka: nauka o metodach i regu艂ach rz膮dz膮cych dokonywaniem odkry膰 i tworzeniem wynalazk贸w.
Heurystyka: metodologia tw贸rczego rozwi膮zywania zada艅.
Heurystyka: umiej臋tno艣膰 (sztuka) wykrywania nowych fakt贸w i zwi膮zk贸w mi臋dzy nimi oraz formu艂owania hipotez (lub tworzenia modeli pe艂ni膮cych rol臋 hipotez). Jest przeciwie艅stwem do logiki, kt贸ra uczy je udowadnia膰.
Heurystyka: podej艣cie maj膮ce na celu tw贸rcze rozwi膮zanie problemu, zar贸wno logicznego, kierowniczego jak i matematycznego (np. rozwi膮zanie zadania, zbudowanie definicji) szczeg贸lnie przez eksperyment, cz臋sto przy pomocy metody pr贸b i b艂臋d贸w, odwo艂ywania si臋 do analogii, uog贸lnie艅.
Heurystyka: metoda nauczania u艂atwiaj膮ca i zach臋caj膮ca ucznia do odkrywania przez niego wiedzy w spos贸b aktywny i samodzielny.
Heurystyka: program wszechstronnego i elastycznego uprawiania filozofii, traktuj膮cego na r贸wni wiele idei heurystycznych w艂a艣ciwych dla r贸偶nych nurt贸w filozofii, w kt贸rych zak艂ada si臋, 偶e aby trafnie m贸wi膰 o 艣wiecie nale偶y zna膰 i wykorzystywa膰 znajomo艣膰 zasad, kt贸rymi kieruje si臋 my艣lenie filozoficzne i post臋p wiedzy.
Heurystyka: zbi贸r efektywnych regu艂 post臋powania oraz wskaz贸wek rozwijaj膮cych tw贸rcze zdolno艣ci jednostek oraz zespo艂贸w ludzkich.
Heurystyka: proces poszukiwania i badania nowych form nauczania i szkolenia, w szczeg贸lno艣ci uwzgl臋dniaj膮cych zdobywanie wiedzy w spos贸b uznawany za naukowy oraz poprzez intuicj臋.
Heurystyka: umiej臋tno艣膰 wyszukiwania informacji o literaturze i 藕r贸d艂ach historycznych oraz jest to zbi贸r regu艂 wskazuj膮cych, jak zbiera膰 i systematyzowa膰 materia艂y badawcze w historii.
Heurystyka: zbi贸r odkrywczych technik pozwalaj膮cych na szybkie i skuteczne odnalezienie rozwi膮za艅 problem贸w daj膮cych si臋 sformu艂owa膰 w spos贸b ilo艣ciowy, wykorzystuj膮cych przewa偶nie metody samouczenia si臋 maszyn (np. poprzez sprz臋偶enie zwrotne) w celu poprawy wynik贸w.
W Badaniach Operacyjnych bardzo cz臋sto wykorzystywane jest poj臋cie algorytmu heurystycznego. Odnosi si臋 ono do algorytm贸w wykorzystuj膮cych metody pozwalaj膮ce odkrywa膰 rozwi膮zania z艂o偶onych problem贸w w oparciu o pr贸by zrozumienia i odtworzenia niekt贸rych czynno艣ci umys艂u ludzkiego.
U podstaw tego typu algorytm贸w, le偶y za艂o偶enie, 偶e dla zada艅, w kt贸rych mamy do czynienia z du偶ymi przestrzeniami rozwi膮za艅, wa偶ne jest wczesne odrzucenie nieobiecuj膮cych kierunk贸w przeszukiwania. Zapewnia to ogromne oszcz臋dno艣ci na kosztach obliczeniowych, a w rezultacie przyspiesza znalezienie rozwi膮zania. Wi臋ksza skuteczno艣ci tych metod polega na dostosowaniu kierunk贸w poszukiwania do potrzeb rozwi膮zywanego problemu. W tym celu wykorzystuje si臋 pewne informacje o zadaniu. Heurystyka to wszelkie metody pozwalaj膮ce algorytmowi poszukuj膮cemu rozwi膮zania p贸j艣膰 "na skr贸ty". Skuteczno艣ci krok贸w heurystycznych nie mo偶na w pe艂ni udowodni膰 teoretycznie, mo偶na jedynie pokaza膰 do艣wiadczalnie ich trafno艣膰.
Algorytmy tego typu odegra艂y bardzo wa偶n膮 role w rozwoju nauk zwi膮zanych z obliczeniami komputerowymi. W obecnym czasie zast臋powane s膮 innymi grupami algorytm贸w, np. rozwa偶anymi w tej pracy mata-heurystykami.
2.4 Meta-heurystyka
Dla wielu problem贸w NP-zupe艂nych nauka nie znalaz艂a jeszcze algorytmu pozwalaj膮cego na znalezienie optymalnego rozwi膮zania w czasie umo偶liwiaj膮cym zastosowanie algorytmu w 偶yciu codziennym. Dla wielu problem贸w zaproponowano zdroworozs膮dkowe algorytmy dostarczaj膮ce w kr贸tkim czasie mo偶liwe do przyj臋cia rozwi膮zanie, kt贸re nie zawsze jest rozwi膮zaniem optymalnym. Algorytmy takie wykorzystuj膮 wiedz臋 o specyfice problemu i na tej podstawie znajduj膮 rozwi膮zanie, kt贸re mo偶e by膰 wykorzystane do danego zastosowania.
W obecnym czasie, g艂贸wna uwaga naukowc贸w zajmuj膮cych si臋 Badaniami Operacyjnym skoncentrowana jest na innej, nowej klasie algorytm贸w znanej meta-heurystyk膮. Meta-heurystyka to raczej swoistego rodzaju szkielet algorytmu, kt贸ry mo偶e by膰 modyfikowany i u偶ywany do konkretnych zastosowa艅. Przyk艂adem meta-heurystyk s膮 algorytmy:
symulowane wy偶arzanie,
algorytmy genetyczne
algorytm tabu-serch.
Meta-heurystyki bardzo cz臋sto inspirowane s膮 obserwacj膮 przyrody. Wymienione wcze艣niej algorytmy zainspirowane by艂y kolejno: analiz膮 fizycznego procesu wy偶arzania, Darwinowsk膮 teori膮 ewolucji i sprytnym zarz膮dzaniem pami臋ci. Algorytm „system mr贸wek”, kt贸remu po艣wi臋cona jest ta praca tak偶e nale偶y do klasy algorytm贸w meta-heurystycznych.
2.5 Z艂o偶ono艣膰 obliczeniowa algorytm贸w
Klasyfikuj膮c r贸偶ne problemy, mo偶emy na podstawie teorii matematycznych podzieli膰 je na rozwi膮zywalne i nierozwi膮zywalne. Jednak to, co jest teoretycznie rozwi膮zywalnym zadaniem, w praktyce mo偶e okaza膰 si臋 nie do rozwi膮zania w realnym czasie (mo偶e to zaj膮膰 miliony lat nawet najszybszym superkomputerom). Dlatego z praktycznego punktu widzenia zadania zosta艂y podzielone na klasy:
KLASA P (ang. polynomial class ) - klasa problem贸w rozwi膮zywalnych za pomoc膮 deterministycznej maszyny Turinga w czasie wielomianowym. Oznacza to, 偶e rozwi膮zanie zadania nale偶膮cego do tej klasy zale偶y od pewnej wielko艣ci N w spos贸b pot臋gowy, czyli N do kt贸rej艣 pot臋gi (N symbolizuje tu rozmiar zadania).
KLASA NP (ang. nondeterministic polynomial class ) - klasa problem贸w rozwi膮zywalnych za pomoc膮 niedeterministycznej maszyny Turinga w czasie wielomianowym. W tej klasie rozwi膮zanie zale偶y od N w spos贸b wyk艂adniczy, czyli jaka艣 liczba do pot臋gi N. W艣r贸d tej grupy problem贸w wyr贸偶nia si臋 te najtrudniejsze, nazywane NP-zupe艂nymi.
Trudno艣膰 rozwi膮zywania problem贸w NP-zupe艂nych polega na tym, 偶e liczba oblicze艅, jakie trzeba wykona膰, by znale藕膰 rozwi膮zanie, gwa艂townie ro艣nie wraz z rozmiarem problemu. I tak, je艣li pewien ma艂y problem tej klasy daje si臋 rozwi膮za膰 w ci膮gu kilku minut, to ju偶 ten sam problem dwukrotnie wi臋kszy mo偶na rozwi膮zywa膰 kilkaset lat.
Om贸wiona w ten spos贸b z艂o偶ono艣膰 obliczeniowa nazywana jest czasow膮 z艂o偶ono艣ci膮 algorytm贸w (ang. Time Complexitity of an Algorithm). Jej definicje mo偶na przedstawi膰 jako funkcj臋 z艂o偶ono艣ci czasowej, przyporz膮dkowuj膮c膮 ka偶dej warto艣ci rozmiaru instancji I maksymaln膮 liczb膮 elementarnych krok贸w (lub jednostek czasu) maszyny cyfrowej potrzebnych do rozwi膮zania za pomoc膮 algorytmu A instancji o tym rozmiarze, to znaczy funkcj臋:
fA(n) = max { t : (t jest liczb膮 elementarnych krok贸w maszyny cyfrowej niezb臋dn膮 dla rozwi膮zania instancji I nale偶膮cej do Dn)^(n = N(I))},
gdzie Dn jest zbiorem instancji problemu decyzyjnego a n jest rozmiarem ka偶dej instancji.
Zwykle funkcje czasowej z艂o偶ono艣ci obliczeniowej algorytmu fA(n) ocenia si臋 z dok艂adno艣ci膮 do rz臋du.
Drugim rodzajem z艂o偶ono艣ci obliczeniowej jest tzw. pami臋ciowa z艂o偶ono艣膰 obliczeniowa algorytmu (ang. Space Complexitity of an Algorithm) rozumiana jako jest to rozmiar pami臋ci urz膮dzenia licz膮cego niezb臋dny do wykonania algorytmu, wyra偶ony w funkcji rozmiaru problemu. Tego typu z艂o偶ono艣膰 nie jest jednak przedmiotem rozwa偶a艅 w tej pracy i nie b臋dzie rozpatrywana w dalszej jej cz臋艣ci.
3. Opis rozwa偶anego problemu
Jak zosta艂o wspomniane we wst臋pie, w tej pracy zostanie przeprowadzone rozwa偶anie na temat mo偶liwo艣ci zastosowania algorytmu zwanego „System mr贸wek” dla znalezienia rozwi膮zania problemu zwanego „Problemem komiwoja偶era”. W tym rozdziale przedstawiony zostanie opis tego zagadnienia.
3.1 Problem komiwoja偶era
Komiwoja偶er, czyli obwo藕ny sprzedawca towar贸w ustawicznie boryka si臋 z problemem, jak w najkr贸tszym czasie i w najta艅szy spos贸b odwiedzi膰 wszystkich znajduj膮cych si臋 w r贸偶nych miastach klient贸w i znale藕膰 si臋 w ko艅cu w punkcie wyj艣cia. Oczywistym jest fakt, 偶e dwukrotna wizyta u jednego klienta w ci膮gu danego cyklu jest zbyteczna, a przede wszystkim nieekonomiczna i dlatego nale偶y ja wykluczy膰.
Problem komiwoja偶era mo偶na przedstawi膰 za pomoc膮 grafu. Graf przedstawiaj膮cy problem zawiera zbi贸r V (N=|V|) wierzcho艂k贸w, reprezentuj膮cych odwiedzane przez sprzedawc臋 miasta, oraz zbi贸r 艂uk贸w E 艂膮cz膮ce wszystkie wierzcho艂ki N, reprezentuj膮ce drogi mi臋dzy miastami. Je偶eli przez dij oznaczymy miar臋 oznaczaj膮c膮 d艂ugo艣膰 艂uku (i,j) nale偶膮cego do zbioru E, b臋dzie on reprezentowa艂 odleg艂o艣膰 miedzy miastami i oraz j. Rozwi膮zanie Problemu Komiwoja偶era polega na znalezieniu minimalnej warto艣ci cyklu Hamiltona dla grafu G = (V, E). Cykl ten jest zamkni臋ty, znajduje si臋 w nim ka偶dy wierzcho艂ek oraz ka偶dy wierzcho艂ek znajduj臋 si臋 w nim tylko jeden raz.
Wyr贸偶niamy jeszcze „Asymetryczny Problem Komiwoja偶era”, charakteryzuj膮cy si臋 tym, 偶e dij 鈮 dji. Graf reprezentuj膮cy ten problem jest grafem skierowanym.
W opracowaniach naukowych „Problem komiwoja偶era” oznaczany jest symbole TSP. Skr贸t ten wzi臋ty jest z angielskiej nazwy problemu, tzn. Traveling Salesman Problem. „Asymetryczny Problem Komiwoja偶era” reprezentowany jest symbelem ATSP (Asymmetric Traveling Salesman Problem).
Podsumowuj膮c opis „Problemu Komiwoja偶era”, jego definicj臋 mo偶na przedstawi膰 nast臋puj膮co:
TSP Niech: V = {a, ..., z } zbi贸r wierzcho艂k贸w grafu odpowiadaj膮cych miastom, kt贸re ma odwiedzi膰 podr贸偶uj膮cy sprzedawca E = { (r, s): r, s 鈭 V } zbi贸r kraw臋dzi grafu, odpowiadaj膮cych drogom pomi臋dzy miastami d(r, s) = d(s, r) , (r, s) 鈭 A miara odpowiadaj膮ca odleg艂o艣ci膮 pomi臋dzy poszczeg贸lnymi miastami Rozwi膮zanie problemu TSP polega na znalezieniu minimalnego pe艂nego cyklu zamkni臋tego, w kt贸rym ka偶de miasto odwiedzane jest tylko raz. Je偶eli ka偶de miasto r 鈭 V podane jest poprzez jego wsp贸艂rz臋dne {xr, yr} oraz miara d(s, r) jest miar膮 Euklidesow膮 pomi臋dzy miastami r i s, m贸wimy wtedy, 偶e rozpatrujemy „Euklidesowy Problem Komiwoja偶era”. ATSP Je偶eli spotykamy si臋 z problemem r贸偶ni膮cym si臋 od opisywane powy偶ej tylko tym, 偶e d(r, s) 鈮 d(s, r) wtedy problem oznaczany symbolem TSP staje si臋 Asymetrycznym Problemem Komiwoja偶era (ATSP). |
Definicja 1
Z punktu widzenia procesu optymalizacji dyskretnej zagadnienie ATSP jest znacznie trudniejszym problemem ni偶 symetryczne zagadnienie TSP.
3.2 Zastosowanie praktyczne
W tym paragrafie podane zostan膮 przyk艂ady zastosowania problemu komiwoja偶era w 偶yciu codziennym. Przyk艂ady te zaczerpni臋te s膮 z ksi膮偶ki profesora Bogus艂awa Filipowicza „Badania Operacyjne”. Trzeba jednak zauwa偶y膰, i偶 nie s膮 to jednak jedyne przyk艂ady zastosowa艅 tego problemu.
3.2.1 Optymalizacja drogi w transporcie
Spotykanym w 偶yciu codziennym problem optymalizacji drogi formalizowanym w postaci problemu komiwoja偶era jest dob贸r trasy dla ci臋偶ar贸wki zaopatruj膮cej sklepy danego regionu w produkty pobrane w magazynie. Najbardziej reprezentacyjnym przypadkiem jest tu dzia艂alno艣膰 firm kurierskich. Zasada dzia艂ania tych firm opiera si臋 na bardzo sprawnie dzia艂aj膮cej sieci kurier贸w obs艂uguj膮cych przydzielone im regiony. Optymalizacja drogi w rezultacie mo偶e da膰 nie tylko zmniejszenie koszt贸w w艂asnych lecz r贸wnie偶 zredukowa膰 liczb臋 kurier贸w potrzebnych do realizacji zam贸wie艅 firmy. Zauwa偶amy, 偶e optymalizowa膰 mo偶na bezpo艣rednio koszty transportu przeliczane np. na odleg艂o艣膰 wed艂ug liniowej funkcji lub te偶 minimalizowa膰 czas trwania przejazd贸w i t膮 drog膮 osi膮gn膮膰 zwi臋kszenie efektywno艣ci przedsi臋biorstwa.
Kurier i dostawca musz膮 po sko艅czeniu dzia艂ania wr贸ci膰 do bazy, aby podj膮膰 si臋 kolejnych prac i nie jest w ich interesie pojawienie si臋 w tym samym punkcie dwa razy podczas jednego cyklu. Punkty do odwiedzenia to w interpretacji grafowej wierzcho艂ki grafu, odcinki (etapy trasy) 艂膮cz膮ce poszczeg贸lne punkty to kraw臋dzie grafu. Ka偶dej kraw臋dzi przyporz膮dkowuje koszt przemieszczenia si臋 mi臋dzy punktami b臋d膮cymi wierzcho艂kami grafu. Poniewa偶 d膮偶ymy do minimalizacji koszt贸w, kraw臋dziom reprezentuj膮cym niemo偶liwe do realizacji lub nie istniej膮ce w rzeczywisto艣ci po艂膮czenia, przyporz膮dkowuje si臋 koszt niesko艅czenie wielki.
Problem ten staje si臋 coraz bardziej aktualny w dobie rozwoju e-commers. Planowane jest powstanie wielu firm, kt贸rych dzia艂alno艣膰 polega艂a b臋dzie na dostarczaniu do klienta towar贸w zamawianych przez Internet. Problem opisywany w tym paragrafie b臋dzie dla nich jak偶e aktualny.
3.2.2 Optymalizacja drogi w elektronice i mechanice
Bardzo wa偶nym zastosowaniem metod optymalizacji drogi jest wykonanie otwor贸w monta偶owych i lutowanie podzespo艂贸w elektronicznych. Elementy wykonawcze tzn. wiert艂a i lutownice przemieszczaj膮ce si臋 za pomoc膮 specjalnego uk艂adu nap臋dowego. Poniewa偶 s膮 to uk艂ady mechaniczne ich pr臋dko艣膰 dzia艂ania jest ograniczona zar贸wno przez koszty wykonania automatu jak i wytrzyma艂o艣膰 element贸w, z kt贸rych s膮 wykonane. Istotnym czynnikiem w produkcji wieloseryjnej jest czas obr贸bki jednego detalu.
Spos贸b post臋powania przy opisie tego problemu jako zagadnienia komiwoja偶era jest analogiczny jak dla przypadku dostawcy, tzn.:
numerujemy kolejne punkty obr贸bki,
okre艣lamy odleg艂o艣ci lub czasy przemieszczenia narz臋dzie pomi臋dzy wszystkimi punktami
konstruujemy macierz odleg艂o艣ci
W masowej produkcji zysk z optymalizacji ma swoje 藕r贸d艂o w sko艅czonym czasie wykonania detalu, ograniczeniu energoch艂onno艣ci oraz zmniejszeniu zu偶ycia mechanicznego automatu.
3.2.3 Optymalizacja drogi w systemach produkcyjnych
W elastycznych systemach produkcyjnych, jednym z element贸w sk艂adowych jest system transportu detali pomi臋dzy stanowiskami roboczymi. Jak wiadomo, spotyka si臋 na og贸艂 trzy rodzaje sieci transportowych: sie膰 drabinkowa, mieszana oraz zamkni臋ta w postaci p臋tli. Funkcjonowanie tej ostatniej mo偶e by膰 zoptymalizowane za pomoc膮 zagadnienia komiwoja偶era.
3.2.4 Optymalizacja drogi w systemach telekomunikacyjnych
Ostatni z przyk艂ad贸w zastosowania problemu komiwoja偶era dotyczy system贸w telekomunikacyjnych. W sieci komputerowej typu „token ring” wymagane jest spe艂nienie warunku zamkni臋cia p臋tli 艂膮cz膮cego wszystkie komputery. Koszty po艂o偶enia jednego metra kabla i jego konserwacja mog膮 by膰 zale偶ne liniowo i odczytywane bezpo艣rednio z macierzy odleg艂o艣ci. W przypadku zr贸偶nicowania koszt贸w jednego metra instalacji macierz koszt贸w uzyskuje si臋 na podstawie odpowiedniej wyceny odcink贸w mi臋dzy stacjami roboczymi i serwerami. Cena po艂膮czenia w obie strony, podobnie jak odleg艂o艣膰 jest zazwyczaj taka sama.
Rozwi膮zuj膮c problem komiwoja偶era obok zysku finansowego mo偶na poprawi膰 r贸wnie偶 mo偶liwo艣ci techniczne sieci. Wynika to z faktu, 偶e pr臋dko艣膰 propagacji sygna艂u w przewodach jest sko艅czona, co nak艂ada ograniczenia na pr臋dko艣膰 pracy takiej sieci oraz jej zasi臋g. Wyznaczenie najkr贸tszego po艂膮czenia pozwala na popraw臋 obu tych parametr贸w.
3.3 Metody rozwi膮zywania problemu komiwoja偶era
Poniewa偶 problem komiwoja偶era nale偶y do problem贸w NP.-zupe艂nych, nie jest 艂atwo znale藕膰 algorytm rozwi膮zuj膮cy przy du偶ych rozmiarach problemu. Jednak ze wzgl臋du na pojawianie si臋 z 偶yciu codziennym zada艅 艂atwo sprowadzalnych do tego problemu, naukowcy zostali zmuszeni do pr贸b opracowania metody rozwi膮zania problemu. Przyk艂adem takich pr贸b s膮 metody:
Metoda Estemana bazuj膮ca na algorytmie w臋gierskim
Metoda Little'a bazuj膮ca na algorytmie podzia艂u i ogranicze艅
Metoda kompozycji 艂aci艅skiej
Tak偶e autorzy meta-heurystyk przeprowadzali dyskusje nad mo偶liwo艣ci膮 zastosowania ich pomys艂u do rozwi膮zywania tego problemu. W dalszej cz臋艣ci tej pracy przedstawiona zostanie meta-heurystyka Dorigo „System mr贸wek” oraz moja pr贸ba realizacji tej meta-heurystyki w艂a艣nie do realizacji problemu komiwoja偶era.
4. Algorytm „System mr贸wek”
Za tw贸rc臋 algorytmu zwanego „System Mr贸wek” uwa偶any jest M. Dorigo. Zaproponowa艂 on nowe wielo-czynnikowe podej艣cie do trudnych problem贸w optymalizacji kombinatorycznej. Algorytm ten wzorowany jest, jak wi臋kszo艣膰 metaheurystyk, na podstawie obserwacji przyrody. Dorigo przez d艂ugi okres czasu przygl膮da艂 si臋 strukturze mrowiska.
Mr贸wki s膮 owadami 偶yj膮cymi w koloniach, w kt贸rych ka偶dy osobnik ma dok艂adnie wyznaczone miejsce i pozycje. Ich zachowanie skierowane jest bardziej w kierunku prze偶ycia ca艂ej kolonii ni偶 jako indywidualnej jednostki. Insekty przyci膮gn臋艂y uwag臋 wielu naukowc贸w ze wzgl臋du na osi膮gni臋cie wysokiego poziomu strukturalnego koloni, zw艂aszcza w por贸wnaniu ze wzgl臋dn膮 prostot膮 jednostek indywidualnych.
Szczeg贸ln膮 uwag臋 Dorigo zwr贸ci艂y prac臋 biolog贸w opisuj膮cych osobniki zajmuj膮ce si臋 transportem po偶ywienia do mrowiska. Mo偶na znale藕膰 w nich stwierdzenie, 偶e droga kt贸r膮 si臋 udaj膮 do mrowiska jest najkr贸tsz膮 jak膮 mo偶na dosta膰 si臋 z miejsca gdzie znajduje si臋 po偶ywienia do mrowiska. Realizowane jest to dzi臋ki temu, 偶e w czasie przemierzanie drogi mi臋dzy 藕r贸d艂em po偶ywienia a gniazdem, mr贸wki sk艂adaj膮 na ziemi substancje zwana feromonem. Insekty te maj膮 zdolno艣膰 wyczuwania feromonu i w chwili wybierania drogi wybieraj膮 te, kt贸ra oznaczona jest silnym st臋偶eniem feromonu.
艢lad feromonu pozwala mr贸wkom na odnalezienie drogi z gniazda do 藕r贸d艂a po偶ywienia i odwrotnie. Ponadto ten 艣lad mo偶e by膰 u偶ywany przez inne mr贸wki do odnalezienia miejsca przechowywania 偶ywno艣ci odnalezionej przez inne mr贸wki. W materia艂ach biolog贸w opisany jest eksperyment wykazuj膮cy, 偶e to zachowanie zwi膮zane ze 艣ladem feromonu jest przyczyn膮 pojawienia si臋 najkr贸tszych 艣cie偶ek. To znaczy gdy wi臋cej 艣cie偶ek jest dost臋pnych z gniazda do 藕r贸d艂a jedzenia , kolonia mr贸wek jest w stanie eksploatowa膰 艣lady feromonu pozostawione przez inne mr贸wki w celu odkrywania najkr贸tszej drogi prowadz膮cej od gniazda do 藕r贸d艂a jedzenia i z powrotem.
Ilustracj膮 obserwacji biolog贸w s膮 umieszczone poni偶ej rysunki.
Rys. 3
Rysunek 3 przedstawia przemieszczaj膮c膮 si臋 koloni臋 mr贸wek miedzy mrowiskiem a miejscem gdzie znalezione zosta艂o po偶ywienie. Linia znajduj膮ca si臋 na rysunku ma obrazowa膰 pozostawiany przez owady feromon. Widzimy, 偶e przemieszczaj膮ce si臋 mr贸wki, poruszaj膮 si臋 wzd艂u偶 linii, utworzonej z substancji chemicznej.
Rys. 4
Na rysunku 4 uwidocznione jest umieszczenie na linii feromonu przeszkody. Przeszkoda to uniemo偶liwia owadom dalsze poruszanie si臋 po najkr贸tszej drodze miedzy dwoma punktami. W tym momencie rozpoczyna si臋 poszukiwanie najkr贸tszej drogi do obej艣cia przeszkody.
Rys. 5
Na rysunku 5 widzimy pocz膮tkowy losowy wyb贸r drogi przej艣cia 艂a艅cucha mr贸wek. Pozostawiaj膮 one z dw贸ch stron fenemon, kt贸ry b臋dzie wykorzystany przez nast臋pne osobniki do wyznaczenia kr贸tszej drogi.
Rys. 6
Stan ko艅cowy przedstawiony jest na rysunku 6, gdzie droga pokazana na rysunku, jako droga nad przeszkod膮, okaza艂a si臋 kr贸tsza, feromon pozostawiony na tej 艣cie偶ce wolniej „parowa艂”. 艢lad pozostawianej substancji chemicznej okazywa艂 si臋 silniejszy w艂a艣nie na tej drodze, poniewa偶 jest ona kr贸tsza. Powodowa艂o to, 偶e mr贸wki poruszaj膮ce si臋 p贸藕niej ch臋tniej wybiera艂y w艂a艣nie t臋 艣cie偶k臋. 艢lad feromonu stawa艂 si臋 coraz mocniejszy, a偶 wszystkie mr贸wki porusza艂y si臋 t臋dy.
Nale偶y te偶 zauwa偶y膰, 偶e 艣cie偶ka zostaje wybrana, nawet gdy alternatywna droga jest tej samej d艂ugo艣ci. Te prawid艂owo艣膰 zaobserwowano podczas nast臋pnego do艣wiadczenia.
Rys. 7
Jak wida膰 na rysunku 7, kolonia mr贸wek i 藕r贸d艂o jedzenia zosta艂y odgrodzone czym艣 co mo偶na okre艣li膰 jako binarny most. Ka偶da z ga艂臋zi tego mostu by艂a tej samej d艂ugo艣ci. Mr贸wki pozostawiono tak, aby mog艂y swobodnie porusza膰 si臋 mi臋dzy 藕r贸d艂em po偶ywienia a gniazdem i obserwowano ilo艣膰 mr贸wek wybieraj膮cych jedn膮 z dw贸ch ga艂臋zi.
Wykres 1
Wyniki do艣wiadczenia widoczne s膮 na wykresie 1. Wida膰 tam, 偶e po okresie przej艣ciowym, w kt贸rym mia艂y miejsce pewne wahania, mr贸wki zacz臋艂y gromadzi膰 si臋 na tej samej (g贸rnej) 艣cie偶ce.
Powodem takiego zachowania mr贸wek jest to, 偶e pocz膮tkowo nie ma feromonu na 偶adnej z ga艂臋zi, kt贸re wybierane s膮 z tym samym prawdopodobie艅stwem. Wahania w okresie przej艣ciowym powoduj膮, 偶e kilka mr贸wek wybiera g贸rn膮 ga艂膮藕. Powoduje to zwi臋kszenie ilo艣ci feromonu na tej ga艂臋zi co z kolei stymuluje inne mr贸wki do jej wybrania itd. Nale偶y jednak zauwa偶y膰, 偶e przy powt贸rzeniu eksperymentu od pocz膮tku, tak samo prawdopodobnym jest wybranie przez mr贸wki drugiej ga艂臋zi.
Wydaje si臋 by膰 interesuj膮cym fakt 偶e pomimo, i偶 ka偶da z mr贸wek ma zdolno艣膰 rozwi膮zywania problem贸w, tj. odnajdywanie 艣cie偶ki pomi臋dzy pojemnikiem jedzenia a gniazdem to dopiero kolonia mr贸wek charakteryzuje si臋 zdolno艣ci膮 „odnalezienia najkr贸tszej drogi”. R贸wnie偶 warto zaznaczy膰, 偶e mr贸wki zachowuj膮 si臋 tak specyficznie, u偶ywaj膮c prostej formy po艣redniej komunikacji za po艣rednictwem sk艂adowania feromonu, zwanej stigmergy. Nazwa ta zaczerpni臋ta zosta艂a z pracy pana Grass'e „La reconstruction ...”, kt贸ra traktuje o innej spo艂eczno艣ci owad贸w, tzn. termit贸w. W swojej pracy, Grass'e zdefiniowa艂 stigmery jako „stymulowanie robotnik贸w poprzez przedstawianie tego co osi膮gn臋li”. W rzeczywisto艣ci Grass'e zaobserwowa艂, 偶e termity s膮 w stanie zareagowa膰 na tzw. „wa偶ne bod藕ce”, kt贸re uaktywniaj膮 genetycznie zakodowan膮 reakcje. W przypadku insekt贸w stadnych, kt贸rych zar贸wno mr贸wki jak i termity s膮 najlepszym przyk艂adem, skutki takich reakcji mog膮 by膰 kolejnym wa偶nym bod藕cem dla insekt贸w, kt贸re je wyprodukowa艂y jak i dla ca艂ej koloni. Takie wytworzenie nowego bod藕ca mo偶e by膰 okre艣lone jako forma koordynacji dzia艂a艅 i interpretowane jako forma komunikacji po艣redniej. Na tej podstawie Grass'e zdefiniowa艂 stigmery jako 艣rodki komunikacji, kt贸re r贸偶ni膮 si臋 od innych dwoma aspektami:
Fizyczny charakter informacji sk艂adanej przez komunikuj膮ce si臋 insekty
Miejscowy charakter sk艂adanej informacji, kt贸ra mo偶e by膰 udost臋pniona insektom, kt贸re odwiedzaj膮 miejsce, z kt贸rego informacja wysz艂a (lub s膮siedztwo tego miejsca).
Tak przedstawiona definicja dok艂adnie pasuje do sposobu komunikacji mr贸wek poprzez feromon sk艂adany przez nie na ziemi podczas przemieszczania si臋.
Opisane powy偶ej zachowanie zosta艂o zaobserwowane eksperymentalnie, jednak偶e eksperymenty te zosta艂y przeprowadzone w bardzo ograniczonych warunkach. Wysuni臋ta na podstawie wynik贸w teoria jest bardzo sp贸jna, brakuje jednak formalnego dowodu na to, i偶 odnajdywanie najkr贸tszej drogi uzyskiwane jest przez feromon. Pojawi艂y si臋 publikacje inaczej interpretuj膮ce wyniki opisywanych wcze艣niej do艣wiadcze艅 i przypisuj膮ce odnajdywanie najkr贸tszej drogi przez mr贸wki wskaz贸wkami wizualnymi.
Dorigo przychyli艂 si臋 jednak do opinii wi臋kszo艣ci i na podstawie obserwacji biolog贸w oraz swoich przemy艣le艅, zaproponowa艂 spos贸b znajdowania rozwi膮zania problem贸w NP-zupe艂nych wykorzystuj膮cy system agent贸w, zwanych w艂a艣nie mr贸wkami. Idea algorytmu polega na wykorzystaniu kolonii mr贸wek, z kt贸rych ka偶da pozostawia 艣lad na danej kraw臋dzi grafu w postaci substancji chemicznej. Jej ilo艣膰, podobnie jak w biologicznej koloni tych owad贸w, zale偶y od warto艣ci rozwi膮zania znalezionego przez mr贸wk臋. Istotne jest to, 偶e 贸w 艣lad na danej kraw臋dzi sumuje si臋 od ka偶dej mr贸wki i ulega parowaniu w czasie dyskretnym. Wida膰 wi臋c, 偶e algorytm ten jest wzorowany na opisywanych wcze艣niej obserwacjach.
4.1 Opis matematyczny algorytmu
W chwili t=0 wszystkie mr贸wki znajduj膮 si臋 w bazie, a wszystkie kraw臋dzie (i,j) maj膮 przypisane niewielkie, pocz膮tkowe warto艣ci (dobrane eksperymentalnie) 艣ladu feromonu 蟿ij(0) r贸wne c.
W chwili t ka偶da mr贸wka wybiera losowo w臋ze艂 grafu, do kt贸rego udaje si臋 w chwili nast臋pnej t+1. W trakcie pojedynczej iteracji algorytmu wyznaczone s膮 przemieszczenia wszystkich m mr贸wek w czasie przedzia艂u czasu (t, t+1). Jeden cykl pracy algorytmu sk艂ada si臋 z n takich iteracji. Na ko艅cu cyklu ka偶da mr贸wka znajduje rozwi膮zanie problemu. W贸wczas wielko艣膰 艣ladu na kraw臋dziach jest modyfikowana zgodnie z formu艂膮:
蟿( t+1 ) = 蟻 鈭 蟿ij( t ) + 螖蟿( t ), (1)
gdzie 蟻, 0<蟻<1, jest wsp贸艂czynnikiem takim, 偶e (1-蟻) okre艣la stopie艅 „zanikania” 艣ladu w przedziale czasu (t, t+1), za艣:
(2)
jest wzorem okre艣laj膮cym przyrosty 艣ladu, a 螖 蟿ijr (t) jest wielko艣ci膮 k艂adzionego na kraw臋dzi (i, j) przez mr贸wk臋 r w przedziale czasu (t, t+1).
Warto艣膰 ta jest obliczana zgodnie z formu艂膮:
(3)
Warto艣膰 g贸rna uzyskiwana jest w przypadku, gdy mr贸wka r porusza艂a si臋 po kraw臋dzi (i, j) w przedziale czasu (t, t+1) gdzie Q jest sta艂膮, a L(r) jest kosztem rozwi膮zania znalezionego przez mr贸wk臋 r. W przeciwnym przypadku uzyskiwana jest warto艣膰 dolna.
Mo偶na wi臋c zauwa偶y膰, 偶e mr贸wki, kt贸re znalaz艂y rozwi膮zanie o wy偶szym koszcie, uk艂adaj膮 mniejsz膮 „ilo艣膰” 艣ladu na kraw臋dziach, po kt贸rych przechodz膮. W rezultacie kraw臋dzie te s膮 nie faworyzowane przy kolejnych etapach obliczeniowych.
Podczas poszukiwania rozwi膮zania, mog膮 pojawi膰 si臋 dodatkowe ograniczenia, np. mr贸wka r nie mo偶e odwiedzi膰 偶adnego wierzcho艂ku grafu wi臋cej ni偶 jeden raz. Aby spe艂ni膰 taki wymogi, wprowadza si臋 listy tabu(r) oraz listy allowed(r). Pierwsza lista zawiera w臋z艂y odwiedzone przez mr贸wk臋 r w chwili czasu t, druga zawiera pozosta艂e dost臋pne w臋z艂y. Przy wyborze w臋z艂a, do kt贸rego ma przej艣膰 w chwili t+1, brane s膮 pod uwag臋 w臋z艂y znajduj膮ce si臋 jedynie na li艣cie allowed(r) danej mr贸wki. Na ko艅cu ka偶dego cyklu listy tabu(r) s膮 wykorzystywane do pobrania rozwi膮za艅 znalezionych przez mr贸wki. List te s膮 zerowane przed rozpocz臋ciem ka偶dego cyklu.
Prawdopodobie艅stwo przej艣cia mr贸wki r znajduj膮cej si臋 w w臋藕le i do w臋z艂a j w chwili czasu t+1 jest podane wzorem:
(4)
gdzie:
蟿(i,j) - ilo艣膰 feromonu na drodze od miasta i do miasta j
畏(i,j) - definiowana dowolnie funkcja, w kt贸rej argumentem jest odleg艂o艣膰 pomi臋dzy miastami i oraz j. W opisywanym w p贸藕niejszych rozdzia艂ach zaprojektowanym systemie komputerowym zastosowano funkcj臋 f(x) = 1/x, czyli proporcjonalno艣膰 odwrotn膮.
Jk(r) - lista dozwolonych przej艣膰 dla mr贸wki r w chwili czasu t+1.
Wz贸r ten jest jednak modyfikowany w zale偶no艣ci od rozwi膮zywanego problemu. Pojawiaj膮ce si臋 w nim parametry 伪 i 尾 pozwalaj膮 kontrolowa膰 relatywny wp艂yw wielko艣ci 艣ladu i innych warto艣ci przy wyborze docelowego w臋z艂a przemieszczenia.
Pseudo-kod rozpatrywanego algorytmu jest nast臋puj膮cy:
: ustaw pozycje startowe algorytmu : ustaw pocz膮tkow膮 warto艣膰 艣ladu dla wszystkich kraw臋dzi 蟿(i,j) := C dla (i, j) 鈭 E for iteracje := 1 do IT for r := 1 do m for krok := 1 do n if ograniczenia nie przekroczone : okre艣l prawdopodobie艅stwo P(i,j) wylosowania kraw臋dzi (i,j) : losuj nast臋pn膮 kraw臋d藕 dla mr贸wki r wg rozk艂adu P : modyfikuj list臋 tabu(r) dla kraw臋dzi end end end : policz warto艣膰 funkcji celu dla rozwi膮zania okre艣lonego przez drog臋 ka偶dej mr贸wki w oparciu o list臋 tabu( r ) : okre艣l najlepsze rozwi膮zanie w populacji : policz przyrost 艣ladu dla 螖蟿kij( t ) dla ka偶dej kraw臋dzi ( i, j ) od ka偶dej mr贸wki k : oblicz parowanie 艣ladu i dodaj aktualne przyrosty : wyczy艣膰 listy tabu (r) : ustaw mr贸wki na pozycjach startowych : zapisz najlepsze rozwi膮zanie i zapis symboliczny jego grafu w tablicy best_graf end |
Definicja 2
Algorytm mo偶e zawiera膰 tak偶e pewne zmienne odpowiedzialne za wizualizacje otrzymanych wynik贸w. Nie jest to jednak cz臋艣膰 meta-heurystyki tylko ju偶 konkretnej realizacji algorytmu.
4.2 Z艂o偶ono艣膰 obliczeniowa algorytmu „System mr贸wek”
Oszacowanie z艂o偶ono艣ci obliczeniowej algorytmu, jest problemem stosunkowo 艂atwym. Za艂贸偶my, 偶e ilo艣膰 iteracji oznaczona w definicji 2 przez IT jest r贸wna l. Z艂o偶ono艣膰 obliczeniowa jednej iteracji zdeterminowana jest p臋tlami FOR. Pojedyncza mr贸wka porusza si臋 w czasie O聽(n2聽m), wi臋c z艂o偶ono艣膰 ca艂ego algorytmu jest r贸wna T(n)聽=聽l*n2* m.
gdzie
l - ilo艣膰 iteracji
n - wielko艣膰 problemu
m - ilo艣膰 mr贸wek.
4.3 Por贸wnanie dw贸ch rodzaj贸w mr贸wek
W meta-heurystycznej optymalizacji kolonii mr贸wek, kolonia sztucznych mr贸wek wsp贸艂pracuje w celu osi膮gni臋cia rozwi膮zania problemu trudnej optymalizacji dyskretnej. Wsp贸艂praca ta jest kluczowym czynnikiem algorytmu. W艂a艣ciwe rozwi膮zanie problemu mo偶e by膰 wy艂onione tylko na drodze poprawnej interakcji i wsp贸艂pracy mi臋dzy agentami.
Sztuczne mr贸wki maj膮 podw贸jny charakter. Z jednej strony wzorowane s膮 na zachowaniu kolonii prawdziwych mr贸wek w odnalezieniu najlepszego rozwi膮zania. Z drugiej za艣 wzbogacone zosta艂y pewnymi umiej臋tno艣ciami, kt贸rych nie zaobserwujemy w ich naturalnych odpowiednik贸w. Podej艣cie takie wydaje si臋 rozs膮dne poniewa偶 sprawia, 偶e s膮 bardziej skuteczne i sprawne w rozwi膮zywaniu problem贸w.
Postaram si臋 teraz pokaza膰 podobie艅stwa i r贸偶nice pomi臋dzy sztucznymi a prawdziwymi mr贸wkami. Do podobie艅stw nale偶y zaliczy膰:
Wykorzystanie kolonii wsp贸艂pracuj膮cych jednostek - podobnie jak kolonie prawdziwych mr贸wek, algorytmy mr贸wkowe wykorzystuj膮 populacje zgodnych jednostek wsp贸艂pracuj膮cych wsp贸lnie w celu odnalezienia rozwi膮zania okre艣lonego zadania. Pomimo, 偶e ka偶da mr贸wka jest w stanie znale藕膰 rozwi膮zanie indywidualnie (jak prawdziwa mr贸wka mo偶e znale藕膰 艣cie偶k臋 pomi臋dzy mrowiskiem a jedzeniem), rozwi膮zanie wysokiej jako艣ci jest wynikiem wsp贸艂pracy pomi臋dzy ka偶d膮 z jednostek.
Szlak feromonu dla miejscowej komunikacji - sztuczne mr贸wki modyfikuj膮 pewne aspekty swojego 艣rodowiska tak samo jak robi膮 to prawdziwe mr贸wki. Podczas gdy prawdziwe mr贸wki sk艂adaj膮 w odwiedzanym miejscu substancje chemiczn膮 zwan膮 feromonem, sztuczne mr贸wki zmieniaj膮 informacje numeryczn膮 lokalnie gromadzon膮 w miejscu, kt贸re odwiedzaj膮. Ta informacja bierze pod uwag臋 bie偶膮c膮 histori臋 (dokonania mr贸wki) i mo偶e by膰 odczytana przez ka偶d膮 inn膮 mr贸wk臋 maj膮c膮 dost臋p do tego miejsca. Zwykle w algorytmach mr贸wek wyst臋puje tak偶e mechanizm wyparowywania, zbli偶ony do wyparowywania prawdziwego feromonu. Pozwala to kolonii mr贸wek na powolne zapominanie historii tak, aby mog艂y skierowa膰 swoje poszukiwania w nowym kierunku bez obci膮偶ania rozumowania przesz艂ymi decyzjami.
Szereg miejscowych ruch贸w w celu odnalezienia najkr贸tszej drogi - zar贸wno sztuczne jak i prawdziwe mr贸wki maj膮 wsp贸lne zadanie: odnalezienie najkr贸tszej (przy minimalnym koszcie) drogi 艂膮cz膮cej gniazdo z miejscem gdzie znajduje si臋 jedzenie. Prawdziwe mr贸wki nie skacz膮, tylko przechodz膮 przez s膮siaduj膮ce cz臋艣ci ziemi. Tak samo czyni膮 sztuczne mr贸wki przemieszczaj膮c si臋 krok po kroku przez „ s膮siaduj膮ce tereny” problemu. Oczywi艣cie dok艂adne definicje miejsc i s膮siedztwa s膮 specyficzne dla problemu.
Zasada stochastycznej decyzji korzystaj膮cej z miejscowej informacji i brak przewidywania - sztuczne mr贸wki , tak jak i prawdziwe stosuj膮 zasad臋 prawdopodobie艅stwa do podj臋cia decyzji o wybraniu miejsca nast臋pnego ruchu. Zasady, wed艂ug kt贸rych wybieraj膮 drog臋 wykorzystuj膮 tylko miejscow膮 informacje i nie przewiduj膮 przysz艂ego po艂o偶enia, s膮 to wi臋c zasady wy艂膮cznie lokalne zar贸wno w czasie jak i w przestrzeni. S膮 one zar贸wno funkcj膮 g艂贸wnej informacji reprezentowanej przez specyfik臋 problemu (struktura ziemi dla prawdziwych mr贸wek) jak i miejscowych modyfikacji w 艣rodowisku ( szlak feromonu) wywo艂anych przez wcze艣niejsze mr贸wki.
Opr贸cz wymienionych powy偶ej podobie艅stw istniej膮 tak偶e czynniki r贸偶ni膮ce prawdziwe mr贸wki od sztucznych. Zaliczamy do nich:
Sztuczne mr贸wki 偶yj膮 w 艣wiecie dyskretnym a na ich ruchy sk艂adaj膮 si臋 przemieszczenia z miejsc dyskretnych w miejsca dyskretne.
Sztuczne mr贸wki posiadaj膮 pami臋膰 poprzednich dokona艅 mr贸wek
Sztuczne mr贸wki sk艂adaj膮 feromon, kt贸rego ilo艣膰 jest funkcj膮 zale偶n膮 od jako艣ci znalezionego rozwi膮zania
Okre艣lenie czasu w sk艂adowaniu feromonu jest zale偶ne od problemu i cz臋sto nie odzwierciedla zachowania prawdziwych mr贸wek, np. w wielu przypadkach sztuczne mr贸wki uaktualniaj膮 szlak feromonu dopiero po odnalezieniu rozwi膮zania.
W celu poprawy efektywno艣ci ca艂ego systemu kolonia mr贸wek, algorytm mo偶e by膰 wzmocniony dodatkowymi mechanizmami takimi jak: przewidywania, optymalizacja lokalna, powr贸t szlakiem itd., kt贸rych nie posiadaj膮 prawdziwe mr贸wki.
4.4 Optymalizacja badanego algorytmu
Po okresie wst臋pnego zafascynowania mo偶liwo艣ciami algorytmu mr贸wkowego stwierdzono, 偶e algorytm „System Mr贸wek” mo偶e by膰 raczej stosowany tylko jako wst臋pne poszukiwanie rozwi膮zania. badanego problemu. Gdy potrzebna jest du偶a efektywno艣膰 przy rozwi膮zywaniu problem贸w kombinatorycznej optymalizacji NP-聽zupe艂nej algorytm ten jest raczej marny w por贸wnaniu z innymi podej艣ciami. Zaproponowane zasta艂y pewne rozszerzenia i ulepszenia, maj膮ce na celu poprawy efektywno艣ci dzia艂ania algorytmu. W tym punkcie zostan膮 przedstawione przyk艂adowe rozszerzenia.
4.4.1 System Koloni Mr贸wek (ang. Ant Colony System - ACS)
Modyfikacja ta, zasta艂a zaproponowana przez samych tw贸rc贸w algorytmu. Sami autorzy stwierdzili, 偶e „System Koloni Mr贸wek” jest w pewnym sensie algorytmem prostszym i z biegiem czasu sta艂 si臋 przez nich preferowanym. R贸偶ni si臋 on od algorytmu opisywanego wcze艣niej trzema g艂贸wnymi aspektami:
Korzysta z bardziej agresywnej zasady wyboru
Feromon dodawany jest do 艂uk贸w nale偶膮cych do globalnego rozwi膮zania
Gdy mr贸wka korzysta z 艂uku (i, j) do przemieszczenie si臋, usuwa z 艂uku troch臋 feromonu.
Poni偶ej przedstawiamy bardziej szczeg贸艂owo te modyfikacje.
Konstrukcja trasy:
W opisywanej modyfikacji, mr贸wki wybieraj膮 kolejne wierzcho艂ki grafu wykorzystuj膮c zasad臋 pseudo-przypadkowo-proporcjonalnego wyboru (ang. pseudo-random-proportional action choice rule). Polega ona na tym, 偶e gdy mr贸wka k znajduje si臋 w wierzcho艂ku i musi losowo wybra膰 jedna z dw贸ch mo偶liwo艣ci:
Przej艣cie z prawdopodobie艅stwem q0 do miasta l, dla kt贸rego
蟿il(t) * [畏il]尾 (5)
jest maksymalne, tzn. z prawdopodobie艅stwem q0 zostaje wykonany najlepszy ruch wskazany przez tory feromonu i heurystyczn膮 informacj臋 (wykorzystanie wyuczonej wiedzy)
Z prawdopodobie艅stwem 1-q0 wykorzystuje do wyboru miasta wz贸r oznaczony symbolem (4).
Lokalna aktualizacja feromonu
W opisywanej modyfikacji mr贸wki korzystaj膮 dodatkowo z zasady lokalnej aktualizacji feromonu, kt贸r膮 stosuj膮 zaraz po przej艣ciu 艂uku w czasie konstrukcji trasy. Opisuje j膮 wz贸r:
蟿ij = (1 - 尉)*蟿ij + 蟿0*尉 (6)
gdzie: 尉, 0 < 尉 < 1 i 蟿0 s膮 dwoma parametrami.
Zasada lokalnej aktualizacji ma za zadanie sprawi膰, aby wybrany 艂uk sta艂 si臋 mniej po偶膮dany dla kolejnej mr贸wki. Tym samym prawdopodobie艅stwo eksploatacji jeszcze nie odwiedzanych 艂uk贸w wzrasta.
4.4.2 Max-Min System Mr贸wek (ang. Max-Min Ant System - MMAS)
Rozwi膮zanie w tej modyfikacji uzyskiwane jest tak samo jak w przypadku bez modyfikacji. Wykorzystywana jest tak偶e pseudo-przypadkowo-proporcjonalna zasada wyboru, opisywana w Systemie Koloni Mr贸wek. G艂贸wne dodatkowe modyfikacje s膮 nast臋puj膮ce:
W celu znalezienia najlepszego rozwi膮zania tylko jedna mr贸wka w ka偶dej iteracji ma prawo doda膰 feromon
W celu unikni臋cia stagnacji stosujemy zasad臋 mocy szlaku feromonu
Szlaki feromonu s膮 inicjalizowane od wy偶szej warto艣ci, co powoduje zwi臋kszone przeszukiwanie na pocz膮tku algorytmu.
Aktualizacja szlaku feromonu
Po znalezieniu rozwi膮zania przez wszystkie mr贸wki, szlaki feromonu aktualizowane s膮 wed艂ug wzoru:
蟿ij(t + 1) = (1 - 尉) * 蟿ij(t) + 尉 * 螖蟿ijbest (7)
gdzie: 螖蟿ijbest = 1/Lbest.
Mr贸wka, kt贸ra z艂o偶y feromon, mo偶e znale藕膰 rozwi膮zanie najlepsze w danej iteracji (ang. iteration-best solution Tib) lub globalnie najlepsze (ang. global-best solution Tgb). Zatem, je偶eli konkretne 艂uki s膮 cz臋sto wykorzystywane w najlepszych rozwi膮zaniach, otrzymuj膮 one najwi臋ksz膮 dawk臋 feromonu. Wyniki eksperyment贸w przeprowadzonych przez tw贸rc贸w tej modyfikacji pokaza艂y, 偶e najlepsze wyniki uzyskiwane s膮 poprzez stopniowy wzrost cz臋stotliwo艣ci wyboru Tgb dla aktualizacji szlaku.
Ograniczenia szlaku
W przypadku MIN-MAX narzucone s膮 dolne i g贸rne ograniczenie na mo偶liwe nasycenie feromonu w celu unikni臋cia stagnacji poszukiwa艅. Szczeg贸lnie narzucone ograniczenia odnosz膮 skutek w po艣rednim ograniczeniu prawdopodobie艅stwa pij wyboru wierzcho艂ka j kiedy mr贸wka jest w wierzcho艂ku i do przedzia艂u [pmin, pmax] gdzie 0 < pmin < pij < pmax < 1. Tylko w przypadku, gdy mr贸wka ma jedn膮 mo偶liwo艣膰 wyboru nast臋pnego wierzcho艂ka pmin = pmax. Wyniki eksperymentalne sugeruj膮, 偶e dolne ograniczenia prawdopodobie艅stwa wyboru szlaku wykorzystywane w MIN-MAX s膮 istotniejszymi, poniewa偶 maksymalna moc szlaku na 艂ukach jest na d艂u偶sz膮 met臋 ograniczona z powodu ulatniania si臋 feromonu.
Inicjalizacja szlaku
Szlaki feromonu w MIN-MAX s膮 inicjalizowane od wy偶szych warto艣ci. Dzi臋ki temu poszukiwania najlepszego rozwi膮zania na pocz膮tku dzia艂ania algorytmu wzrasta, poniewa偶 r贸偶nice wzgl臋dne pomi臋dzy mocami szlaku feromonu s膮 mniej wyra藕ne.
4.4.3 System Mr贸wek wykorzystuj膮cy rangi (ang. Rank-Based Version of Ant System - ASrank)
Kolejnym udoskonaleniem algorytmu „System Mr贸wek” jest wersja oparta na rangach (ASrank). W tej modyfikacji korzystamy zawsze z globalnie najlepszego rozwi膮zania w celu aktualizacji 艣lad贸w feromonu. Dodatkowo tylko ograniczona liczba mr贸wek ka偶dej iteracji mo偶e doda膰 feromon. W tym celu mr贸wki s膮 sortowane wed艂ug znalezionych rozwi膮za艅 (L1(t)<L2(t)<...<Lm(t)), a ilo艣膰 mr贸wek, kt贸re mog膮 z艂o偶y膰 feromon jest odmierzana wed艂ug rangi r mr贸wki. Tylko (w - 1) najlepszych mr贸wek ka偶dego powt贸rzenia mo偶e z艂o偶y膰 feromon. Najlepsze globalnie rozwi膮zanie, daj膮ce najsilniejsze sprz臋偶enie zwrotne osi膮ga wag臋 w. Najlepsza mr贸wka r obecnej iteracji przyczynia si臋 do aktualizacji feromonu z wag膮 nadan膮 przez wz贸r:
max {0, r-w} (8)
Zatem zmieniona zasada aktualizacji feromonu wyglada nast臋puj膮co:
(9)
gdzie:
i
Tw贸rcy tej modyfikacji por贸wnywali sw贸j algorytm z algorytmami genetycznymi oraz z algorytmem symulowanego wy偶arzania Okaza艂o si臋, 偶e algorytm oparty na systemie rang dawa艂y dla wi臋kszych problem贸w lepsze wyniki.
4.4.4 Podsumowanie
Wszystkie proponowane opcje algorytm贸w mr贸wkowych maj膮 wiele cech wsp贸lnych. Algorytm w pierwszej formie u偶ywany jest g艂贸wnie jako pierwsze podej艣cie do problemu NP-zupe艂nego i rozwi膮zanie znalezione przez niego jest raczej marne w por贸wnaniu z innymi podej艣ciami. Zaproponowano zatem kilka modyfikacji algorytm贸w dla poprawy jego dzia艂ania.
G艂贸wn膮 cech膮 proponowanych udoskonale艅 jest to, 偶e wykorzystuj膮 one do dalszych poszukiwa艅 najlepsze rozwi膮zania znalezione podczas wcze艣niejszych poszukiwa艅. Osi膮ga si臋 to, poprzez nadanie wi臋ksze wagi lepszym rozwi膮zaniom przy aktualizacji feromonu i cz臋sto dopuszcza si臋 do tworzenia dodatkowego 艣ladu feromonu na 艂ukach globalnie najlepszego rozwi膮zania.
Naturalnie poprzez silniejsze wykorzystywanie najlepszych rozwi膮za艅, 艂uki znajduj膮ce si臋 na najlepszych trasach otrzymuj膮 dodatkowe, silne sprz臋偶enie zwrotne, a zatem s膮 wybierane z wi臋kszym prawdopodobie艅stwem w kolejnych iteracjach algorytmu. Powstaje jednak problem, 偶e wraz z silniejsz膮 eksploatacj膮 najlepszych rozwi膮za艅, doprowadzimy do stagnacji algorytmu, tzn. takiej sytuacji, w kt贸rej wszystkie mr贸wki pod膮偶aj膮 jedn膮 tras膮. Zatem niekt贸re modyfikacje, w szczeg贸lno艣ci ACS i MMAS, wprowadzaj膮 dodatkowe cechy w celu unikni臋cia stagnacji.
Wszystkie opisane modyfikacje algorytmu wykazuj膮 znacznie lepsze dzia艂anie przy rozwi膮zywaniu problem贸w optymalizacji kombinatorycznej i wykazuj膮 silniejsz膮 eksploatacje najlepszych rozwi膮za艅 znalezionych przez mr贸wki. Rozs膮dnym b臋dzie wi臋c stwierdzenie, 偶e koncentracja poszukiwa艅 wok贸艂 najlepszych rozwi膮za艅 znalezionych w czasie poszukiwa艅 jest kluczem do udoskonalenia dzia艂ania algorytmu.
4.5 Zastosowanie algorytm贸w mr贸wkowych dla rozwi膮zania problemu komiwoja偶era
W przypadku problemu komiwoja偶era, ka偶da pojedyncza mr贸wka konstruuje rozwi膮zanie podr贸偶uj膮c mi臋dzy poszczeg贸lnymi miastami. W czasie inicjalizacji umieszczamy wszystkie mr贸wki w mie艣cie b臋d膮cym miastem startowym algorytmu, nast臋pnie modyfikujemy algorytm w ten spos贸b, aby mr贸wki po przej艣ciu wszystkich miast, odwiedzi艂y ka偶de miasto tylko jeden raz a nast臋pnie powr贸ci艂y do punktu startowego algorytmu.
W trakcie implementacji algorytmu nale偶y zwr贸ci膰 uwag臋 na poprawn膮 obs艂ug臋 list tabu(r) oraz allowed(r). S膮 one niezb臋dne dla spe艂nienia warunku pobytu komiwoja偶era w ka偶dym mie艣cie tylko jeden raz.
5. Opis systemu komputerowego
5.1 Dane techniczne
System komputerowy to aplikacja mog膮ca pracowa膰 pod kontrol膮 system贸w Windows 95/98/NT/2000. Minimalne parametry komputera na kt贸rym mo偶e pracowa膰 system to:
Procesor 486 SX lub Pentium
8 MB pami臋ci operacyjnej
30 MB wolnej przestrzeni dyskowej
Karta Graficzna SVGA
Nap臋d CD-ROM
Zainstalowany jeden z wcze艣niej wymienionych system贸w operacyjnych.
5.2 Dane wej艣ciowe
Pierwszym krokiem niezb臋dnym do rozpocz臋cia pracy aplikacji testowej jest wprowadzenie danych wej艣ciowych zawieraj膮cych macierz odleg艂o艣ci pomi臋dzy poszczeg贸lnymi miastami. Mo偶na to zrobi膰 na dwa sposoby:
5.2.1 Wczytywanie danych z pliku
Plik z danymi jest plikiem tekstowym o rozszerzeniu ATS. Sk艂ada si臋 on z dw贸ch cz臋艣ci:
Nag艂贸wka - znajduje si臋 w nim nazwa pliki, rodzaj i wielko艣膰 problemu. Przyk艂adowy nag艂贸wek, skopiowany z jednego z plik贸w zamieszczony jest poni偶ej.
NAME: ftv33
TYPE: ATSP
COMMENT: Asymmetric TSP (Fischetti)
DIMENSION: 34
EDGE_WEIGHT_TYPE: EXPLICIT
EDGE_WEIGHT_FORMAT: FULL_MATRIX
Z macierzy danych. Zawiera ona liczby, kt贸re odpowiadaj膮 odleg艂o艣ci膮 pomi臋dzy poszczeg贸lnymi miastami.
Plik z danymi mo偶na odczyta膰 za pomoc膮 opcji „Open” dost臋pnej w pasku narz臋dzi lub rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia si臋 standardowy dla wszystkich wersji dedykowanego systemu operacyjnego okienko dialogowe pozwalaj膮ce na wybranie pliku (zobacz rys. 8).
Rys. 8
Wybrany plik zostaje wczytany do pami臋ci operacyjnej komputera. W wyniku tego aktywne staj膮 si臋 opcj臋 aplikacji s艂u偶膮ce do inicjalizacji oblicze艅, opisane w dalszej cz臋艣ci rozdzia艂u.
Do wersji instalacyjnej systemu dostarczone s膮 pliki zawieraj膮ce przyk艂adowe zagadnienia ATSP zaczerpni臋te z biblioteki TSPLIB. S膮 to zagadnienia ATSP, dla kt贸rych znane jest rozwi膮zanie optymalne. Dziki temu, podczas testowania systemu, mo偶na por贸wna膰 znalezione przez aplikacje rozwi膮zanie z rozwi膮zaniem optymalnym.
5.2.2 Tworzenie nowego problemu.
System komputerowy pozwala tak偶e na stworzenie nowego problemu poprzez generacje macierzy odleg艂o艣ci pomi臋dzy miastami. Mo偶liwe jest poprzez opcje „New” dost臋pn膮 w pasku narz臋dzi lub rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia si臋 nast臋puj膮ce okienko dialogowe:
Rys. 9
Pozwala ono na wybranie sposobu wprowadzania danych, tzn.:
Poprzez losowanie warto艣ci odleg艂o艣ci przez komputer. Definiujemy wtedy rozmiar problemu (ilo艣ci miast) oraz minimaln膮 oraz maksymaln膮 warto艣膰 odleg艂o艣ci.
Poprzez r臋czne wprowadzanie wszystkich warto艣ci wszystkich odleg艂o艣ci. Przy wybraniu tej opcji niezb臋dne jest zdefiniowanie tylko rozmiaru problemu (ilo艣ci miast).
Po wybraniu ka偶dego rodzaju wprowadzania danych pojawia si臋 okienko dialogowe, s艂u偶膮ce do weryfikacji lub edytowania dych:
Rys. 10
Okienko dialogowe widoczne na rysunku 10 pozwala w 艂atwy spos贸b dokonywa膰 zmian w macierzy opisuj膮cej odleg艂o艣ci pomi臋dzy miastami. Weryfikacja taka mo偶e odbywa膰 si臋 nie tylko podczas tworzenia problemu, lecz tak偶e w czasie pracy aplikacji, gdy macierz danych wej艣ciowych znajduje si臋 w pami臋ci operacyjnej komputera. Mo偶na to uzyska膰 poprzez opcj臋 „Data Review” dost臋pnej w pasku narz臋dzi oraz rozwijalnym menu aplikacji.
5.2.3 Zapis danych do pliku
Nowowprowadzone lub zmodyfikowane dane wej艣ciowe mog膮 by膰 zapisane do pliku. W przypadku modyfikacji danych, zapis danych do istniej膮cego ju偶 pliku uzyskujemy poprzez opcje „Save” dost臋pn膮 w pasku narz臋dzi oraz w rozwijalnym menu aplikacji. Aktywacja tej opcji powoduje nadpisanie pliku ze zmodyfikowan膮 macierz膮 odleg艂o艣ci.
Zapis danych do nowego pliku uzyskujemy poprzez opcje „Save as...” dost臋pn膮 w rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia si臋 standardowy dla wszystkich wersji dedykowanego systemu operacyjnego okienko dialogowe pozwalaj膮ce na wprowadzenia nazwy pliku , pod kt贸r膮 maj膮 zapisane by膰 dane (zobacz rys. 11).
Rys. 11
Zapis danych do pliku nie powoduje ich kasacji z pami臋ci operacyjnej komputera, w dalszym ci膮gu mo偶liwa jest praca aplikacji na zapisanych wcze艣niej danych.
5.3 Ustawienie parametr贸w procesu oblicze艅
System komputerowy posiada implementacje algorytmu „System Mr贸wek” oraz jego modyfikacji zaproponowanej przez Dorigo, tzn. „System Koloni Mr贸wek”. Przed rozpocz臋ciem procesu oblicze艅 nale偶y wybra膰 interesuj膮c膮 nas opcj臋 algorytmu oraz wprowadzi膰 warto艣ci parametr贸w wyst臋puj膮cych we wzorach matematycznych, na kt贸rych bazuj膮 algorytmy. S艂u偶y do tego celu okienko dialogowe dost臋pne poprzez opcj臋 „Settings” dost臋pn膮 w pasku narz臋dzi oraz rozwijalnym menu aplikacji.
Rys. 12
Opr贸cz opcji algorytmu, kt贸ra b臋dzie wykonywana w procesie oblicze艅 w okienku dialogowym pokazanym na rysunku oznaczonym numerem 12 mo偶emy okre艣li膰 nast臋puj膮ce warto艣ci:
„Ants Number” - ilo艣膰 mr贸wek wyst臋puj膮cych podczas ka偶dej iteracji
„Series Number” - ilo艣膰 iteracji algorytmu
„Begin Trace Value” - warto艣膰 pocz膮tkowa feromunu, znajduj膮ca si臋 na wszystkich kraw臋dziach na pocz膮tku procesu oblicze艅
„Alfa Parameter” - parametr 伪 u偶yty we wzorze oznaczonym liter膮 4
„Beta Parameter” - paramert 尾 u偶yty we wzorze oznaczonym liter膮 4
„q Parameter” - parametr q u偶yty we wzorze oznaczonym liter膮 1
„Q Parameter” - paramert Q u偶yty we wzorze oznaczonym liter膮 3
„Ksi Parameter” - parametr 尉 u偶yty we wzorze oznaczonym liter膮 6
„Q-Zero Parameter” - parametr q0 okre艣laj膮cym prawdopodobie艅stwo wyboru miasta w zasadzie pseudo-przypadkowo-proporcjonalnego wyboru
„Tau-Zero Parameter” - parametr 蟿0 u偶ytym we wzorze oznaczonym liter膮 6
Wszystkie wymienione wcze艣niej warto艣ci maj膮 znacz膮cy wp艂yw na znalezione przez system rozwi膮zanie, nale偶y wiec dobiera膰 je dla ka偶dego rozpatrywanego problemu. Z艂e warto艣ci parametr贸w mog膮 powodowa膰 niepoprawn膮 prac臋 algorytmu.
5.4 Proces oblicze艅
Proces oblicze艅 aktywowany jest poprzez opcje „Run” dost臋pn膮 w pasku narz臋dzi oraz w rozwijalnym menu aplikacji. Aktywacja tej opcji powoduje zablokowanie innych opcji, kt贸rych u偶ycie podczas procesu oblicze艅 mog艂oby by膰 krytyczne dla poprawnej pracy algorytmu.
D艂ugo艣膰 procesu oblicze艅 jest zale偶na od nast臋puj膮cych czynnik贸w
Wielko艣ci rozpatrywanego problemu
Ilo艣ci iteracji algorytmu
Ilo艣ci mr贸wek poszukuj膮cych rozwi膮zania w ka偶dej iteracji
Wida膰 wi臋c, 偶e mo偶e by膰 on wzgl臋dnie d艂ugi, dla r贸偶nych ustawie艅 aplikacji i聽danych wej艣ciowych. Dla ilustracji post臋p贸w pracy algorytmu, oraz czasu jaki pozosta艂 do zako艅czenia pracy, w g艂贸wnym oknie aplikacji umieszczone zasta艂y dwa paski post臋pu (zobacz rysunek 13)
Rys. 13
Opisywane wcze艣niej paski post臋pu widoczne s膮 w prawym rogu g艂贸wnego okna aplikacji. Pierwszy nazwany „Iteration Progress” informuje o ilo艣ci wykonanych przez algorytm iteracji, drugi nazwany „Ant Progress” informuje o ilo艣ci mr贸wek, kt贸re poszukiwa艂y ju偶 rozwi膮zania podczas ka偶dej iteracji.
5.5 Wyniki oblicze艅
Po zako艅czeniu procesu oblicze艅 samoczynnie wy艣wietlane jest okienko dialogowe pokazuj膮ce szczeg贸艂owo najlepsze znalezione rozwi膮zanie. Okienko to jest dost臋pne tak偶e w opcji „Result” dost臋pnej w pasku narz臋dzi oraz w rozwijalnym menu aplikacji.
Rys. 14
W opisywanym okienku dialogowym mo偶emy zobaczy膰 warto艣膰 najlepszego rozwi膮zania znalezionego przez aplikacje w procesie oblicze艅 oraz dok艂adny opis drogi.
Wyniki oblicze艅 widoczne s膮 tak偶e w g艂贸wnym oknie aplikacji. Znajduj膮 si臋 tam dwa wykresy wizualizuj膮ce:
„Iterationts Best Solution” - wykres najlepszych rozwi膮za艅 znajdywanych w poszczeg贸lnych iteracjach
„Global Best Solution” - wykres ukazuj膮cy post臋py w poszukiwaniu globalnie najlepszego rozwi膮zania.
Wykresy te pojawiaj膮 si臋 tak偶e na zako艅czenie procesu oblicze艅.
5.6 Pliki pomocy
Zaimplementowany system komputerowy posiada tak偶e rozwini臋ty system plik贸w pomocy. Zaopatrzony jest w pomoc kontekstow膮 mog膮c膮 by膰 pomocn膮 podczas pracy z aplikacj膮 przez u偶ytkownik贸w nie zapoznanych z tre艣ci膮 cz臋艣ci pisemnej pracy. Pomoc kontekstowa uaktywniana jest za pomoc膮 klawiatury komputerowej przyciskiem聽F1.
5.7 Opis implementacji systemu.
System komputerowy zosta艂 zaimplementowany przy u偶yciu 艣rodowiska programistycznego Visual C++, z wykorzystaniem biblioteki MFC (Microsoft Foundation Class ). Jest to system dwu-w膮tkowy, w kt贸rym wszystkie obliczenia odbywaj膮 si臋 w oddzielnym w膮tku, dla unikni臋cia blokady ca艂ego systemu podczas procesu oblicze艅.
Klasy zaimplementowane podczas realizacji systemu mo偶na podzieli膰 na nast臋puj膮ce grupy:
5.7.1 G艂贸wne klasy aplikacji
5.7.1.1 Klasa CAntApp
Nazwa klasy |
CAntApp |
Klasa bazowa |
CWinApp |
Kr贸tki opis |
Implementacja obiektu aplikacji. Zawiera wszystkie obiekty i zmienne globalne, do kt贸rych jest dost臋p we wszystkich w膮tkach systemu. |
Uwagi |
Warto艣ci zmiennych, kt贸re zawieraj膮 warto艣ci parametr贸w oblicze艅 zapisywane s膮 w rejestrze systemowym i odczytywane przy ponownym uruchomieniu aplikacji. |
Tabela 1
Diagram dziedziczenia dla klasy CAntApp.
Diagram wsp贸艂pracy dla klasy CAntApp
Spis metod oraz zmiennych klasy
Metody Publiczne
CAntApp ()
~CAntApp ()
virtual BOOL InitInstance ()
virtual int ExitInstance ()
virtual void WinHelp (DWORD dwData, UINT nCmd = HELP_CONTEXT)
afx_msg void OnAppAbout ()
Atrybuty Publiczne
double** m_matrix
CString m_strProblemName
CString m_strType
CString m_strComment
CString m_strFileName
long m_nSize
long* m_pResultTable
double m_nResultSize
unsigned long m_nSeriesNumber
unsigned long m_nAntNumber
unsigned long m_nAntOperation
unsigned long m_nQZero
double m_dbBeginTrace
double m_dbAlfa
double m_dbBeta
double m_dbQ
double m_dbTauZero
double m_dbKsi
double m_db_q_Param
5.7.1.2 Klasa CAntDoc
Nazwa klasy |
CAntDoc |
Klasa bazowa |
CDocument |
Kr贸tki opis |
Implementacja obiektu dokumentu, niezb臋dnego do realizacji architektury Widok-Dokument, preferowanej w MFC. |
Uwagi |
Brak |
Tabela 2
Diagram dziedziczenia dla CAntDoc
Diagram wsp贸艂pracy dla CAntDoc:
Spis metod klasy
Metody Publiczne
virtual BOOL OnNewDocument ()
virtual void Serialize (CArchive& ar)
virtual ~CAntDoc ()
Metody Chronione
CAntDoc ()
5.7.1.3 Klasa CAntView
Nazwa klasy |
CantView |
Klasa bazowa |
CformView |
Kr贸tki opis |
Implementacja obiektu widoku, niezb臋dnego do realizacji architektury Widok-Dokument, preferowanej w MFC. |
Uwagi |
Brak |
Tabela 3
Diagram dziedziczenia dla klasy CAntView
Diagram wsp贸艂pracy dla klasy CAntView:
Spis metod i zmiennych klasy
Metody Publiczne
CAntDoc* GetDocument ()
virtual BOOL PreCreateWindow (CREATESTRUCT& cs)
int UpdateAllControl (bool bUpdate)
virtual ~CAntView ()
Atrybuty Publiczne
CProgressCtrl m_ctrIterationProgress
CProgressCtrl m_ctrAntProgress
CString m_strProblemDescription
CString m_strProblemName
long m_nProblemSize
CAntChart m_leftAntChart
CAntChart m_rightAntChart
Metody Chronione
CAntView ()
virtual void DoDataExchange (CDataExchange* pDX)
virtual void OnInitialUpdate ()
afx_msg void OnEditCut ()
afx_msg void OnEditCopy ()
afx_msg void OnEditPaste ()
afx_msg void OnEditUndo ()
afx_msg void OnEditDelete ()
afx_msg void OnEditSelectAll ()
afx_msg void OnUpdateEditCopy (CCmdUI* pCmdUI)
afx_msg void OnUpdateEditCut (CCmdUI* pCmdUI)
afx_msg void OnUpdateEditDelete (CCmdUI* pCmdUI)
afx_msg void OnUpdateEditPaste (CCmdUI* pCmdUI)
afx_msg void OnUpdateEditSelectAll (CCmdUI* pCmdUI)
afx_msg void OnUpdateEditUndo (CCmdUI* pCmdUI)
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
Metody Prywatne
void ProgressInitialUpdate ()
5.7.1.4 Klasa CAntFrame
Nazwa klasy |
CAntFrame |
Klasa bazowa |
CFrameWnd |
Kr贸tki opis |
Implementacja obiektu szkieletu okna, wyst臋puj膮cego w aplikacji typu SDI (Single document interface).Zawiera obs艂ug臋 wszystkich wiadomo艣ci przekazywanych przez w膮tek roboczy do g艂贸wnego w膮tku aplikacji.. |
Uwagi |
Brak |
Tabela 4
Diagram dziedziczenia dla klasy CAntFrame
Diagram wsp贸艂pracy dla klasy CAntFrame:
Spis metod i zmiennych klasy
Metody Publiczne
virtual BOOL PreCreateWindow (CREATESTRUCT& cs)
virtual ~CAntFrame ()
Atrybuty Publiczne
CAntThread* m_pWorkingThread
Metody Chronione
CAntFrame ()
afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct)
afx_msg void OnFileNewAnt ()
afx_msg void OnFileOpenAnt ()
afx_msg void OnFileSaveAnt ()
afx_msg void OnFileSaveAsAnt ()
afx_msg void OnAntRun ()
afx_msg void OnUpdateFileNewAnt (CCmdUI* pCmdUI)
afx_msg void OnUpdateFileOpenAnt (CCmdUI* pCmdUI)
afx_msg void OnUpdateFileSaveAnt (CCmdUI* pCmdUI)
afx_msg void OnUpdateFileSaveAsAnt (CCmdUI* pCmdUI)
afx_msg void OnResult ()
afx_msg void OnDataReview ()
afx_msg void OnSettings ()
afx_msg void OnClose ()
afx_msg void OnTbAntsMenu ()
afx_msg void OnTbEditMenu ()
afx_msg void OnTbFileMenu ()
afx_msg void OnTbHelpMenu ()
afx_msg void OnUpdateTbAntsMenu (CCmdUI* pCmdUI)
afx_msg void OnUpdateTbEditMenu (CCmdUI* pCmdUI)
afx_msg void OnUpdateTbFileMenu (CCmdUI* pCmdUI)
afx_msg void OnUpdateTbHelpMenu (CCmdUI* pCmdUI)
afx_msg void OnUpdateAntRun (CCmdUI* pCmdUI)
afx_msg void OnUpdateDataReview (CCmdUI* pCmdUI)
afx_msg void OnHelpToc ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg LRESULT OnThreadStop (WPARAM, LPARAM)
afx_msg LRESULT OnInitialWorkThread (WPARAM, LPARAM)
afx_msg LRESULT OnAntStep (WPARAM, LPARAM)
afx_msg LRESULT OnIterationStep (WPARAM, LPARAM)
afx_msg LRESULT OnResultShow (WPARAM, LPARAM)
afx_msg void OnToolsCustomize ()
Atrybuty Chronione
CStatusBar m_wndStatusBar
BOOL m_bThreadRun
BOOL m_bFileOpen
5.7.1.4 Klasa CAntThread
Nazwa klasy |
CAntThread |
Klasa bazowa |
CWinThread |
Kr贸tki opis |
Implementacja w膮tku roboczego aplikacji. Posiada zaimplementowane dwa algorytmy obliczeniowe, tzn. „Ants System” oraz „Ants Colony System”. |
Uwagi |
Praca aplikacji nie mo偶e by膰 zako艅czona podczas pracy obiektu tej klasy. Grozi to pozostawieniem przez aplikacj臋 nie zwolnionej pami臋ci operacyjnej. |
Tabela 5
Diagram dziedziczenia dla klasy CAntThread
Diagram wsp贸艂pracy dla klasy CAntThread:
Spis metod i zmiennych klasy
Metody Publiczne
virtual void SetOwner (HWND hWnd)
void SetBeginTraceValue (double dbTraceValue)
virtual BOOL InitInstance ()
virtual int ExitInstance ()
Metody Chronione
CAntThread ()
virtual ~CAntThread ()
int PostMessageToOwner (UINT iMessage, WPARAM w , LPARAM l )
int SendMessageToOwner (UINT iMessage, WPARAM w , LPARAM l )
int RunOneAnt (int* pEdgeNumber, unsigned int nSeed = 0)
void UpdateTraceValue (int** pEdge, double* pResult, int nWidth, int nHeight)
double FindMinResult (double* pResult, int nSizeint, int &nBestNumber)
void CalculateAntResult (int** pTable, int nWidth, int nHeight, double* pResult)
void CalculateGrowth (double** pTable, int** pEdge, double* pResult, int nWidth, int nHeight)
BOOL AntSystem ()
BOOL AntColonySystem ()
int RunACSAnt (int* pEdgeNumber)
Atrybuty Chronione
HWND m_hOwnerWnd
Atrybuty Prywatne
double m_dbBeginValueTrace
double** m_pMatrix
double** m_pTraceMatrix
double* m_pBestResults
long m_nSize
unsigned long* m_pAntAllowed
unsigned long m_nSeriesNumber
unsigned long m_nAntNumber
unsigned long m_nQZero
CAntRandom* m_pRnd
double m_qParam
double m_Q_Param
double m_db_Alfa
double m_db_Beta
double m_db_Tau_Zero
double m_db_Ksi
5.7.2 Klasy implementacji okienek dialogowych
5.7.2.1 Klasa CAboutDlg
Nazwa klasy |
CAboutDlg |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu zawieraj膮cego kr贸tki opis aplikacji. |
Uwagi |
Brak |
Tabela 6
Diagram dziedziczenia dla klasy CAboutDlg
Diagram wsp贸艂pracy dla klasy CAboutDlg:
Spis metod klasy
Metody Publiczne
CAboutDlg ()
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
5.7.2.2 Klasa CAntDataReviewDlg
Nazwa klasy |
CAntDataReviewDlg |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu pozwalaj膮cego na weryfikacje macierzy odleg艂o艣ci wprowadzonej jako dane wej艣ciowe do aplikacji. |
Uwagi |
Brak |
Tabela 7
Diagram dziedziczenia dla klasy CAntDataReviewDlg
Diagram wsp贸艂pracy dla klasy CAntDataReviewDlg:
Spis metod i zmiennych klasy
Metody Publiczne
CAntDataReviewDlg (CWnd* pParent = NULL)
Atrybuty Publiczne
CAntGrid m_wndGrid
long m_nSize
bool m_bReadOnly
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
virtual BOOL OnInitDialog ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg void OnContextMenu (CWnd* pWnd, CPoint point)
virtual void OnOK ()
5.7.2.3 Klasa CAntGridDlg
Nazwa klasy |
CAntGridDlg |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu pozwalaj膮cego wprowadzenie macierzy odleg艂o艣ci podczas tworzenia nowego problemu. |
Uwagi |
Brak |
Tabela 8
Diagram dziedziczenia dla klasy CAntGridDlg
Diagram wsp贸艂pracy dla klasy CAntGridDlg:
Spis metod i zmiennych klasy
Metody Publiczne
CAntGridDlg (CWnd* pParent = NULL)
Atrybuty Publiczne
CAntGrid m_wndGrid
BOOL m_bRandom
int m_nMinRand
int m_nMaxRand
long m_nSize
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
virtual BOOL OnInitDialog ()
virtual void OnOK ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg void OnContextMenu (CWnd* pWnd, CPoint point)
5.7.2.3 Klasa CAntNewProblem
Nazwa klasy |
CAntNewProblem |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu pozwalaj膮cego na wybranie rodzaju wprowadzania danych oraz rozmiaru nowego problemu. |
Uwagi |
Brak |
Tabela 9
Diagram dziedziczenia dla klasy CAntNewProblem
Diagram wsp贸艂pracy dla klasy CAntNewProblem:
Spis metod i zmiennych klasy
Metody Publiczne
CAntNewProblem (CWnd* pParent = NULL)
Atrybuty Publiczne
CEdit m_ctr_wl_Rodzaj
CEdit m_ctr_wl_Min
CEdit m_ctr_wl_Max
CEdit m_ctr_ed_Rodzaj
int m_nRadio
long m_db_Max
long m_db_MIN
long m_l_wl_Rodzaj
long m_l_ed_Rodzaj
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
virtual BOOL OnInitDialog ()
virtual void OnOK ()
virtual void OnCancel ()
afx_msg void OnRadioLosowanie ()
afx_msg void OnRadioEdycja ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg void OnContextMenu (CWnd* pWnd, CPoint point)
Metody Prywatne
void EnableLosowanie (bool bEnable)
void EnableWprowadzanie (bool bEnable)
5.7.2.4 Klasa CAntResultDlg
Nazwa klasy |
CAntResultDlg |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu pozwalaj膮cego na obejrzenie szczeg贸艂贸w dotycz膮cych najlepszego rozwi膮zania znalezionego podczas procesu oblicze艅. |
Uwagi |
Brak |
Tabela 10
Diagram dziedziczenia dla klasy CAntResultDlg
Diagram wsp贸艂pracy dla klasy CAntResultDlg:
Spis metod i zmiennych klasy
Metody Publiczne
CAntResultDlg (CWnd* pParent = NULL)
Atrybuty Publiczne
CListCtrl m_ctrList
CString m_strResult
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
virtual BOOL OnInitDialog ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg void OnContextMenu (CWnd* pWnd, CPoint point)
Metody Prywatne
void AddListData ()
void AddListHeaders ()
5.7.2.5 Klasa CAntSettingsDlg
Nazwa klasy |
CAntSettingsDlg |
Klasa bazowa |
CDialog |
Kr贸tki opis |
Implementacja dialogu pozwalaj膮cego na ustawienie parametr贸w oblicze艅. |
Uwagi |
Brak |
Tabela 11
Diagram dziedziczenia dla klasy CAntSettingsDlg
Diagram wsp贸艂pracy dla klasy CAntSettingsDlg:
Spis metod i zmiennych klasy
Metody Publiczne
CAntSettingsDlg (CWnd* pParent = NULL)
Atrybuty Publiczne
CSpinButtonCtrl m_ctrQZeroSpin
CSpinButtonCtrl m_ctrSmallQSpin
CSpinButtonCtrl m_ctrSeriesNumberSpin
CSpinButtonCtrl m_ctrKsiSpin
CSpinButtonCtrl m_ctrAntsNumberSpin
int m_nOperation
UINT m_nAntsNumber
UINT m_nSeriesNumber
UINT m_nSmallQParam
UINT m_nKsiParam
UINT m_nQZero
double m_dbAlfa
double m_dbBeta
double m_dbBeginTraceValue
double m_dbBigQ
double m_dbTauZero
Metody Chronione
virtual void DoDataExchange (CDataExchange* pDX)
virtual BOOL OnInitDialog ()
virtual void OnOK ()
afx_msg BOOL OnHelpInfo (HELPINFO* pHelpInfo)
afx_msg void OnContextMenu (CWnd* pWnd, CPoint point)
5.7.3 Klasy pomocnicze
5.7.3.1 Klasa CAntChart
Nazwa klasy |
CAntChart |
Klasa bazowa |
CStatic |
Kr贸tki opis |
Implementacja klasy odpowiedzialnej za wykresy wy艣wietlane w g艂贸wnym oknie aplikacji. |
Uwagi |
Brak |
Tabela 12
Diagram dziedziczenia dla klasy CAntChart
Diagram wsp贸艂pracy dla klasy CAntChart:
Spis metod i zmiennych klasy
Metody Publiczne
CAntChart ()
void RemoveAll ()
int Add (double dbNewElement)
void ShowChart (unsigned long nSeriesNumber)
void InitialGraph (unsigned long nSeriesNumber)
void SetGraghStyle (unsigned long nSeriesNumber)
void SetAutoscale (BOOL)
void ClearChart ()
virtual void SetGraphData (int nIndex,int nGroup,double d)
virtual ~CAntChart ()
void SetIndexText (int nIndex, LPCSTR lpText)
Atrybuty Publiczne
BOOL m_bIsAutoscale
int m_nNumberOfPointsToShift
Metody Chronione
afx_msg void OnPaint ()
afx_msg BOOL OnEraseBkgnd (CDC* pDC)
Atrybuty Chronione
BOOL m_bIsGraphShow
CString m_strNoData
SRGraph m_Graph
SRGraph m_EmptyGraph
SRGDecimalScale* m_pYDS
SRGDecimalScale* m_pXDS
SRGTickMarks* m_pXT
SRGTickMarks* m_pYT
SRGGridLines* m_pG
Atrybuty Prywatne
double m_dbMaxValue
double m_dbMinValue
CObArray m_arData
5.7.3.2 Klasa CAntElement
Nazwa klasy |
CAntElement |
Klasa bazowa |
CObject |
Kr贸tki opis |
Klasa odpowiedzialna za przetrzymywanie warto艣ci rozwi膮za艅 znalezionych w poszczeg贸lnych iteracjach. |
Uwagi |
Konieczno艣膰 implementacji tej klasy wynika艂o z u偶ycia klas kontener贸w zaimplementowanych w MFC. |
Tabela 13
Diagram dziedziczenia dla klasy CAntElement
Diagram wsp贸艂pracy dla klasy CAntElement:
Spis metod i zmiennych klasy
Metody Publiczne
CAntElement ()
CAntElement (double dbElement)
virtual ~CAntElement ()
double GetElement ()
void SetElement (double db)
Atrybuty Prywatne
double m_db
5.7.3.3 Klasa CAntFileManager
Nazwa klasy |
CAntFileManager |
Klasa bazowa |
|
Kr贸tki opis |
Klasa odpowiedzialna za operacje na plikach z danymi, tzn. zapis pliku na dysk i odczyt pliku z dysku. |
Uwagi |
Brak |
Tabela 14
Metody Publiczne
bool Initialize ()
bool OpenFile (CString strFile)
bool SaveFile (CString strFile, CString strProblemName, CString strType, CString strComment, long nSize)
CAntFileManager ()
virtual ~CAntFileManager ()
5.7.3.4 Klasa CAntGrid
Nazwa klasy |
CAntGrid |
Klasa bazowa |
CWnd |
Kr贸tki opis |
Klasa odpowiedzialna za obs艂ug臋 siatki u偶ytej do wprowadzania i weryfikacji danych wej艣ciowych. |
Uwagi |
Brak |
Tabela 15
Diagram dziedziczenia dla klasy CAntGrid
Diagram wsp贸艂pracy dla klasy CAntGrid:
Spis metod i zmiennych klasy
Metody Publiczne
CAntGrid ()
virtual ~CAntGrid ()
CString GetCellValue (ROWCOL nRow, ROWCOL nCol)
Metody Chronione
virtual BOOL OnValidateCell (ROWCOL nRow, ROWCOL nCol)
5.7.3.5 Klasa CAntRandom
Nazwa klasy |
CAntRandom |
Klasa bazowa |
CObject |
Kr贸tki opis |
Implementacja generatora liczb pseudo-losowych. Obiekty tej klasy u偶ywane s膮 podczas generacji nowych problem贸w oraz podczas wyboru drogi w czasie procesu oblicze艅. |
Uwagi |
Ustawienie punktu startowego generatora odbywa si臋 w konstruktorze, ale mo偶e by膰 zmieniane podczas 偶ycia obiektu. |
Tabela 16
Diagram dziedziczenia dla klasy CAntRandom
Diagram wsp贸艂pracy dla klasy CAntRandom:
Spis metod i zmiennych klasy
Metody Publiczne
CAntRandom(unsigned int nSeed=0)
BOOL InitWeights(unsigned int)
BOOL AddWeight(unsigned int, unsigned int)
unsigned int GetSeed()
BOOL SetLBound(unsigned int)
unsigned int GetLBound()
unsigned int GetUBound()
BOOL SetUBound(unsigned int)
BOOL SetBounds(unsigned int, unsigned int)
unsigned int GetRandom()
unsigned int GetRandomWeighted()
unsigned int GetRange()
unsigned int GetRange(unsigned int nMin, unsigned int nMax)
void SetMultiplier()
virtual ~CAntRandom()
Atrybuty Chronione
unsigned int m_nMin
unsigned int m_nMax
unsigned int m_nSeed
double m_dMultiplier
unsigned int m_nWeights
unsigned int* m_pWeights
Wersja instalacyjna systemu komputerowego zawarta jest na kr膮偶ku CD-R do艂膮czonym do tekstu pracy. Znajduje si臋 na nim plik wykonywalny o nazwie AntSetup.exe, uruchomienie kt贸rego powoduje rozpocz臋cie procesu instalacji. Po pomy艣lnym zako艅czeniu procesu instalacji aplikacja gotowa jest do u偶ytku.
6. Przyk艂ady i wnioski
System komputerowy zosta艂 wykonany zgodnie z projektem przedstawionym w poprzednim rozdziale, zaimplementowany w j臋zyku programowania C++, przy u偶yciu klas MFC. Testy systemy przeprowadzone zosta艂y na komputerze z procesorem Pentium 166 MHz, 32 MB pami臋ci operacyjnej RAM pod kontrol膮 systemu operacyjnego Windows 98.
Testowanie systemu zosta艂o ukierunkowane na por贸wnanie wynik贸w uzyskiwanych przez zaimplementowane algorytmy z optymalnymi rozwi膮zaniami znanych problem贸w. Wykorzystano do tego przyk艂adowe zagadnienia ATSP zaczerpni臋te z biblioteki TSPLIB. Wyniki tych test贸w przedstawione s膮 w tabeli.
Nazwa problemu |
AS |
ACS |
Najlepsze znane rozwiazanie |
ft70 |
39831 |
38781 |
38673 |
kro124p |
38361 |
36241 |
36230 |
p43 |
2840 |
2810 |
2810 |
ry48p |
15343 |
14422 |
14422 |
Tabela 17
Na postawie danych zawartych w tabeli 17, mo偶na stwierdzi膰, 偶e uzyskane podczas test贸w najlepsze rozwi膮zania s膮 bardzo zbli偶one do najlepszych znanych rozwi膮za艅 problem贸w, w niekt贸rych przypadkach s膮 nawet r贸wne najlepszym rozwi膮zaniom.
Naturalnym wydaje si臋 spostrze偶enie, 偶e g艂贸wny wp艂yw na wyniki oblicze艅 maj膮 dwa czynniki, tzn.
ilo艣膰 mr贸wek
ilo艣膰 iteracji
Wp艂yw tych czynnik贸w na warto艣膰 znalezionego rozwi膮zania przedstawia wykres:
Wykres 2
Na podstawie wykresu wyra藕nie wida膰, 偶e wraz ze wzrostem warto艣ci tych parametr贸w wzrasta efektywno艣膰 tych parametr贸w. Niestety radykalnie wzrasta czas pracy algorytmu.
Wykres 3
Nale偶y jednak podkre艣li膰, 偶e system operacyjny pod kt贸ry dedykowana jest aplikacja nie pozwala na dok艂adne badanie zale偶no艣ci czasowych.
Innymi czynnikami maj膮cymi wp艂yw na efektywno艣膰 algorytmu s膮 warto艣ci parametr贸w, kt贸re mo偶na zmienia膰 za pomoc膮 okienka dialogowego „Settings”. Nie potrafi艂em jednak znale藕膰 og贸lnych zasad, wed艂ug kt贸rych mo偶na ustala膰 najlepsze warto艣ci tych parametr贸w. Podczas testowania aplikacji, dobierane one by艂y eksperymentalnie w zale偶no艣ci od problemu. Wed艂ug moich eksperyment贸w, najlepsze wyniki otrzymywane by艂y z nast臋puj膮cymi warto艣ciami parametr贸w:
伪 = 1
尾 = 0.2
蟿 = 0.7
尉 = 0.1
蟿0 = 0.01
蟻 = 0.9
Aplikacja pozwala na badanie wp艂ywu tych czynnik贸w na warto艣ci rozwi膮za艅 znajdywane przez algorytm. Jako przyk艂ad zamieszczamy wp艂yw parametru 伪.
Wykres 4
Pragn臋 jednak podkre艣li膰, 偶e w przypadku wybrania innego problemu, wykres ten m贸g艂by wygl膮da膰 inaczej i 偶e nie mo偶na jednoznacznie okre艣li膰 najlepszych warto艣ci opisywanych parametr贸w.
Jednak na podstawie wszystkich eksperyment贸w, jestem w stanie stwierdzi膰, 偶e efektywno艣膰 metaheurystyki „Ant Colony System” jest du偶a, pozwalaj膮ca my艣le膰 o zastosowaniu metaheurystyki w opracowaniu rozwi膮za艅 do problem贸w 偶ycia codziennego i nale偶y j膮 propagowa膰. By膰 mo偶e praca ta b臋dzie mia艂a czynny udzia艂 w propagowaniu tej metaheurystyki.
7. Literatura
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. Wprowadzenie do algorytm贸w. Warszawa 1997, 1998.
Bogus艂aw Filipowicz. Badania operacyjne. Wybrane metody obliczeniowe i algorytmy. Cz臋艣膰 1. Krak贸w 1997
Antoni Ko艣cieliski. Teoria oblicze艅. Wyk艂ady z metematycznych podstaw informatyki. Wydawnictwo Uniwersytetu Wroc艂awskiego 1997.
Aleksej Anisimow. Hipertekstowy s艂ownik informatyczny. Praca magisterska napisana pod kierunkiem dr in偶. Tomasza Bilskiego.
Pawe艂 Martynowicz. Badania operacyjne - referat, AGH Krak贸w, Wydzia艂 EAIiE.
Miros艂aw Jab艂o艅ski. Zagadnienie podgrafu g臋stego w grafie zwyk艂ym. Projekt z przedmiotu Automatyzacja Proces贸w Dyskretnych pod przewodnictwem prof. dr hab. In偶. Konrada Wali, AGH Krak贸w, Wydzia艂 EAIiE.
Vittorio Maniezzo, Alberto Colornii. The Ant System Applied to the Quadratic Assignment Problem.
Zbigniew J. Czech, Ewa Marzec. Heuristic Algorythms for Solving the Set-partitioning Problem.
Urszula Boryczka, MARIUSZ Boryczka, Daniel Kuna. Generative Policies in the Job-shop Scheduling Problem.
Marco Dorigo, Vittorio Maniezzo, Alberto Colorni. The Ant System: Optimization by a colony of cooperating agents.
Marco Dorigo, Luca Maria Gambardella. Ant colonies for the traveling salesman problem.
Marco Dorigo, Luca Maria Gambardella. Ant-Q: A Reinforcement Learning approach tothe traveling salesman problem.
Marco Dorigo, Gianni Di Caro, Luca Maria Gambardella. Ant Algorithms for Discrete Optimization.
Luca Maria Gambardella, Marco Dorigo. Has-Sop: Hybrid Ant System for The Sequential Ordering Problem.
Luca Maria Gambardella, Marco Dorigo. An Ant Colony System Hybridized with a New Local Search for the Sequential Ordering Problem
Luca Maria Gambardella, Marco Dorigo. Solving Symmetric and Asymmetric TSPs by Ant Colonies.
Thomas Stutzle, Marco Dorigo. ACO Algorithms for the Traveling Salesman Problem.
T. H. Cormen, Ch. E. Leiserson, R. L. Rivest, „Wprowadzenie do algorytm贸w”, Warszawa 1997, 1998
A. Ko艣cieliski, „Teoria oblicze艅. Wybrane metody obliczeniowe i algorytmy”, Krak贸w 1997
A. Anisimow, „Hipertekstowy s艂ownik informatyczny”, Praca magisterska napisana pod kierunkiem dr in偶. T. Bileckiego.
B. Filipowicz, „Badania operacyjne. Wybrane metody obliczeniowe i algorytmy”, Krak贸w 1997.
P. Martynowicz, „Badania operacyjne- referat”, AGH Krak贸w.
M. Dorigo, V. Maniezzo, A. Colorni, „The Ant System: Optimization by a colony of cooperating agents”.
M. Jab艂o艅ski, „Zagadnienie podgrafu g臋stego w grafie zwyk艂ym”, projekt, AGH Krak贸w.
M. Dorgio, G. Di Carlo, L. M. Gambardella, „Ant Algorithms for Discrete Optimization”
M. Dorigo, V. Maniezzo, A. Colorni, „The Ant System: Optimization by a colony of cooperating agents”.
Informatyka w Sterowaniu i Zarz膮dzaniu
3
Informatyka w Sterowaniu i Zarz膮dzaniu
3
2
6
5
4
1
2
3
6
5
4
1