1 1. Wstęp ........................................................

Transkrypt

1 1. Wstęp ........................................................
1
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
1. Wstęp ............................................................................................................................... 2
2. Podstawowe pojęcia......................................................................................................... 3
2.1. Sztuczna inteligencja ............................................................................................ 3
2.2. Systemy mrówkowe.............................................................................................. 4
2.3. Problem komiwojażera ......................................................................................... 7
3. Algorytm rozwiązania problemu komiwojażera.............................................................. 9
3.1. Zakres opracowania .............................................................................................. 9
3.2. Algorytm mrówkowy............................................................................................ 9
3.3. Algorytm włączania ............................................................................................ 12
4. Program.......................................................................................................................... 14
4.1. Interfejs programu............................................................................................... 14
4.2. Obsługa programu............................................................................................... 16
4.2.1. Funkcje podstawowe.................................................................................... 16
4.2.2. Funkcje konfiguracyjne ............................................................................... 17
4.2.3. Opcje dodatkowe ......................................................................................... 19
4.3. Uruchomienie programu ..................................................................................... 19
4.4. Możliwości.......................................................................................................... 21
4.5. Ograniczenia ....................................................................................................... 21
5. Testy porównawcze ....................................................................................................... 22
5.1. Wpływ ilości zostawianego feromonu na algorytmy mrówkowe....................... 22
5.2. Wpływ tempa odparowania feromonu................................................................ 26
5.3. Znaczenie ilości feromonu i widoczności miast ................................................. 30
5.4. Wpływ wielkości populacji................................................................................. 34
5.5. Wpływ liczby iteracji.......................................................................................... 39
5.6. Wpływ ilości miast na czas działania algorytmów ............................................. 43
5.7. Podsumowanie algorytmów................................................................................ 47
6. Wnioski .......................................................................................................................... 51
Bibliografia: ....................................................................................................................... 53
Załącznik 1 - Biblioteka TSPLIB95 .................................................................................. 54
Załącznik 2 – Schematy blokowe ...................................................................................... 55
2
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
1. Wstęp
Cogito ergo sum (tłum. „Myślę więc jestem”) – jak powiedział Kartezjusz.
Myślenie zawsze było rzeczą ludzką. Jednak wraz z rozwojem technik cyfrowych coraz
więcej osób stara się poznać zasady pojmowania i stworzyć maszynę, która podobnie jak
człowiek, będzie w stanie podejmować inteligentne decyzje w nowych sytuacjach. Na
dzień dzisiejszy sztuczna inteligencja nie stoi jeszcze na zbyt wysokim poziomie (w
porównaniu do istot inteligentnych), ale jak każda pionierska dziedzina musi pokonać
początkowe trudności, a jej rozwój, mimo że nieznaczny, to jednak ciągle jest wyraźny.
Nauka o sztucznym umyśle stara się, na dzień dzisiejszy, rozwiązywać małe
problemy, tworząc duże budowle z małych klocków tak, aby może kiedyś w przyszłości
wyciągnąć z nich odpowiednie wnioski lub połączyć w kolejny, jeszcze większy model.
Takim klockiem niewątpliwie jest dział sztucznej inteligencji zajmujący się algorytmami
mrówkowymi. Algorytmami, które swój początek wzięły z obserwacji przyrody i reguł
jakie rządzą owadami kolonialnymi.
Algorytmy mrówkowe mogą posłużyć do rozwiązywania najróżniejszych
problemów. Jednym ze sztandarowych zastosowań może być problem komiwojażera,
czyli kogoś, kto ma za zadanie znaleźć najkrótszą marszrutę.
Praca ta ma na celu porównanie różnych odmian algorytmu mrówkowego oraz
innych algorytmów rozwiązujących problem komiwojażera. Wszystkie próby i
porównania zostały przeprowadzone na aplikacji wykorzystującej kilka różnych
algorytmów, w tym trzy odmiany algorytmu mrówkowego.
W przedstawionej pracy znajdują się w rozdziale 2 podstawowe pojęcia z zakresu
sztucznej inteligencji i problemu komiwojażera. Rozdział 3 przybliża problem
komiwojażera oraz algorytmy, za pomocą których można ten problem rozwiązać. W
rozdziale 4 znajduje się dokładny opis działania programu, rozwiązującego problem
komiwojażera za pomocą algorytmów mrówkowych, algorytmu włączania oraz algorytmu
losowego. Wyniki doświadczeń wraz z komentarzem znajdują się w rozdziale 5. Rozdział
6 zawiera końcowe wnioski z przeprowadzonych badań.
3
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. Podstawowe pojęcia
Do podstawowych pojęć potrzebnych do lepszego zrozumienia problemu,
zaliczymy przede wszystkim pojęcie sztucznej inteligencji, definicję algorytmu
mrówkowego wraz z jego kilkoma wybranymi typami, jak i zagadnienie problemu
komiwojażera.
2.1. Sztuczna inteligencja
Dla poprawnego zrozumienia pojęcia sztucznej inteligencji, należy najpierw
wyjaśnić, co to takiego jest inteligencja.
Inteligencję można zdefiniować na wiele różnych sposobów. Nie istnieje jedna,
lepsza, bardziej trafna definicja, którą można się posłużyć, a każdy może przedstawić
swoją własną, będącą równie dobrą, co wszystkie pozostałe. Oto kilka przykładów:
Inteligencja jest to pewna cecha umysłu, która odpowiada za sprawność w zakresie
myślenia i rozwiązywania problemów. Poziom inteligencji zależy od poprawności
rozumienia, skuteczności poszukiwania poprawnych rozwiązań problemów oraz
sprawności działania w sytuacjach nowych czy nieznanych [4].
Z punktu widzenia biologicznego możemy powiedzieć, że inteligencja jest to
obserwowana w warunkach naturalnych lub eksperymentalnych zdolność niektórych
zwierząt do szybkiego znalezienia najtrafniejszego postępowania w nowej, nieznanej
sytuacji [4].
Istnieje również inna, bardziej ukierunkowana na człowieka definicja inteligencji,
która mówi, że inteligencja to zdolność dostosowania się naszego umysłu do zaistniałej
sytuacji, a stopień inteligencji zależny jest od czasu jakiego potrzebował nasz umysł aby
się do niej dostosować[1i].
Chcąc określić sztuczną inteligencję napotkamy podobna sytuację, jaka miała
miejsce powyżej – wiele różnych i jednocześnie poprawnych definicji.
4
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Sztuczna inteligencja (ang. Artificial Intelligence – dalej AI), jest działem
informatyki, i jej głównym celem jest badanie reguł rządzących inteligentnymi
zachowaniami, tworzenie ich modeli, a przede wszystkim tworzenie systemów
komputerowych symulujących te zachowania [4].
Według jednej z encyklopedii sztuczna inteligencja to technologia i kierunek
badań informatycznych i psychologicznych. Jej zadaniem jest "konstruowanie maszyn, o
których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów
inteligencji", jak to zostało zdefiniowane przez Johna McCarthy'ego, który w 1955 r.
zaproponował ten termin [2i].
Programy komputerowe powstałe na modelach wywodzących się z systemów
inteligentnych mają bardzo szeroki zakres zastosowania, począwszy od na przykład
rozpoznawania kształtów, poprzez prowadzenie różnego typu gier, do dowodzenia
twierdzeń lub komponowania muzyki. Programy te można stosować praktycznie w każdej
dziedzinie, w której istnieje potrzeba przeanalizowania pewnego problemu i wymagane
jest dostarczenie odpowiedzi szybko i w sposób zautomatyzowany.
Sztuczna inteligencja ma również pewne cele. Na dzień dzisiejszy wydaje się, że
szczytem, jaki należałoby osiągnąć w rozwijaniu metod AI, byłaby maszyna dorównująca
inteligencją człowiekowi, ale że przyszłość jest niewiadomą, prawdopodobnie, jak
zwykle, uda jej się nas zaskoczyć.
2.2. Systemy mrówkowe
W trakcie ewolucji sztucznej inteligencji powstało wiele algorytmów, które
wykorzystując pewne reguły odnajdują rozwiązanie problemu. Możemy do nich zaliczyć
algorytmy genetyczne, sieci neuronowe i oczywiście systemy mrówkowe.
Algorytmy czy też systemy mrówkowe, powstały między innymi w wyniku
obserwowania przyrody i zrozumienia zasady działania owadów społecznych. Owady
społeczne (takie jak mrówki, pszczoły czy termity) mają kilka cech, pozwalających na
łatwiejsze oprogramowanie ich zachowań. Do najważniejszych należy prostota
pojmowania świata przez pojedynczego osobnika. Osobnik nie skupia się na całym
problemie – on nawet nie musi wiedzieć o jego istnieniu. Nadorganizm, tworzony przez
5
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
całą populację, ma za zadanie rozwiązanie problemu, a do rozwiązania wykorzystuje
wszelkie zajścia społeczne występujące pomiędzy jednostkami [1].
Tak więc mamy nadorganizm, składający się z prostych, nieinteligentnych
osobników, przekazujących sobie pewne informacje i reagujących w sposób przypadkowy
na bodźce zewnętrzne. W ten sposób powstaje skomplikowany system zależności
zrodzony na skutek przypadkowych zajść, ale dążący do rozwiązania pewnego trudnego
problemu, którego rozwiązanie przez jeden organizm byłoby niemożliwe [1].
a)
b)
c)
Rys. 1 Reakcja koloni mrówek na pojawienie się przeszkody
Pojedyncze organizmy, nazwijmy je mrówkami, mają możliwość porozumiewania
się. Nie jest to oczywiście metoda porozumiewania zbliżona do jakiegoś konkretnego
typu wymieniania się informacjami. Mrówki podążając po jakimś terenie pozostawiają za
sobą ślad zapachowy - tak zwany feromon. Taki ślad wyczuwany jest przez inne mrówki,
które podążając za tym śladem wzmacniają go, lub w wypadku wybrania innej drogi
wędrówki zostawiają ślad dający kolejnym mrówkom większą szansę na wybór
alternatywnego rozwiązania. Kolejne mrówki mają już więcej możliwości, ale zawsze
każda z mrówek może wybrać trasę jeszcze nieuczęszczaną – w ten sposób w każdej
6
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
chwili istnieje możliwość rozwiązania problemu w sposób jeszcze nieznany dla populacji
[1].
Rzeczywiste mrówki po znalezieniu źródła pożywienia wytyczają po pewnym
czasie błądzenia najkrótszą trasę pomiędzy mrowiskiem, a tym źródłem (Rys. 1 a). Ilość
feromonu na trasie staje się tak duża, że praktycznie żadna z mrówek nie zbacza z trasy
wytyczonej przez całą kolonię. Jednak pojawienie się przeszkody na trasie wymaga od
mrówek wytyczenia nowej trasy (Rys. 1 b).
W początkowym etapie prawdopodobieństwo, że mrówki wybiorą którekolwiek z
rozwiązań jest jednakowe. Na tym etapie mrówki, które przypadkiem wybrały krótszą
trasę zostawiły więcej śladu zapachowego (mniej feromonu zdążyło odparować).
Następne mrówki z większym prawdopodobieństwem wybiorą krótszą drogę, tym samym
wzmacniając feromon. Następuje tutaj zjawisko dodatniego sprzężenia zwrotnego, które
w efekcie pozwala mrówkom (nieświadomie dla nich samych) na znalezienie najbardziej
optymalnego rozwiązania (Rys. 3 c) [1].
Podstawową różnicą pomiędzy stosowanymi w symulacjach sztucznymi
mrówkami, a ich naturalnymi odpowiednikami będzie to, że sztuczne mrówki zostaną
obarczone pamięcią, nie będą ślepe (potrafią oceniać odległości), a upływ czasu nie
będzie miał relatywnego wpływu na zachowanie mrówek czy tempo odparowywania
feromonu.
Systemy mrówkowe można zastosować w wielu dziedzinach informatyki oraz
życia codziennego. Krishnan Krishnaiyer i
S. Hossein Cheraghi w artykule „Ant
Algorithms: Review and Future Applications” przedstawiają kilka takich zastosowań [3]:
•
Szkolenie kierowców autobusów (autor: Forsyth P. i Wren A, 1997),
•
Planowanie przestrzenne (autor: Bland J.A, 1999),
•
Grafika (autor: Tzafestas E.S.,2000),
•
Sieci Peer2Peer (autor: Baboglu O. Meling, H. Montresor A., 2001),
•
Problem lokalizacji przystanków autobusowych (autor: Jong, de J and Wiering,
M., 2001),
•
Optymalizacja bioreaktorów (autor: Jayaraman, V.K., Kulkarni, B.D. i Gupta, K.,
2001 ).
7
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2.3. Problem komiwojażera
Problem komiwojażera jest przykładem problemu optymalizacji kombinatoryjnej.
Najbardziej podstawowa wersja tego problemu zakłada, że komiwojażer (ktoś planujący
marszrutę)
ma za zadanie znaleźć najkrótszą drogę od pewnego miasta startowego
poprzez n miast i następnie powrócić do miasta startowego, rys. 2.
Gdańsk
304
341
486
Poznań
584
Warszawa
304
403
280
Wrocław
304
341
299
Kraków
Rys. 2 Graf ważony o wierzchołkach odpowiadających pięciu miastom polskim [3i]
Istnieje wiele odmian tego problemu. Do jednej z nich zaliczamy problem, w
którym koszt, czy też wagi połączeń, nie muszą być jednakowe w obu kierunkach. Gdy
wagi nie są symetryczne problem nosi nazwę asymetrycznego problemu komiwojażera.
Problem komiwojażera występuje w wielu aspektach życia codziennego, jak na
przykład zaplanowanie wycieczki rodzinnej z odwiedzeniem konkretnych atrakcji
turystycznych, po mniej banalne problemy jak obsługa ramienia robota nitującego [6] lub
umieszczającego mikroukłady na płytkach drukowanych. W takich przypadkach
kluczowe znaczenie ma koszt (czas i energia potrzebna na wykonanie wszystkich
ruchów), jak i prosty i niekosztowny cykl przeprogramowania maszyny dla innych
układów „miast”.
Również popularny ostatnio rynek rozrywki komputerowej stawia coraz większy
nacisk na podnoszenie poziomu sztucznej inteligencji dla przeciwników komputerowych,
gdzie problem komiwojażera (na przykład przeprowadzenie postaci przez lokacje)
również często występuje, a czas wykonania całej operacji powinien być jak najbardziej
skrócony, przy jednoczesnym zachowaniu wystarczająco dobrego rozwiązania.
8
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
O rozwiązaniu problemu komiwojażera mówimy jako o problemie NP trudnym.
Oznacza to, że ilość obliczeń potrzebna do rozwiązania rośnie w miarę zwiększania liczby
miast n. Często przeszukanie całego drzewa stanów dla większej liczby miast byłoby tak
czasochłonne, że w praktyce niemożliwe do wykonania.
Dla lepszego przedstawienia wzrostu ilości rozwiązań możemy posłużyć się
dwoma przykładami: dla 10 i 20 miast. W problemie zawierającym 10 miast ilość
rozwiązań wynosi: 9!/2, co jest równe 181.400 rozwiązań. Natomiast dla problemu 20
miast ilość rozwiązań wynosi 19!/2, co jest równe 60.822.550.204.416.000.
Na tym prostym przykładzie widać, że zwiększenie liczby miast z 10 do 20
spowodowało olbrzymi wzrost ilości możliwych rozwiązań. Przeszukanie wszystkich
możliwych rozwiązań dla problemu 20 czy 30 miast mogłoby zająć na komputerach klasy
PC wiele dni, jeśli nie tygodni. Każdy bardziej skomplikowany problem znalazłby się
poza mocą obliczeniową nawet najszybszego komputera.
Pomocą przy przeszukiwaniu są heurystyki – czyli metody wykluczające pewne
mniej obiecujące rozwiązania i znajdujące rozwiązania suboptymalne czyli wystarczająco
dobre, by można je zaakceptować. Właśnie podczas rozwiązywania problemu
komiwojażera posłużymy się metodami heurystycznymi.
9
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. Algorytm rozwiązania problemu komiwojażera
W celu rozwiązania problemu komiwojażera, w pracy posłużono się dwoma
różnymi algorytmami: algorytmem mrówkowym oraz algorytmem włączania (w celu
porównania).
3.1. Zakres opracowania
Problem komiwojażera zawężono do miast rozmieszczonych w układzie
kartezjańskim, co w praktyce oznacza, że każdemu miastu zostaną przyporządkowane
dwie współrzędne: x oraz y. Przyjęto też założenie, że pomiędzy miastami nie występują
połączenia (drogi) i z każdego miasta można udać się do każdego innego miasta nie
przechodząc przez żadne inne miasto.
Ilość miast oraz wszystkie zmienne, takie jak ilość iteracji (liczba przejść całej
populacji mrówek) czy wielkość populacji (ilość mrówek w kolonii), są całkowicie
dowolne i mogą być dobrane przez użytkownika według uznania. Wynikiem jest
całkowita droga jaką mrówka pokona idąc od miasta początkowego, przez wszystkie
miasta pozostałe, z powrotem do miasta, z którego rozpoczęła wędrówkę.
3.2. Algorytm mrówkowy
Problem komiwojażera jest dany poprzez graf ważony (N, E), gdzie N jest zbiorem
miast, a E jest zbiorem łuków pomiędzy tymi miastami [1].
Każda z mrówek w populacji posiada następujące właściwości
•
Pozostawia ślad zapachowy (feromon) na krawędzi pomiędzy miastami.
•
Wybór kolejnego z miast przez mrówkę jest obliczany ze wzoru (1) przy
pomocy
prawdopodobieństwa,
będącego
funkcją
ilości
feromonu
zostawionego przez inne mrówki na krawędzi między miastami oraz
odległości pomiędzy nimi.
10
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
•
Każda mrówka musi tylko raz odwiedzić każde miasto w jednym cyklu [1].
Dla każdej mrówki losowane jest miasto startowe i zarazem końcowe. Mrówka
udając się do kolejnego miasta, musi wylosować miasto z pośród miast jeszcze
nieodwiedzonych. Do tego celu używana jest tablica TABU, gdzie wpisane są już
wszystkie przez nią odwiedzone miasta. Miasta z tablicy TABU nie są uwzględniane
podczas
losowania.
Dla
każdego
z
dozwolonych
miast
obliczane
jest
prawdopodobieństwo wyboru za pomocą wzoru:
jeżeli j nie należy do tablicy TABU,
(1)
w innym przypadku,
gdzie:
i – numer miasta, w którym mrówka znajduje się aktualnie,
j – numer miasta, dla którego obliczamy prawdopodobieństwo,
p – prawdopodobieństwo,
η – widoczność (odwrotność odległości) pomiędzy miastami,
τ – ślad feromonowy,
α, β – parametry względnej ważności pomiędzy śladem feromonu a widocznością.
Gdy obliczone zostanie już prawdopodobieństwo wylosowania dla pozostałych
miast, następuje właściwe losowanie. Daje to mrówce możliwość wybrania innej trasy niż
jej poprzedniczki, przy czym zazwyczaj wybierze ona trasę najczęściej uczęszczaną.
Mrówka po pokonaniu pewnej krawędzi pomiędzy miastami, zostawia pomiędzy
nimi feromon. Istnieje kilka odmian algorytmu różniących się warunkiem pozostawienia
feromonu. Omówimy trzy z nich: feromon stały, feromon cykliczny oraz zmodyfikowaną
wersję feromonu cyklicznego - feromon cykliczny-elitarny.
Feromon stały
Jest to najprostsza wersja algorytmu. Zakłada, że każda mrówka zawsze
zostawia ślad feromonowy. Nieuwzględniane są wyniki rozwiązania problemu.
11
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Istnieje pewna odmiana tego rozwiązania, uzależniająca ilość pozostawianego
feromonu na krawędzi od odległości pomiędzy miastami. Nosi ona nazwę feromon
średni.
Feromon cykliczny:
Mrówki zostawiają feromon dopiero po przejściu całej trasy. Ilość
feromonu obliczana jest ze wzoru:
jeżeli k-ta mrówka wybierze krawędź
(i,j) w swojej trasie,
(2)
w innym przypadku,
gdzie Q3 jest stałą, Lκ jest długością trasy k-tej mrówki, a ∆τij to ilość dodawanego
feromonu na krawędzi (i,j) [1].
Feromon cykliczny-elitarny:
W tej wersji algorytmu mrówka która nie odnalazła najkrótszej trasy lub
nie wybrała trasy aktualnie uznanej za najlepszą, nie zostawia feromonu.
Natomiast mrówka, która odnalazła najkrótszą trasę lub wybrała trasę aktualnie
uznawaną za najlepszą zostawia feromon – oznacza to, że odległość pomiędzy
miastami odbija się bezpośrednio na ilości pozostawianego feromonu. Im mniejsza
odległość, tym więcej feromonu zostanie pozostawionego na tym odcinku.
Pozwala to na dodatkowe wzmocnienie najkrótszych tras.
Podobnie jak to ma miejsce w naturze, feromon pozostawiony przez mrówki nie
znajduje się na krawędzi w nieskończoność. Cyklicznie, po przejściu całej populacji,
następuje odparowanie feromonu. Stopień odparowania jest zmienną regulowaną przez
użytkownika. Zmienna ta odzwierciedla procent feromonu jaki zostanie odparowany.
Rozwiązanie takie wyklucza zbytnie kumulowanie się feromonu na krawędziach
wykluczonych już z rozwiązania i pozwala bardziej wyeksponować najczęściej
uczęszczane trasy.
Określenie stopnia odparowania, ilości pozostawianego feromonu, jak i czas
trwania całego cyklu są głównymi problemami przy „dostrajaniu” procesu. Trudnym
12
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
zadaniem jest określenie, czy ilość przejść całej populacji (liczba iteracji) powinna być
uzależniona od faktu nie znalezienia korzystniejszego rozwiązania niż x iteracji wcześniej,
czy powinna to być wartość z góry założona przez użytkownika. Podczas procesu
testowania może się jednak okazać, że lepsza będzie ta druga metoda, gdyż umożliwi ona
dokładniejsze przetestowanie skuteczności algorytmu.
3.3. Algorytm włączania
Algorytm
włączania
[6],
za
pomocą
którego
rozwiązuje
się
problem
komiwojażera, należy do rodziny algorytmów przybliżonych. Oznacza to, że nie następuje
przeszukanie całego drzewa stanów, a wynik nie musi być optymalny.
W początkowym etapie wybierane jest (losowane) dowolne miasto, po czym
według jednego z kilku możliwych do zastosowania kryteriów, dobierane jest kolejne
miasto (z pozostałych n-1) i włączane do cyklu. Tak więc, cały algorytm składa się z
dwóch kroków:
•
kroku wyboru – gdzie określa się, które miasto będzie dołączane,
•
kroku włączania – gdzie określa się miejsce w cyklu, w którym zostanie
umieszczone miasto.
Istnieje wiele sposobów wyboru miasta, które zostanie wybrane w pierwszym z
powyższych kroków. Do najprostszych należy zwykłe wylosowanie miasta z pośród miast
jeszcze nieodwiedzonych, można posłużyć się również metodą włączania miasta,
leżącego najbliżej lub najdalej cyklu. Każdy może tutaj zastosować własną metodę,
ponieważ wszystkie mają swoje plusy jak i minusy i wybór miasta jest w tym wypadku po
prostu kwestią pewnego kompromisu. W programie zastosowano heurystykę najdalszego
wierzchołka, jako że została ona uznana za jedną z najbardziej skutecznych.
Najdalszy wierzchołek zostaje określony w dwóch etapach. Pierwszy etap
wyszukuje dla każdego miasta z tablicy TABU (miasta już odwiedzone) takie miasto,
które nie znajdując się w tej tablicy (nie zostało odwiedzone) leży najbliżej i zapisuje je
do tablicy najbliższych miast. Następnie z tej tablicy wyszukiwane jest to, które leży
najdalej z pośród tych najbliższych. W ten sposób znajdywane jest to jedno miasto, leżące
najdalej od cyklu.
13
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Gdy wiadomo już, który wierzchołek zostanie dołączony do cyklu, następuje
kolejny etap, czyli wybranie pozycji w cyklu. Zakładamy, że bieżący cykl zawiera k
wierzchołków i następnym do włączenia jest wierzchołek f. Badamy łuk (i,j) cyklu i
określamy koszt włączenia miasta f pomiędzy miasto i oraz j:
Cij = ωif +
ωfj - ωij,
(3)
gdzie: ωxy - koszt pomiędzy miastami x oraz y, Cij – całkowity koszt włączenia.
Spośród wszystkich kosztów włączenia do cyklu wybierany jest ten najmniejszy i w tym
miejscu umieszczone zostanie nowe miasto f. Uzupełniana jest tablica TABU i
kontynuowania jest włączanie następnego miasta.
Metoda ta pozwala na szybkie (tylko raz przechodzi cały cykl) określenie
rozwiązania nawet dla dużej liczby miast. Wynik w pewnym sensie jest losowy, ponieważ
pierwszy element cyklu wybierany jest w taki sposób. Przeprowadzane próby wykazały
jednak, iż mimo że dwa rozwiązania mogą się różnić, to całkowity koszt zawsze jest
zbliżony.
14
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
4. Program
Podstawowym celem pracy było napisanie programu, który wykorzystując
algorytmy mrówkowe, pozwoli na rozwiązanie problemu komiwojażera. Program miał
przedstawić graficznie problem, jego rozwiązanie i pozwolić na przeprowadzanie testów
porównawczych dla różnych konfiguracji algorytmu mrówkowego oraz dla innych
algorytmów. Jak już to zostało wcześniej powiedziane algorytmem alternatywnym będzie
algorytm włączania.
4.1. Interfejs programu
Struktura graficzna aplikacji została ograniczona do jednego funkcjonalnego okna,
na którym można obserwować rozmieszczenie miast w układzie kartezjańskim. W oknie
21
16
17
18
3
4
5
6
7
8
1
22
9
10
11
12
2
14
13
15
Rys. 3 Interfejs użytkownika
20
19
15
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
tym znajdują się przyciski do wszystkich funkcji sterujących pracą programu oraz
„dostrajające” algorytm.
Opis interfejsu:
1 – miasto; punkt określony przez dokładne współrzędne,
2 – pole, na którym mogą znajdować się miasta,
3 – przycisk uruchamiający obliczanie trasy,
4 – przycisk do generowania losowego miast,
5 – przycisk wczytania miast z pliku zewnętrznego,
6 – zapis współrzędnych aktualnie prezentowanych miast do pliku typu TSP [5],
7 – zdeklarowana / wczytana liczba miast,
8 – wielkość populacji mrówek,
9 – ilość przejść koloni lub liczba losowań przy algorytmie losowym,
10 – całkowita ilość feromonu pozostawiana przez mrówkę na całej trasie,
11 – procent feromonu który odparowuje po przejściu całej populacji,
12 – stosunek współczynników znaczenia feromonu i odległości pomiędzy
miastami,
13 – wybór algorytmu,
14 – informacje na temat aktualnego działania programu,
15 – pasek postępu,
16 – wyjście z programu,
17 – podgląd dotychczasowych przebiegów programu za pomocą Notatnika,
18 – chwilowe wstrzymanie wykonywania obliczeń,
19 – opcja wyświetlania numeracji miast,
20 – zapis dodatkowych informacji do plików tymczasowych,
21 – połączenie dwóch miast znalezione przez program,
22 – połączenie dwóch miast wczytane z pliku zewnętrznego.
Interfejs programu został zaprojektowany z myślą o prostym i wygodnym
użytkowaniu. Ułożenie wszystkich opcji na głównym pulpicie wraz z oknem graficznej
prezentacji działań programu, ma za zadanie ułatwić użytkownikowi obserwowanie
16
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
zależności pomiędzy ustawieniami a działaniem. Pozwala to też na szybsze orientowanie
się w ustawieniach.
4.2. Obsługa programu
4.2.1. Funkcje podstawowe
Podstawowe funkcje programu realizowane są za pomocą grupy przycisków
(nr:3,4,5,6,16,17,18) umieszczonych w górnym prawym rogu programu.
Przycisk nr 3 – Start – przycisk służy do uruchomienia wybranego algorytmu. Od
momentu jego wywołania program zaczyna wykonywanie algorytmu z uwzględnieniem
wszystkich parametrów (w tym współrzędnych miast). Zakończenie działania algorytmu
może nastąpić samoczynnie lub poprzez wyłączenie programu. Przycisk pozostaje tak
długo nieaktywny, jak długo nie zostaną wygenerowane (lub wczytane z pliku) miasta.
Przycisk nr 4 – Generuj – jest to przycisk uruchamiający funkcję automatycznego
losowego wygenerowania miast. Liczba wygenerowanych miast jest określona przez
użytkownika w polu nr 7. Od tego momentu można uruchomić algorytm główny
przyciskiem Start.
Przycisk nr 5 – Z pliku – uruchamia funkcję pozwalającą na wczytanie współrzędnych
miast z pliku zewnętrznego. Obsługiwane są tylko pliku typu TSP [5]. Wszystkie
wczytywane współrzędne podlegają skalowaniu, przez co są równomiernie rozłożone na
panelu.
Przycisk nr 6 – Zapis – funkcja ta pozwala na zapisanie do pliku typu TSP
współrzędnych miast aktualnie przedstawianych na panelu graficznym. Pozwala to na
przywrócenie miast wcześniej wygenerowanych losowo. Funkcja pozwala także na
zapisanie miast wczytanych z zewnętrznego pliku TSP.
17
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Przycisk nr 16 – Cancel – przycisk wyjścia z programu. Pozwala na zakończenie pracy z
programem (również podczas działania algorytmu).
Przycisk nr 17 – Notatnik – program posiada automatyczną funkcję zapisu wyników
swojego działania do pliku tekstowego out.txt, który zapisywany jest w katalogu z
programem. Przycisk Notatnik pozwala na szybkie otwarcie tego pliku poprzez program
wchodzący w skład systemu operacyjnego Windows – Notatnik (notepad.exe). Pozwala to
na podejrzenie wyników oraz towarzyszących im ustawień programu.
Przycisk nr 18 – Pauza – ten przycisk jest aktywny tyko podczas wykonywania obliczeń
przez program. Pozwala na chwilowe wstrzymanie wykonywania obliczeń. Gdy program
znajduje się w stanie pauzy, można przywrócić go do wykonywania obliczeń lub
zakończyć program.
4.2.2. Funkcje konfiguracyjne
Są to wszystkie ustawienia pozwalające skonfigurować algorytm, dobrać liczbę
miast oraz dokładność obliczeń.
Pole nr 7 – Ilość miast – w tym polu podajemy liczbę miast dla jakiej chcemy
przeprowadzać obliczenia. Liczba musi być całkowita i nie mniejsza niż 3. Domyślna
wartość wynosi 10. Po „ręcznym” wprowadzeniu tej wartości należy ponownie
wygenerować miasta. W przypadku wczytania miast z pliku, liczba automatycznie
ustawiana jest na liczbę miast pobranych z pliku.
Pole nr 8 – Populacja – w tym polu podawana jest liczba mrówek w jednej populacji.
Liczba musi być całkowita i większa od 0. Pole jest uwzględniane tylko dla algorytmów
mrówkowych – przy pozostałych zostaje pomijane.
Pole nr 9 – Iteracje – czyli ilość przejść całej populacji lub liczba prób dla algorytmu
losowego. Liczba musi być całkowita i większa od 0. Iteracje to także wskaźnik stopnia
zaawansowania algorytmu – czego graficznym odpowiednikiem jest pasek postępu (nr
15). Można powiedzieć, że liczba iteracji odpowiada liczbie powtórzeń algorytmu.
18
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Pole nr 10 – Ilość feromonu – jest to całkowita ilość feromonu pozostawionego przez
jedną mrówkę na całej trasie. Ilość feromonu pozostawionego na konkretnym odcinku jest
zależna od długości tego odcinka. Suma feromonu na wszystkich odcinkach dla jednej
trasy pokonanej przez mrówkę jest zawsze taka sama od początku działania algorytmu i
równa jest wartości podanej w tym polu. Liczba może przyjmować dowolną wartość nie
większą niż 100 i nie mniejszą niż 0.
Pole nr 11 – Odparowanie feromonu – jest to procentowa wartość feromonu jaki
zostanie odparowany na końcu każdej iteracji. Takie rozwiązanie uniemożliwia całkowity
zanik śladu, dlatego gdy ilość feromonu na odcinku spadnie poniżej 0,1 ślad jest
zerowany. Liczba w tym polu nie może być mniejsza niż 0 i nie większa niż 100.
Suwak nr 12 – Znaczenie fer/dys – suwak pozwala na regulowanie znaczenia jaki
wywierają ślad feromonowy i odległość pomiędzy miastami na decyzje podejmowane
przez mrówkę. Zastosowanie suwaka pozwala na zachowanie pewnych proporcji
pomiędzy wartościami alfa (znaczenie feromonu) i beta (znaczenie dystansu). Alfa i beta
mogą przyjmować wartości z przedziału od 0,1 do 3,9 z krokiem 0,1. Obie te wartości są
od siebie zależne, a w ich właściwym ustawieniu pomaga suwak. Nie ma możliwości
zmiany znaczeń inaczej niż poprzez przesuwanie suwaka.
Pole wyboru nr 13 – Algorytm – to pole określa jakim algorytmem chcemy się posłużyć
przy rozwiązywaniu problemu komiwojażera. Użytkownik ma do wyboru:
•
Algorytm mrówkowy z feromonem cyklicznym-elitarnym,
•
Algorytm mrówkowy z feromonem cyklicznym,
•
Algorytm mrówkowy z feromonem stałym,
•
Algorytm losowy,
•
Algorytm włączania.
Domyślnym wyborem jest pierwszy z tych algorytmów. Różne algorytmy wymagają
różnych parametrów z konfiguracji. Aby pomóc użytkownikowi w określeniu, która
funkcja wymagana jest przez który algorytm, następuje zmiana koloru etykiet pól
niewymaganych przez dany algorytm. Zmiana algorytmu nie pociąga za sobą
19
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
konieczności wczytania nowych miast. Pozwala to na przeprowadzenie eksperymentów z
różnymi algorytmami na tych samych miastach.
4.2.3. Opcje dodatkowe
Opcje dodatkowe nie są istotne dla przeprowadzanych prób. Mają one znaczenie
pomocnicze.
Pole nr 19 – Liczby – w tym polu włączamy/wyłączamy wypisywanie kolejnych
numerów miast. Są to kolejne numery określające kolejność generowania lub wczytania z
pliku. Te same numery określają miasta w pliku wyjściowym out.txt. Numery
poszczególnych miast wypisane są przy odpowiadającym im mieście na panelu
graficznym. Włączać/wyłączać liczby można również w czasie wykonywania algorytmu,
ale numery pojawią się dopiero przy kolejnym odświeżeniu panelu.
Pole nr 20 – Log – funkcja włączania/wyłączania dodatkowego logowania działań
programu. Logi te pozwalają dokładniej skontrolować poprawność (lub niepoprawność)
działania programu. W zależności od zastosowanego algorytmu mogą to być różne pliki
tekstowe: temp.txt, temp2.txt, pp.txt. Funkcja ta nie ma praktycznego zastosowania bez
dokładnej znajomości kodu programu.
4.3. Uruchomienie programu
Program zaraz po uruchomieniu automatycznie ustawia wszystkie parametry na
wartości domyślne. Nie są to bynajmniej wartości optymalne. Pierwszym krokiem jaki
należy podjąć podczas pracy z programem jest wczytanie miast z pliku lub
wygenerowanie losowej liczby miast. Podczas losowego generowania miast uwzględniana
jest liczba miast podana przez użytkownika. Następnie należy zdecydować się na jeden z
pięciu dostępnych algorytmów. Od wyboru algorytmu zależy, które parametry będą
uwzględniane. Nie trzeba więc ustawiać parametrów dla algorytmu, który ich nie
wykorzystuje. Gdy już mamy miasta, wybrany algorytm i ustawione parametry możemy
przystąpić do testu. Należy zwrócić w tym miejscu uwagę na dużą ilość obliczeń
20
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
potrzebnych do uzyskania rozwiązania. Ustawienie zbyt dużej liczby miast, iteracji lub
populacji może spowodować iż obliczenia będą trwały wiele godzin lub dni. Program w
trakcie obliczeń na bieżąco informuje nas o postępie działania, aktualnie najlepszym
rozwiązaniu oraz graficznie prezentuje to rozwiązanie. Wyjątkiem jest algorytm
włączania, gdzie jest tylko jedno przejście algorytmu i jednorazowa prezentacja
rozwiązania. W trakcie wykonywania obliczeń mamy do dyspozycji możliwość
czasowego zawieszenia działania. Może zaistnieć sytuacja, w której chcemy odciążyć
procesor na rzecz innego zadania, a nie chcemy kończyć obliczeń dla problemu
komiwojażera. W tym celu istnieje funkcja Pause, która zawiesza wątek odpowiedzialny
za obliczenia. Wątek można przywrócić do stanu normalnego poprzez ponowne użycie
funkcji Pause. Mankamentem użycia tej funkcji jest przekłamanie w całkowitym czasie
trwania obliczeń. Program nie uwzględnia czasu spędzonego w stanie przerwy.
Program po zakończeniu obliczeń poinformuje o tym fakcie użytkownika
odpowiednim nagłówkiem w Pasku Stanu oraz narysuje graficzną postać rozwiązania na
panelu graficznym. Dodatkowo program dopisze informacje do pliku out.txt o wyniku
przeprowadzonego doświadczenia. W skład takiej informacji wchodzą między innymi:
•
zastosowany algorytm,
•
liczba miast,
•
wszystkie użyte przez algorytm parametry,
•
rozwiązanie (odnaleziona kolejność miast oraz długość trasy komiwojażera),
•
czas początkowy, czas końcowy, różnica tych czasów mierzona w setnych
sekundy.
Dodatkowo program wykonuje automatyczny zapis obrazu wykreślonego na panelu
graficznym do pliku zrzut.jpg. Plik ten jest nadpisywany każdorazowo przy kończeniu
pracy algorytmu.
Program umożliwia także zapis współrzędnych miast do pliku. Funkcja ta ma sens
podczas pracy na miastach wygenerowanych losowo. Pozwala na przywrócenie układu
miast po wyłączeniu programu oraz stworzenie swojej bazy z przykładami problemu
komiwojażera.
W przypadku wczytania miast z pliku istnieje możliwość pobrania trasy
optymalnego rozwiązania z innego pliku. W tym celu plik z rozwiązaniem zapisany
zgodnie ze standardem TSP powinien znajdować się w tym samym katalogu co plik ze
21
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
współrzędnymi i mieć taką samą nazwę. Jego rozszerzenie powinno natomiast mieć
postać: .opt.tour. Plik zostanie automatycznie znaleziony, a trasa zostanie narysowana na
panelu kolorem zielonym. W wypadku gdy program znajdzie odcinek trasy taki sam jak
pobrany z pliku, wówczas kolor trasy na tym odcinku będzie rysowany tylko kolorem
niebieskim (standardowym kolorem trasy).
4.4. Możliwości
Program daje możliwość przetestowania działania trzech różnych typów
algorytmu mrówkowego, wzajemnego ich porównania oraz porównanie z dwoma innymi,
znacznie różniącymi się algorytmami. Pozwala na manipulowanie parametrami i badanie
jak każdy z nich wpływa na skuteczność oraz prędkość działania algorytmu. Dodatkowo
program pozwala na wykorzystanie i porównywanie wyników przeprowadzonych na
innych, bardziej profesjonalnych programach poprzez możliwość korzystania z bibliotek
TSP. Prostota obsługi oraz interpretacji wyników pozwala na szybie dokonywanie
doświadczeń.
4.5. Ograniczenia
Program jest tylko i wyłącznie symulatorem. Wykorzystanie go w jakiejkolwiek
innej dziedzinie niż doświadczenia na algorytmach mrówkowych nie jest możliwe.
Wyniki przeprowadzanych doświadczeń (prędkość obliczeń) są silnie uzależnione od
wydajności matematycznej maszyny na której program działa.
22
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
5. Testy porównawcze
Testy algorytmów mają na celu sprawdzenie i porównanie różnych typów
algorytmu mrówkowego oraz ich skuteczność w konfrontacji z innymi algorytmami.
Możliwość „dostrajania” algorytmów mrówkowych do konkretnego problemu
pozwala na zweryfikowanie jak poszczególne stałe wpływają na wyniki. Optymalne
ustawienie wszystkich zmiennych pozwoli także na porównanie skuteczności oraz czasu
działania wszystkich (zaprogramowanych w aplikacji) typów algorytmu mrówkowego,
algorytmu włączania oraz algorytmu losowego.
Jako że badane algorytmy są algorytmami stochastycznymi, dlatego wszystkie
przeprowadzone testy mają również stochastyczny charakter. Chcąc uzyskać wiarygodne
wyniki, wszystkie próby zostały powtórzone pięciokrotnie, a pod uwagę brana jest średnia
arytmetyczna wszystkich pięciu prób.
5.1. Wpływ ilości zostawianego feromonu na algorytmy mrówkowe
Test ten ma na celu sprawdzenie jak wpływa ilość pozostawianego feromonu na
jakość znalezionego połączenia.
W teście posłużono się próbką 35 miast – ich liczba oraz układ jest jednakowy dla
wszystkich algorytmów.
Stałe ustawienia algorytmów:
•
Miasta: 35
•
Populacja: 35
•
Iteracje: 30
•
Odparowanie feromonu: 25 %
•
Znaczenie feromonu (alfa): 2
•
Znaczenie odległości (beta): 2
23
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Wyniki:
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym
Ilość
feromonu
0,05
0,1
0,5
1
2
3
5
10
1
2767,79
2799,85
2866,97
3055,22
3354,84
3022,80
3151,63
2937,65
Próby – dystans całkowity
2
3
4
2883,84
3359,85
3312,44
2712,10
2843,54
3125,21
2822,42
2930,99
2796,27
3084,72
3125,39
2746,12
2964,29
2897,79
2862,28
2823,72
2724,67
3081,44
3114,62
2891,03
2793,05
2949,83
3064,07
3162,45
Tablica 1
5
2722,69
2883,56
3148,82
2972,55
2811,46
2867,51
3219,71
3226,47
średnia
3009,32
2872,85
2913,09
2996,80
2978,13
2904,03
3034,01
3068,09
3100
3050
3000
2950
2900
2850
0
2
4
6
8
z feromonem cyklicznym-elitarnym
Wykres 1
10
ilość feromonu
24
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
Ilość
feromonu
0,1
0,2
0,5
1
2
3
5
10
15
1
4490,84
4228,05
4050,58
4541,97
4713,72
4601,21
4687,19
3776,95
4801,72
Próby – dystans całkowity
2
3
4
4394,24
4192,12
4234,95
4837,92
4628,46
4354,83
4653,85
4460,04
4762,20
4038,33
4181,39
4396,83
4630,88
4728,30
4560,67
3978,98
4678,28
4676,51
4575,32
4607,80
4413,90
4991,11
4722,33
4528,39
4504,49
4538,78
4547,13
Tablica 2
5
4134,29
4795,49
4527,02
4241,71
4658,83
4393,55
4814,09
4114,77
4338,61
średnia
4289,29
4568,95
4490,74
4280,04
4658,48
4465,71
4619,66
4426,71
4546,15
4700
4650
4600
4550
4500
4450
4400
4350
4300
4250
0
2
4
6
8
10
12
14
16
ilość feromonu
z feromonem cyklicznym
Wykres 2
25
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. ALGORYTM MRÓWKOWY – z feromonem stałym
Ilość
feromonu
0,01
0,05
0,1
0,2
0,5
1
2
3
5
10
1
4739,21
4382,32
4540,79
4768,39
4525,42
4455,90
4569,45
4331,66
4154,56
4640,07
Próby – dystans całkowity
2
3
4
4473,28
4477,91
4298,03
4564,35
4335,98
4144,08
4564,11
4665,11
4548,48
4493,95
4409,88
4516,77
4893,63
4729,36
4589,46
4833,53
4267,04
4748,81
4083,09
4525,40
4838,43
5150,97
4200,82
4458,10
4451,44
4283,52
4695,57
4540,69
4561,31
4864,36
Tablica 3
5
4331,00
4688,22
4118,16
4946,18
4606,70
4081,53
4664,31
4790,05
5217,58
4494,90
średnia
4463,89
4422,99
4487,33
4627,04
4668,91
4477,36
4536,14
4586,32
4560,53
4620,27
4700
4650
4600
4550
4500
4450
4400
0
2
4
6
8
10
ilość feromonu
z feromonem stałym
Wykres 3
Na wykresach (Wykresy 1-3), które zostały wykreślone na podstawie
odpowiadających im tabel, widać zależność długości trasy, jaka została znaleziona, do
ilości pozostawianego przez mrówki feromonu. Wyraźnie są minima lokalne dla każdego
z wykresów. Dostrzegalny jest również stopniowy wzrost znalezionej odległości w miarę
26
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
zwiększania ilości pozostawianego feromonu. Można wysnuć wniosek, że przy takiej
konfiguracji
dla
feromonu
cyklicznego-elitarnego
i
feromonu
stałego
ilość
pozostawianego feromonu powyżej 5 nie przynosi już lepszych rezultatów. Dla feromonu
cyklicznego moment ten występuje później i ostateczny próg można szacować na 10
jednostek pozostawianego feromonu.
Najlepsze rezultaty zostały uzyskane:
•
Feromon cykliczny-elitarny: w przedziale od 0,1 do 0,5 jednostek,
•
Feromon cykliczny: w przedziale od 0,5 do 2 jednostek,
•
Feromon stały: w przedziale od 0,01 do 0,1 jednostek.
W kolejnych testach, mających na celu uzyskanie jak najlepszego wyniku dla danego
algorytmu, zostaną wzięte pod uwagę wyniki tego testu, tak aby wyrównać szanse tych
algorytmów i uzyskać bardziej wiarygodne wyniki.
5.2. Wpływ tempa odparowania feromonu
W tym teście badamy jak wpływa tempo (ilość) odparowywania feromonu na
skuteczność trzech typów algorytmów mrówkowych. Jako, że ilość odparowywanego
feromonu jest wartością dyskretną, ustalono procentową wartość o jaką ilość feromonu na
krawędzi ma zostać obniżona. Próby przeprowadzono na tym samym układzie miast co w
teście pierwszym.
Stałe ustawienia algorytmów:
•
Miasta: 35
•
Populacja: 35
•
Iteracje: 30
•
Znaczenie feromonu (alfa): 2
•
Znaczenie odległości (beta): 2
Ilość pozostawianego feromonu jest zależna od zastosowanego algorytmu, a do jej
określenia posługujemy się wynikami z testu pierwszego.
27
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym
(ilość pozostawianego feromonu: 1)
Tempo
parowania %
5
10
15
25
35
50
75
95
100
1
3180,59
2936,67
2894,11
3230,94
3171,25
3005,05
2726,72
3409,54
3809,67
Próby – dystans całkowity
2
3
4
5
3413,34 3264,11 2678,55 3072,92
2934,19 3260,70 2893,34 3178,64
2798,22 2915,16 3280,85 3015,14
2923,55 2767,63 3264,20 3103,28
3124,88 3055,65 2676,46 2799,67
2822,06 3063,94 3189,27 2884,75
3029,69 3055,58 3280,04 3163,08
3048,30 2919,02 3258,64 3097,10
3891,16 4174,76 4420,14 4127,56
Tablica 4
średnia
3121,90
3040,71
2980,70
3057,92
2965,58
2993,01
3051,02
3146,52
4084,66
4300
4100
3900
3700
3500
3300
3100
2900
2700
5
25
45
65
z feromonem cyklicznym-elitarnym
Wykres 4
85
%
28
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
(ilość pozostawianego feromonu: 0,5)
Tempo
parowania %
5
10
15
25
35
50
75
95
100
Próby – dystans całkowity
2
3
4
5
4311,91 4084,22 4067,01 4214,50
3864,20 4021,82 4213,83 4320,62
4469,34 4140,64 4453,97 4315,93
4657,92 4538,33 4374,93 4795,62
4869,34 4609,62 4767,36 4610,03
5149,11 5002,31 4653,09 5260,17
4989,78 4603,09 4662,26 3993,59
4840,72 4277,07 4818,16 5400,18
4713,77 4783,11 4574,60 4814,61
Tablica 5
1
4420,41
4075,92
4317,71
5165,66
4581,66
5019,17
5110,63
5423,13
4406,28
5100
4900
4700
4500
4300
4100
3900
3700
5
25
45
65
z feromonem cyklicznym
Wykres 5
85
%
średnia
4219,61
4099,28
4339,52
4706,49
4687,60
5016,77
4671,87
4951,85
4658,47
29
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. ALGORYTM MRÓWKOWY – z feromonem stałym
(ilość pozostawianego feromonu: 0,05)
Tempo
parowania %
5
10
15
25
35
50
75
95
100
1
3568,32
4644,57
4682,92
4342,28
4682,55
4671,53
4730,72
4347,59
4671,08
Próby – dystans całkowity
2
3
4
5
3767,17 3816,45 4144,25 4298,97
4291,25 3585,55 4142,57 4265,94
4298,46 4011,44 4521,62 4011,31
4383,87 4687,31 4983,75 4414,58
4460,70 4873,94 4626,32 4695,82
4922,00 4894,52 4566,04 5230,09
3954,56 4629,30 4807,50 5062,81
4763,41 5011,53 5073,26 4627,20
5050,24 5215,18 5107,28 4875,82
Tablica 6
średnia
3919,03
4185,98
4305,15
4562,36
4667,87
4856,83
4636,98
4764,60
4983,92
5100
4900
4700
4500
4300
4100
3900
3700
5
25
45
65
85
%
z feromonem stałym
Wykres 6
Przeprowadzone badania wyraźnie wskazują na wpływ tempa parowania
feromonu dla feromonu stałego i feromonu cyklicznego na jakość połączenia. Już
niewielki wzrost może spowodować znaczną poprawę lub znaczne pogorszenie
otrzymanych wyników. W przypadku feromonu cyklicznego-elitarnego nagłe pogorszenie
30
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
jakości następuje po przekroczeniu 90% tempa parowania. Dla mniejszych prędkości
parowania uzyskane wyniki były bardzo podobne. Można zatem określić pewne
dopuszczalne przedziały dla takiej konfiguracji i rozkładu miast:
•
feromon cykliczny-elitarny: przedział od 5 do 85 %,
•
feromon cykliczny: przedział od 5 do 15 %,
•
feromon stały: przedział: od 5 do 15%.
Wnioski z przeprowadzenia tego badania, podobnie jak miało to miejsce w przypadku
testu pierwszego, zostaną uwzględnione w późniejszych doświadczeniach.
5.3. Znaczenie ilości feromonu i widoczności miast
Ten test ma na celu przebadanie jak wpłyną na jakość znalezionego połączenia
parametry alfa i beta, czyli znaczenie feromonu oraz znaczenie widoczności miast, na trzy
typy algorytmów mrówkowych. Znaczenie feromonu i znaczenie widoczności są ze sobą
ściśle powiązane – gdy znaczenie feromonu wzrasta to proporcjonalnie maleje znaczenie
widoczności.
Badania przeprowadzone zostały na tym samym układzie 35 miast. Różnice w
ilości pozostawianego feromonu jak i w tempie jego parowana wynikają z badań
przeprowadzonych wcześniej.
Stałe ustawienia programu:
•
Miasta: 35
•
Populacja: 35
•
Iteracje: 30
31
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym
(ilość pozostawianego feromonu: 1, tempo odparowywania feromonu: 15%)
Znaczenie
alfa
beta
0,1
3,9
0,5
3,5
1
3
1,5
2,5
2
2
2,5
1,5
3
1
3,5
0,5
3,9
0,1
1
2580,00
2531,37
2810,62
2890,99
3347,23
2921,41
3388,71
3880,16
3816,39
Próby – dystans całkowity
2
3
4
5 średnia
2713,39 2661,02 2623,61 2626,27 2640,86
2480,35 2531,75 2503,45 2639,27 2537,24
2872,28 2639,20 2816,11 2833,83 2794,41
2736,32 2997,64 3060,33 3050,53 2947,16
2931,96 2808,77 3162,22 2854,85 3021,01
3126,87 3120,81 2967,25 3221,20 3071,51
3647,69 3221,83 3849,33 3236,36 3468,78
3122,64 3935,37 3823,68 3858,86 3724,14
3926,87 4044,49 3827,11 3984,73 3919,92
Tablica 7
3900,00
3700,00
3500,00
3300,00
3100,00
2900,00
2700,00
2500,00
0
0,5
1
1,5
2
2,5
3
3,5
4
alfa
z feromonem cyklicznym-elitarnym
Wykres 7
32
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
(ilość pozostawianego feromonu: 0,5, tempo odparowywania feromonu: 10%)
Znaczenie
alfa
beta
0,1
3,9
0,5
3,5
1
3
1,5
2,5
2
2
2,5
1,5
3
1
3,5
0,5
3,9
0,1
Próby – dystans całkowity
2
3
4
5 średnia
2646,24 2759,68 2669,76 2810,06 2683,50
2876,99 3031,76 3094,62 3092,52 3045,05
3056,04 3318,66 3351,17 3133,29 3219,40
3518,35 3521,71 3671,41 3562,38 3595,61
4183,72 4104,54 3975,46 4177,96 4130,06
5001,19 4968,63 4860,76 4632,57 4835,61
5365,73 5670,97 5569,60 5649,34 5503,40
7107,95 6338,21 6757,85 6484,94 6605,99
7233,82 6788,77 7087,69 6507,38 6906,54
Tablica 8
1
2531,75
3129,36
3237,83
3704,20
4208,61
4714,88
5261,34
6341,00
6915,05
7000,00
6500,00
6000,00
5500,00
5000,00
4500,00
4000,00
3500,00
3000,00
2500,00
0
0,5
1
1,5
2
2,5
z feromonem cyklicznym
Wykres 8
3
3,5
4
alfa
33
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. ALGORYTM MRÓWKOWY – z feromonem stałym
(ilość pozostawianego feromonu: 0,05, tempo odparowywania feromonu: 7%)
Znaczenie
alfa
beta
0,1
3,9
0,5
3,5
1
3
1,5
2,5
2
2
2,5
1,5
3
1
3,5
0,5
3,9
0,1
Próby – dystans całkowity
2
3
4
5 średnia
2772,34 2708,53 2841,52 2850,48 2805,61
3015,79 3238,27 3272,23 3035,01 3052,38
3035,98 3134,67 3229,69 3362,68 3198,98
3481,85 3366,35 3651,03 3403,64 3499,01
4255,75 3730,85 3632,35 4489,24 3902,37
4848,96 4769,98 4727,49 4546,02 4802,17
5968,34 5820,53 5697,45 5581,10 5773,35
6014,73 5897,66 6542,16 6304,22 6260,88
7468,41 7410,30 7342,14 6576,01 7078,15
Tablica 9
1
2855,20
2700,58
3231,88
3592,17
3403,64
5118,39
5799,35
6545,64
6593,89
7000,00
6500,00
6000,00
5500,00
5000,00
4500,00
4000,00
3500,00
3000,00
2500,00
0
0,5
1
1,5
2
2,5
3
3,5
4
alfa
z feromonem stałym
Wykres 9
Z przeprowadzonych badań jasno wynika jak duży wpływ ma dobre dobranie
parametrów alfa i beta na jakość uzyskanego wyniku. W feromonie cyklicznym-elitarnym
parametr alfa po przekroczeniu wartości 1 zaczyna w znaczny sposób pogarszać
uzyskiwane wyniki. Podobnie sytuacja ma się dla feromonu stałego i cyklicznego. Dla
34
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
tych dwóch typów feromonu również obserwujemy gwałtowne pogorszenie wyników.
Zmienne określające znaczenie feromonu i widoczności miast służą do wyważenia
niewielkiej ilości feromonu pozostawianego na trasie oraz dużej odległości pomiędzy
miastami. Każdy problem należy rozpatrywać indywidualnie z uwzględnieniem skali w
jakiej rozwiązywany jest problem.
5.4. Wpływ wielkości populacji
W tym teście zostało sprawdzone, jak na jakości znalezionego połączenia odbija
się wielkość populacji mrówek użytych w doświadczeniu. Dodatkowym aspektem jest
wzrost czasu wykonywania obliczeń i próba określenia gdzie przebiega granica sensownej
wielkości populacji. Próby zostały przeprowadzone na tym samym układzie 35 miast i
liczbie iteracji: 30 dla wszystkich trzech typów algorytmu mrówkowego.
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym,
(ilość pozostawianego feromonu: 1, tempo odparowywania feromonu: 15%,
znaczenie feromonu: 2, znaczenie odległości <widoczności>: 2)
Populacja
5
10
20
35
60
100
150
1
3527,19
3275,17
2833,56
3063,33
2810,27
2725,33
2658,70
Próby – dystans całkowity
2
3
4
5
3762,53 3174,04 3859,12 3122,19
2996,78 3102,51 3264,10 3566,42
2961,95 3367,12 3137,75 3208,77
3093,96 3024,38 3096,09 2726,19
2763,90 2887,33 2891,60 2964,08
2957,88 3003,62 2854,83 2658,03
2787,53 2608,67 2678,96 2887,02
Tablica 10
średnia
3489,02
3240,99
3101,83
3000,79
2863,44
2839,94
2724,18
Czas
[s*102]
198
338
599
1024
1662
2636
3919
35
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3500
3400
3300
3200
3100
3000
2900
2800
2700
0
20
40
60
80
100
120
140
160
140
160
populacja
z feromonem cyklicznym-elitarnym - dystans
Wykres 10
3650
3150
2650
2150
1650
1150
650
150
0
20
40
60
80
100
120
populacja
z feromonem cyklicznym-elitarnym - czas [s*0.01]
Wykres 11
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
(ilość pozostawianego feromonu: 0,5, tempo odparowywania feromonu: 10%,
znaczenie feromonu: 1, znaczenie odległości <widoczności>: 3)
36
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Populacja
5
10
20
35
60
100
150
1
3964,89
4091,24
3634,09
2989,01
2892,32
3065,43
2819,24
Próby – dystans całkowity
2
3
4
5
3759,82 3882,87 4064,48 3355,06
3867,01 3767,70 3240,12 3796,79
3693,84 3661,73 3378,79 3569,76
3243,71 3502,54 3455,82 3245,20
3143,93 3216,98 3026,46 3196,72
2916,97 2853,21 2824,59 3097,33
2896,89 2746,41 2823,68 2769,37
Tablica 11
Czas
[s*102]
średnia
3805,42 140,00
3752,57 287,00
3587,64 545,00
3287,25 927,00
3095,28 1563,00
2951,51 2537,00
2811,12 3839,00
3900
3700
3500
3300
3100
2900
2700
0
20
40
60
80
100
120
140
160
140
160
populacja
z feromonem cyklicznym - dystans
Wykres 12
3630
3130
2630
2130
1630
1130
630
130
0
20
40
60
80
100
120
z feromonem cyklicznym - czas [s*0.01]
Wykres 13
populacja
37
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. ALGORYTM MRÓWKOWY – z feromonem stałym
(ilość pozostawianego feromonu: 0,05, tempo odparowywania feromonu: 7%,
znaczenie feromonu: 1, znaczenie odległości <widoczności>: 3)
Populacja
5
10
20
35
60
100
150
1
3679,27
3449,48
3752,05
3411,35
3005,50
2957,38
2927,15
Próby – dystans całkowity
2
3
4
5
3764,86 3805,56 3568,69 3912,51
3856,61 4041,13 3771,97 3573,78
3692,27 3799,61 3268,34 3285,20
3468,95 3362,65 3133,25 3205,06
3083,74 3075,26 3064,10 3091,81
3012,56 2904,48 2999,50 2821,82
2764,13 2787,60 2699,00 3016,58
Tablica 12
Czas
[s*102]
średnia
3746,18 140,00
3738,60 282,00
3559,49 544,00
3316,25 925,00
3064,08 1547,00
2939,15 2569,00
2838,89 3792,00
3900
3700
3500
3300
3100
2900
2700
0
20
40
60
80
100
120
140
160
populacja
z feromonem stałym - dystans
Wykres 14
38
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3630
3130
2630
2130
1630
1130
630
130
0
20
40
60
80
100
120
140
160
populacja
z feromonem stałym - czas [s*0.01]
Wykres 15
Przeprowadzone badania dają wyraźny obraz tego, w jak znacznym stopniu
wielkość populacji mrówek wpływa na czas i dokładność działania algorytmu. Dla
wszystkich trzech badanych typów algorytmu zależność pomiędzy wielkością populacji a
czasem działania była funkcją liniową, różniącą się tylko nieznacznie kątem pochylenia
względem osi czasu. Można wnioskować, że różnica ta jest spowodowana częstością
dodawania feromonu w tablicy feromonu, jak i może zależeć od zmiennych alfa oraz beta
(w doświadczeniu feromon cykliczny-elitarny ma inne parametry dla tych zmiennych)
jako, że funkcja odpowiedzialna za podnoszenie wartości do potęgi wykonuje się szybciej
gdy potęga jest równa jeden. Ponadto algorytm z feromonem cyklicznym-elitarnym jest
bardziej skomplikowany. W tym przypadku większa ilość obliczeń skutkuje lepszym
znalezionym rozwiązaniem.
Natomiast z przebiegu zależności pomiędzy wielkością populacji a skutecznością
działania algorytmu widać wyraźnie, że większa liczba mrówek radzi sobie lepiej z
rozwiązaniem problemu, niż mniej liczne populacje. Sytuacja ta zachodzi dla trzech
badanych typów algorytmu. Optymalna liczba mrówek dla badanego problemu jest równa
w przybliżeniu podwojonej liczbie miast. Dla takiej liczby znalezione rozwiązanie jest już
dobre, przy jednocześnie akceptowalnie długim czasie obliczeń.
39
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
5.5. Wpływ liczby iteracji
Doświadczenie to ma na celu pokazanie jaki wpływ na jakość uzyskanego
rozwiązania ma liczba iteracji – czyli liczba przebiegów całej populacji mrówek.
Dodatkowym aspektem badania jest czas potrzebny na wykonanie wszystkich
zaprogramowanych iteracji oraz określenie pewnego optymalnego ustawienia dla
problemu komiwojażera dla stałej próbki 35 miast.
W tym doświadczeniu zastosowana została większa niż w dotychczas
przeprowadzanych doświadczeniach populacja (50 mrówek), przez co także inne
ustawienia uległy pewnym nieznacznym modyfikacjom. Wszystkie zmiany miały na celu
zwiększenie dokładności wykonywanego doświadczenia.
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym
(ilość pozostawianego feromonu: 1, tempo odparowywania feromonu: 15%,
znaczenie feromonu: 2, znaczenie odległości <widoczności>: 2)
Iteracje
5
10
20
50
75
100
150
1
3240,15
3202,50
3175,59
2708,86
2821,59
2760,12
2756,38
Próby - dystans całkowity
2
3
4
5
3207,62 3287,00 3099,34 3504,67
3382,50 3187,95 3156,49 3183,00
2946,48 2637,67 3185,26 3199,69
2989,33 2850,61 2594,43 2824,35
2867,80 2555,29 2661,24 2708,16
2709,30 2720,81 2671,64 2670,10
2582,13 2993,84 2450,55 2580,30
Tablica 13
średnia
3267,75
3222,49
3028,94
2793,52
2722,81
2706,40
2672,64
Czas
[s*102]
307
536
1044
2473
3549
4722
6956
40
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3300
3200
3100
3000
2900
2800
2700
2600
0
20
40
60
80
100
120
140
160
iteracje
z feromonem cyklicznym-elitarnym - dystans
Wykres 16
6300
5300
4300
3300
2300
1300
300
0
20
40
60
80
100
120
140
160
iteracje
z feromonem cyklicznym-elitarnym - czas [s*0,01]
Wykres 17
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
(ilość pozostawianego feromonu: 0,5, tempo odparowywania feromonu: 15%,
znaczenie feromonu: 1, znaczenie odległości: 3)
41
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Iteracje
1
3907,67
3725,67
3287,98
2953,16
2933,13
2999,47
2839,19
5
10
20
50
75
100
150
Próby - dystans całkowity
2
3
4
5
3804,78 4298,66 3620,89 3409,51
3678,72 3355,66 3827,71 3287,98
3356,97 3112,92 3293,25 3572,04
3103,33 3115,01 2902,69 2934,93
2936,47 3044,81 3038,65 2961,00
2861,69 2855,04 2949,20 2990,76
3024,37 2958,01 3016,10 2807,35
Tablica 14
średnia
3808,30
3575,15
3324,63
3001,83
2982,81
2931,23
2929,00
Czas
[s*102]
268
487
977
2269
3441
4553
6864
3800
3600
3400
3200
3000
2800
0
20
40
60
80
100
120
140
160
iteracje
z feromonem cyklicznym - dystans
Wykres 18
6250
5250
4250
3250
2250
1250
250
0
20
40
60
80
100
120
z feromonem cyklicznym - czas [s*0,01]
Wykres 19
140
160
iteracje
42
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
3. ALGORYTM MRÓWKOWY – z feromonem stałym
(ilość pozostawianego feromonu: 0,05, tempo odparowywania feromonu: 15%,
znaczenie feromonu: 1, znaczenie odległości: 3)
Iteracje
1
4238,39
3616,79
3254,94
3032,69
3028,56
3108,57
2875,64
5
10
20
50
75
100
150
Próby - dystans całkowity
2
3
4
5
3902,35 3642,16 3897,29 4005,30
3445,56 4030,95 3289,34 4147,60
3371,74 3051,89 3120,84 3013,81
2984,49 2959,23 3325,92 3149,97
3060,01 3086,65 3143,80 2994,58
2830,74 2965,97 2949,05 2848,11
2924,25 2918,75 2829,76 2806,24
Tablica 15
średnia
3937,10
3706,05
3162,64
3090,46
3062,72
2940,49
2870,93
Czas
[s*102]
259
506
986
2366
3438
4879
6875
3800
3600
3400
3200
3000
2800
0
20
40
60
80
100
120
140
160
iteracje
z feromonem stałym - dystans
Wykres 20
43
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
6250
5250
4250
3250
2250
1250
250
0
20
40
60
80
100
120
140
160
iteracje
z feromonem stałym - czas [s*0,01]
Wykres 21
Z przeprowadzonych badań jasno wynika, że największy postęp w poszukiwaniu
rozwiązania, dla wszystkich badanych rodzajów feromonu, następuje w początkowej fazie
algorytmu. Późniejsze iteracje służą już tylko dla polepszenia tych miejsc w trasie,
których nie znaleziono właściwie na samym początku obliczeń. Poprawki te są dość
niewielkie, a na wyeliminowanie błędów potrzeba wiele iteracji i zarazem czasu. Mamy
zatem do czynienia z sytuacją gdzie należy wybrać czy zależy nam na szybkim określeniu
niezbyt doskonałego wyniku, czy też znacznym kosztem czasu uzyskać wynik bardziej
satysfakcjonujący.
Badanie to pozwala również na wysunięcie wniosku, że przy dysponowaniu
nieograniczoną ilością czasu za pomocą algorytmów mrówkowych można odnaleźć
dokładne rozwiązanie dowolnie skomplikowanego problemu.
5.6. Wpływ ilości miast na czas działania algorytmów
Ten test ma na celu pokazanie zależności pomiędzy ilością miast dla jakich
rozwiązywany jest problem komiwojażera, a czasem jaki jest potrzebny do jego
rozwiązania.
W doświadczeniu uwzględniany jest jedynie czas działania (jakość znalezionego
rozwiązania nie ma znaczenia). Z tego powodu wszystkie próby będą odbywały się dla
standartowych ustawień. Test przeprowadzany jest dla trzech typów algorytmu
44
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
mrówkowego oraz dla algorytmu włączania, a układ miast jest taki sam dla każdego z
badanych algorytmów.
1. ALGORYTM MRÓWKOWY – z feromonem cyklicznym-elitarnym
Liczba
miast
10
20
30
40
50
60
Próby – czas działania
2
3
4
56
56
54
277
270
274
846
839
840
2017
2019
2030
3993
3972
3977
7253
7250
7245
Tabela 16
1
58
267
839
2044
3996
7242
5
57
272
831
2042
3983
7241
Średnia
[s*102]
56,2
272
839
2030,4
3984,2
7246,2
[s*0,01]
7000
6000
5000
4000
3000
2000
1000
0
0
10
20
30
40
cykliczny - elitarny
Wykres 22
50
60
70
45
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. ALGORYTM MRÓWKOWY – z feromonem cyklicznym
Liczba
miast
10
20
30
40
50
60
Próby – czas działania
2
3
4
56
56
50
269
270
272
832
845
844
2036
2050
2050
3978
3978
3963
7226
7235
7245
Tabela 17
1
58
265
839
2037
3974
7254
Średnia
2
5 [s*10 ]
56
55,2
273
269,8
847
841,4
2053
2045,2
3977
3974
7238
7239,6
[s*0,01]
7000
6000
5000
4000
3000
2000
1000
0
0
10
20
30
40
50
60
70
cykliczny
Wykres 23
3. ALGORYTM MRÓWKOWY – z feromonem stałym
Liczba
miast
10
20
30
40
50
60
Próby
1
55
271
839
2059
3977
7247
2
3
55
56
272
270
839
828
2031
2045
3976
4006
7272
7247
Tabela 18
4
56
270
843
2051
3972
7255
5
56
270
836
2030
3977
7257
Średnia
55,6
270,6
837
2043,2
3981,6
7255,6
46
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
[s*0,01]
7000
6000
5000
4000
3000
2000
1000
0
0
10
20
30
40
50
60
70
stały
Wykres 24
4. ALGORYTM WŁĄCZANIA
Liczba
miast
10
20
30
40
50
60
1
2
2
3
3
3
5
Próby – czas działania
2
3
1
1
2
2
1
4
3
3
3
3
5
4
Tabela 19
4
2
1
3
3
5
5
5
1
2
2
2
3
5
Średnia
[s*102]
1,4
1,8
2,6
2,8
3,4
4,8
47
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
[s*0,01]
5
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
0
10
20
30
40
50
60
70
włączania
Wykres 25
Na podstawie przeprowadzonych badań widać wyraźnie jak znacznie wpływa
liczba miast na czas wykonywania obliczeń. Ilość obliczeń potrzebnych do
przeprowadzania jednej mrówki przez wszystkie miasta zwiększa się wykładniczo i co za
tym idzie rośnie czas obliczeń dla jednej mrówki jak i dla całego badania.
W przeprowadzonych badaniach liczba iteracji i wielkość populacji były stałe dla
każdej ilości miast, toteż jakość uzyskiwanych rozwiązań nie była zbyt dobra. Dodatkowe
dostosowanie populacji i iteracji do aktualnej liczby miast dodatkowo wpłynęłyby
(niekorzystnie) na czas działania algorytmu.
Przyjęta metoda zliczania czasu działania algorytmu jest wystarczająco dobra dla
algorytmów mrówkowych, które mają długie czasy działania, ale dla algorytmu włączania
jest to metoda dość niedokładna i stąd wynik obarczony jest dużym błędem (bardzo
krótkie czasy działania).
5.7. Podsumowanie algorytmów
Doświadczenie
to
ma
na
celu
przedstawienie
wszystkich
algorytmów
zastosowanych w programie oraz podsumowanie osiąganych za ich pomocą wyników.
Próby zostały przeprowadzone w podobny sposób jak w poprzednich doświadczeniach. Z
48
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
uwagi na różnice w działaniu pomiędzy poszczególnymi algorytmami parametry sterujące
nie mogły być ujednolicone, ale dla każdego algorytmu z osobna zostały dobrane
indywidualnie.
Test został przeprowadzony dla dwóch różnych problemów komiwojażera
(problem 35 oraz 50 miast).
1. Podsumowanie dla 35 miast:
id.
1
2
3
4
5
Algorytm
cykliczny-elitarny
cykliczny
stały
losowy
włączania
1
2687,94
3724,39
3868,72
6172,47
2887,88
Próby
2
3
4
2682,53 2764,45 2926,88
3496,82 3975,54 3810,87
3897,36 3659,03 3908,30
6054,12 5916,97 6172,43
2641,26 2874,25 2772,98
Tablica 20
5
2739,63
3488,85
3631,24
6070,65
2684,38
Czas
2
średnia [s*10 ]
2760,28
3430
3699,29
3397
3792,93
3410
6077,33
2796
2772,15
10
7000
6000
5000
4000
3000
2000
1000
0
dystans
czas [s*0,01]
1
2
3
4
5
2760,28
3699,29
3792,93
6077,33
2772,15
3430
3397
3410
2796
10
Wykres 26
49
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
2. Podsumowanie dla 50 miast:
id.
1
2
3
4
5
Algorytm
cykliczny-elitarny
cykliczny
stały
losowy
włączania
1
3388,18
4056,21
3876,22
9737,50
3373,50
Próby
2
3
4
3422,24 3219,36 3256,61
4089,05 4173,32 3958,77
4290,36 3983,88 4269,86
9628,96 9537,64 9137,51
3626,36 3366,48 3373,50
Tablica 21
5
3327,17
3876,22
4053,77
9494,70
3373,50
Czas
2
średnia [s*10 ]
3322,71 17062
4030,71 17306
4094,82 17222
9507,26
8372
3422,67
12
20000
18000
16000
14000
12000
10000
8000
6000
4000
2000
0
dystans
czas [s*0,01]
1
2
3
4
5
3322,71
4030,71
4094,82
9507,26
3422,67
17062
17306
17222
8372
12
Wykres 27
Dla problemu 35 miast widać, że najlepiej z zadaniem poradził sobie algorytm
mrówkowy
z
feromonem
cyklicznym-elitarnym.
Pozostałe
wersje
algorytmów
mrówkowych uplasowały się z wynikami nieznacznie gorszymi. Dobre wyniki dał
również algorytm włączania. Algorytm losowy okazał się nieodpowiedni dla tak
skomplikowanego problemu. Ilość czasu potrzebna na dokonanie obliczeń dla wszystkich
algorytmów jest podobna. Wyjątek stanowi algorytm włączania, któremu dokonanie
50
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
wszystkich potrzebnych obliczeń zajmuje tak niewiele czasu, że właściwie można uznać
iż wynik otrzymywany jest natychmiast.
Dla problemu 50 miast algorytm z feromonem cykliczny-elitarnm ujawnił swoją
prawdziwą moc w porównaniu do innych algorytmów. Algorytm z feromonem
cyklicznym i stałym uplasowały się na podobnym poziomie, a algorytm losowy podobnie
jak miało to miejsce dla 35 miast okazał się być nieodpowiedni. Algorytm włączania
uzyskał wyniki satysfakcjonujące. W tym doświadczeniu wyraźnie widać, jak wiele czasu
potrzebne jest na dokonanie obliczeń tak, aby uzyskany wynik był dobry lub bardzo
dobry. Dla algorytmu włączania sytuacja jest podobna jak dla poprzedniej próby – czas
obliczeń jest niezwykle krótki. Ta cecha algorytmu sugeruje, że będzie się również
nadawał do rozwiązywania znacznie bardziej złożonych problemów – mimo, że wyniki
uzyskiwane za jego pomocą nie są doskonałe.
51
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
6. Wnioski
Przeprowadzone badania pozwalają na wysnucie wniosków dotyczących
rozwiązywania problemu komiwojażera za pomocą algorytmów mrówkowych. Okazuje
się, że problem komiwojażera można w sposób bardzo efektywny rozwiązać zarówno za
pomocą algorytmu mrówkowego jak i innych algorytmów.
Na pierwszy rzut oka wydaje się, że tak jak prawdziwe mrówki potrafią
przemieszczać się od mrowiska do źródła pożywienia, tak wirtualne mrówki powinny
umieć poruszać się pomiędzy miastami. Jest tak w rzeczywistości. Cały proces odbywa
się na nieco innej zasadzie niż ma to miejsce w naturze, ale i problem komiwojażera jest
bardziej złożony niż problem dotarcia do pożywienia i powrotu do początku wędrówki.
W związku z tym, że różne typy algorytmów wymagają przyjęcia różnych założeń,
wnioski oparte na przedstawionych wynikach badań zostały podzielone.
1.
Algorytm mrówkowy z feromonem stałym. Jest to najprostsza wersja
algorytmu i wyniki uzyskiwane za jego pomocą również nie są
najwyższej
jakości.
Rozwiązywanie
problemów
bardziej
skomplikowanych może dać nie dość dobre wyniki. Jednak do prostych
zastosowań jest to jak najbardziej dobre rozwiązanie. Łatwość
implementacji klasyfikuje ten algorytm jako ten, który można stosować
w nie zanadto skomplikowanych problemach.
2.
Algorytm mrówkowy z feromonem cyklicznym. Jest to nieco bardziej
skomplikowana odmiana poprzedniego algorytmu i lepiej radzi sobie ze
średnio
trudnymi
problemami.
Wykazuje
lepsze
tendencje
do
poprawiania już znalezionego wyniku mimo, że często wynik
odnaleziony dzięki temu algorytmowi nie spełnia pokładanych
oczekiwań.
3.
Algorytm
mrówkowy
z
feromonem
cyklicznym-elitarnym.
Jest
najbardziej skomplikowaną wersją algorytmu zaimplementowaną w
programie. Doskonale radzi sobie z małymi i średnimi problemami, choć
nadal występują pewne niedokładności dla dużych problemów.
Algorytm ten wykazuje dobre tendencje w późniejszych działaniach,
52
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
jako że często radzi sobie z błędami powstałymi w początkowym etapie,
w którym mrówka porusza się niemal na ślepo.
4.
Algorytm losowy. Bardzo prosty i bardzo prosty w implementacji. Nie
wymaga dużych nakładów pamięci. Przez swoją prostotę i całkowitą
losowość sprawdzanych rozwiązań, nie nadaje się do rozwiązywania
innych problemów jak bardzo małe. Dla problemów powyżej 15 miast
staje się zupełnie bezużyteczny.
5.
Algorytm włączania. Bardzo szybki algorytm, nadający się do
rozwiązywania dowolnie skomplikowanych problemów. Podstawową
zaletą tego algorytmu jest fakt, że kilka prób dla tego samego problemu
daje zazwyczaj taki sam wynik. Czas potrzebny na dokonanie
wszystkich obliczeń w porównaniu z innymi badanymi algorytmami
praktycznie jest tu bliski zeru. Jego największą wadą jest to, że często
znalezione rozwiązanie nie jest idealne.
Algorytmy
mrówkowe
doskonale
nadają się
do rozwiązania problemu
komiwojażera. Przy odpowiednim ustawieniu parametrów każdy typ tego algorytmu da
dobre lub bardzo dobre wyniki. Największym mankamentem tej metody są olbrzymie
ilości obliczeń jakie komputer musi wykonać dla każdej pojedynczej mrówki, a co za tym
idzie dla całego procesu wyszukiwania rozwiązania. Dużym plusem jest możliwość
implementacji tego algorytmu w celu rozwiązania również innych problemów oraz fakt,
że uzyskane tą drogą rozwiązanie będzie satysfakcjonujące również gdy problem, do
którego został algorytm dostosowany, ulegnie pewnym modyfikacjom – jak to ma na
przykład miejsce przy zmieniających się miastach w problemie komiwojażera.
Alternatywny algorytm włączania zawsze uzyskuje dobre wyniki. Jego
konstrukcja mocno ogranicza ilość dokonywanych obliczeń przez co wyniki uzyskuje się
bardzo szybko.
53
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Bibliografia:
Literatura:
1.
Boryczka U., „Systemy mrówkowe”, czerwiec1995.
2.
Marco Dorigo, Vittorio Maniezzo, Alberto Colorni, “The Ant System:
Optimization by a colony of cooperating agents”, IEEE Transactions on Systems,
Man, and Cybernetics – Part B, 26 (1) 1996.
3.
Krishnaiyer, Krishnan, S. Hossein Cheraghi, „Ant Algorithms: Review and Future
Applications”, Proceedings of the Industrial Engineering Research Conference
(IERC), Maj, 2002.
4.
Kołodziejczyk Joanna, materiały z wykładów Elementy Sztucznej Inteligencji,
Wydział Informatyki, Politechnika Szczecińska, 2003.
5.
Reinelt Gerhard, “TSPLIB 95”, Universitat Heidelberg, Institut fur Angewandte
Mathematik, Heidelberg 1994.
6.
Sysło Maciej. M., Deo Norsingh, Kowalik Janusz S., „Algorytmy optymalizacji
dyskretnej”, Wydawnictwo Naukowe PWN, Warszawa 1999.
7.
Dorigo M., Gambardella L.M, Ant Colonies for Traveling Salesman Problem ,
BioSystems,No. 43,pp. 73-81, 1997
Strony internetowe:
1i.
http://www.psychofizjonomika.heron.com.pl/psychofizjonomika_inteligencja.html
Dariusz Czajkowski, „Inteligencja i Tolerancja”, Instytut Psychofizjonomiki,
Wrocław, 03.01.2005 .
2i.
http://pl.wikipedia.org, Wolna Encyklopedia, internetowa encyklopedia,
24.03.2005.
3i.
http://www.mini.pw.edu.pl/MiNIwyklady/grafy/prob-komiw.html, Wydział
Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, 20.03.2005
4i.
http://www.alife.pl, Portal Sztucznego Życia, 05.04.2005
54
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Załącznik 1 - Biblioteka TSPLIB95
Standard TSP jest prostą metodą zapisywania i odczytywania danych o węzłach w
plikach o charakterze tekstowym. Została ona opracowana w celu znormalizowania zapisu
problemów i ich rozwiązań głównie w celu porównywania wydajności z innymi
aplikacjami.
Format zapisu sprowadza się do postaci: <słowo kluczowe> : <wartość>.
Dopuszczalne konstrukcje dla wartości, to:
•
<string> - tekst,
•
<integer> - liczba całkowita,
•
<real> - liczba rzeczywista.
Dopuszczalne konstrukcje dla <słowa kluczowego>, to:
•
NAME : - pole z nazwą pliku,
•
TYPE : - określa typ pliku,
•
COMMENT : - komentarz do pliku,
•
DIMENSION : - ilość węzłów,
•
EDGE_WEIGHT_TYPE : - specyfikuje typ układu,
•
EDGE_WEIGHT_FORMAT : - specyfikuje format zapisu układu,
•
NODE_COORD_TYPE : - specyfikuje typ zapisu współrzędnych węzła,
•
DISPLAY_DATA_TYPE : - specyfikuje typ zapisu danych,
•
EOF : - koniec pliku.
Oprócz podstawowych informacji na temat zapisanych w pliku danych w skład
biblioteki wchodzi opis standardu zapisu tych danych oraz inne kwestie związane z
zapisem i obliczeniami na węzłach. Pełna dokumentacja [5] zawiera szeroki opis
wszystkich funkcji.
Zastosowanie biblioteki TSPLIB95 w problemie komiwojażera sprowadza się do
zapisu/odczytu współrzędnych kolejnych miast oraz odczytu optymalnej kolejności tych
miast.
55
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Załącznik 2 – Schematy blokowe
Główny cykl programu:
Start
Wczytanie
pliku
Tak
Dane z pliku
Nie
Pobranie
zmiennych
Wykonanie obliczeń
Przedstawienie
graficzne
Zapis
danych do
pliku
Zapisanie
graficznej
interpretacji do
pliku JPG
Stop
Losowe
generowanie miast
56
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Moduł obliczeń:
Start
Pobranie
zmiennych
Wygenerowanie tablicy
odległości
Nie
Nie
Algorytm
włączania
Moduł algorytmu
losowego
Algorytm
mrówkowy
Tak
Tak
Wygenerowanie
pustej tablicy
feromonu
Moduł algorytmu
włączania
Zwócenie wyniku
Stop
Moduł algorytmu
mrówkowego
57
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Moduł algorytmu losowego:
Start
Nie
Osiągnieto
liczbę iteracji
Tak
Losowe
posortowanie miast
Obliczenie
odleglosci
Nie
Czy odleglość
najkrótsza?
Zapisanie
odległości
Tak
Stop
58
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Moduł algorytmu włączania:
Start
Wylosowanie miasta początkowego
i dodanie go do cyklu
Wybór kolejnego miasta niewłą
czonego jeszcze do cyklu metodą
"najdalszy od cyklu"
Włączenie miasta do cyklu poprzez
wyszukanie odpowiedniego miejsca w cyklu
(najmiższy koszt miasta względem miast
somsiadujacych w cyklu)
Liczba miast - 1
Nie
Liczba miast ==0
Stop
Tak
59
Zastosowanie algorytmów mrówkowych do rozwiązywania problemu komiwojażera
Moduł algorytmu mrówkowego:
Start
Tak
Stop
Liczba
iteracji==0
Nie
Ilość
mrówek==0
Tak
Odparowanie
feromonu
Nie
Losowanie miasta
startowego
Losowanie z
prawdopodobieństwem
miasta kolejnego
Dodanie miasta
Zostawienie "śladu
feromonu " w
tablicy feromonu
Tak
Wszystkie
miasta?
Nie
Zostawienie "śladu
feromonu " w
tablicy feromonu
Tak
Tak
Czy feromon
cykliczny?
Czy feromon
staly?
Nie
Nie
Oblicznie odległości
Nie
Czy najlepsza
odległość?
Tak
Nie
Zapisanie cyklu i
odleglosci
Czy feromon
cykliczny elitarny?
Tak
Zostawienie "śladu
feromonu " w
tablicy feromonu

Podobne dokumenty