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