Komputerowy system do�dań�ektywności metaheurystyki ''System Mrówek'' w zakresie optymalizacji dyskretnej


Temat Pracy Magisterskiej:

„Komputerowy system do badań efektywności meta-heurystyki „System Mrówek” w zakresie optymalizacji dyskretnej.”

Promotor:

Spis treści.

Spis treści.

1. Wprowadzenie

Wiek XX to gwałtowny rozwój nauk związanych z technikami obliczeniowymi. Rozwiązano wiele problemów, które ze względu na złożoność obliczeniową wydawały się nierozwiązywalne. Powstała nowa nauka nazwana „badaniami operacyjnymi”. Jej początki związane są z drugą wojną światową, kiedy w siłach zbrojnych USA i Wielkiej Brytanii zostały utworzone specjalne grupy naukowców w celu przygotowywania różnych wariantów rozwiązań dotyczących organizacji i zabezpieczenia środków dla działań bojowych. Po zakończeniu wojny metody działania badań operacyjnych zostają przeniesione do innych działań ludzkiej działalności. W dniu dzisiejszym metody badań operacyjnych wykorzystuje się w przemyśle, gospodarce rolnej, handlu, transporcie, organizacji służby zdrowia itp.

Ten gwałtowny rozwój badań operacyjnych w bardzo dużym stopniu związany jest z pojawieniem się maszyny nazwanej z biegiem czasu komputerem. Komputer ze względu na swoją moc obliczeniową pozwolił rozwiązywać problemy dużych rozmiarów, potrzebujące dużych ilości rachunków. Niemniej zostało jeszcze wiele problemów, dla których nie znaleziono rozwiązania lub znalezione rozwiązanie jest niezadowalające. Przykładem może być tzw. problem komiwojażera, którego istota przedstawiona będzie w dalszej części pracy. Nauka w dalszym ciągu poszukuje algorytmy, które pozwolą rozwiązywać to zadania w rozsądnym czasie, nawet gdy wielkość zadania jest duża. Praca ta ma na celu sprawdzenia, czy algorytm zwany „System mrówek” może znaleźć zastosowania właśnie do tego problemu.

Jako zagadnienie optymalizacji dyskretnej wybrano asymetryczne zagadnienie komiwojażera z uwagi na:

2. Podstawowe definicje

Ponieważ praca opiera się głównie na materiałach z konferencji naukowych uznałem za stosowne wyjaśnienie pewnych pojęć, które mogą być pomocne w odpowiednim zrozumieniu dalszej części pracy.

2.1 Graf

Graf G definiujemy jako parę G = (V, E), gdzie V jest zbiorem skończonym, zaś E jest relacją binarną w V. Zbiór V nazywamy zbiorem wierzchołków G, a jego elementy nazywane są wierzchołkami. Relacja binarna E jest nazywana zbiorem krawędzi G, a jej elementy krawędziami.

Rozróżniamy dwa podstawowe rodzaje grafów:

  1. 0x08 graphic
    Graf nieskierowany, zbiór krawędzi E to zbiór nieuporządkowanych par wierzchołków. Oznacza to, że krawędź jest zbiorem {u, v}, gdzie u, v należą do zbioru V. Jeżeli ponadto u v, tj. graf nie posiada pętli oraz wielokrotnych krawędzi to nazywany jest grafem prostym.

Rys. 1

Na rysunku 1 przedstawiony jest przykład przedstawienia graficznego grafu nieskierowanego. Wierzchołki przedstawiane są jako kółka, krawędzie jako linie.

  1. Graf skierowany, to graf gdzie zbiór krawędzi E to zbiór uporządkowanych par wierzchołków. Różnice z grafem opisywanym wcześniej są następujące:

0x08 graphic

Rys. 2

Na rysunku 2 przedstawiony jest obraz grafu skierowanego. Jak można zauważyć, różnica z rysunkiem 1 kryje się w przedstawieniu krawędzi. W grafie skierowanym przedstawiają je strzałki nie krawędzie.

Dla jasnego przeprowadzenia dalszych rozważań należy wyjaśnić dalsze dwa pojęcia związane z grafem:

2.2 Cykl „Hamiltona”

Pojęcie cyklu „Hamiltona”, zwanego marszrutą, rozpatrywano już od przeszło stu lat. Związane jest ono z pojęciem grafu. Formalnie rzecz biorąc, cykl Hamiltona w grafie nieskierowanym G = (V, E) to cykl prosty zawierający wszystkie wierzchołki zbioru V. Graf, który ma cykl Hamiltona, nazywamy hamiltonowskim; w przeciwnym razie niehamiltonowskim.

2.3 Heurystyka

Pojęcie heurystyka jest mało znane, choć popularne są jego różne szczegółowe techniki i metody (a najbardziej intuicyjnie stosowane wskazówki heurystyczne). Trudno jest odnaleźć w literaturze definicje tego słowa. Nie ma go przykładowo w takich dużych opracowaniach encyklopedycznych jak: 30-tomowa Encyclopedia Americana, 29-tomowa Encyclopedia Britannica, 3-tomowa The Canadian Encyclopedia czy też w mniejszych pracach specjalistycznych: Słownik pojęć filozoficznych W. Krajewskiego, Słownik encyklopedyczny. Filozofia - G. Vesey, P. Foulkes.

W Badaniach Operacyjnych bardzo często wykorzystywane jest pojęcie algorytmu heurystycznego. Odnosi się ono do algorytmów wykorzystujących metody pozwalające odkrywać rozwiązania złożonych problemów w oparciu o próby zrozumienia i odtworzenia niektórych czynności umysłu ludzkiego.

U podstaw tego typu algorytmów, leży założenie, że dla zadań, w których mamy do czynienia z dużymi przestrzeniami rozwiązań, ważne jest wczesne odrzucenie nieobiecujących kierunków przeszukiwania. Zapewnia to ogromne oszczędności na kosztach obliczeniowych, a w rezultacie przyspiesza znalezienie rozwiązania. Większa skuteczności tych metod polega na dostosowaniu kierunków poszukiwania do potrzeb rozwiązywanego problemu. W tym celu wykorzystuje się pewne informacje o zadaniu. Heurystyka to wszelkie metody pozwalające algorytmowi poszukującemu rozwiązania pójść "na skróty". Skuteczności kroków heurystycznych nie można w pełni udowodnić teoretycznie, można jedynie pokazać doświadczalnie ich trafność.

Algorytmy tego typu odegrały bardzo ważną role w rozwoju nauk związanych z obliczeniami komputerowymi. W obecnym czasie zastępowane są innymi grupami algorytmów, np. rozważanymi w tej pracy mata-heurystykami.

2.4 Meta-heurystyka

Dla wielu problemów NP-zupełnych nauka nie znalazła jeszcze algorytmu pozwalającego na znalezienie optymalnego rozwiązania w czasie umożliwiającym zastosowanie algorytmu w życiu codziennym. Dla wielu problemów zaproponowano zdroworozsądkowe algorytmy dostarczające w krótkim czasie możliwe do przyjęcia rozwiązanie, które nie zawsze jest rozwiązaniem optymalnym. Algorytmy takie wykorzystują wiedzę o specyfice problemu i na tej podstawie znajdują rozwiązanie, które może być wykorzystane do danego zastosowania.

W obecnym czasie, główna uwaga naukowców zajmujących się Badaniami Operacyjnym skoncentrowana jest na innej, nowej klasie algorytmów znanej meta-heurystyką. Meta-heurystyka to raczej swoistego rodzaju szkielet algorytmu, który może być modyfikowany i używany do konkretnych zastosowań. Przykładem meta-heurystyk są algorytmy:

Meta-heurystyki bardzo często inspirowane są obserwacją przyrody. Wymienione wcześniej algorytmy zainspirowane były kolejno: analizą fizycznego procesu wyżarzania, Darwinowską teorią ewolucji i sprytnym zarządzaniem pamięci. Algorytm „system mrówek”, któremu poświęcona jest ta praca także należy do klasy algorytmów meta-heurystycznych.

2.5 Złożoność obliczeniowa algorytmów

Klasyfikując różne problemy, możemy na podstawie teorii matematycznych podzielić je na rozwiązywalne i nierozwiązywalne. Jednak to, co jest teoretycznie rozwiązywalnym zadaniem, w praktyce może okazać się nie do rozwiązania w realnym czasie (może to zająć miliony lat nawet najszybszym superkomputerom). Dlatego z praktycznego punktu widzenia zadania zostały podzielone na klasy:

Trudność rozwiązywania problemów NP-zupełnych polega na tym, że liczba obliczeń, jakie trzeba wykonać, by znaleźć rozwiązanie, gwałtownie rośnie wraz z rozmiarem problemu. I tak, jeśli pewien mały problem tej klasy daje się rozwiązać w ciągu kilku minut, to już ten sam problem dwukrotnie większy można rozwiązywać kilkaset lat.

Omówiona w ten sposób złożoność obliczeniowa nazywana jest czasową złożonością algorytmów (ang. Time Complexitity of an Algorithm). Jej definicje można przedstawić jako funkcję złożoności czasowej, przyporządkowującą każdej wartości rozmiaru instancji I maksymalną liczbą elementarnych kroków (lub jednostek czasu) maszyny cyfrowej potrzebnych do rozwiązania za pomocą algorytmu A instancji o tym rozmiarze, to znaczy funkcję:

fA(n) = max { t : (t jest liczbą elementarnych kroków maszyny cyfrowej niezbędną dla rozwiązania instancji I należącej do Dn)^(n = N(I))},

gdzie Dn jest zbiorem instancji problemu decyzyjnego a n jest rozmiarem każdej instancji.

Zwykle funkcje czasowej złożoności obliczeniowej algorytmu fA(n) ocenia się z dokładnością do rzędu.

Drugim rodzajem złożoności obliczeniowej jest tzw. pamięciowa złożoność obliczeniowa algorytmu (ang. Space Complexitity of an Algorithm) rozumiana jako jest to rozmiar pamięci urządzenia liczącego niezbędny do wykonania algorytmu, wyrażony w funkcji rozmiaru problemu. Tego typu złożoność nie jest jednak przedmiotem rozważań w tej pracy i nie będzie rozpatrywana w dalszej jej części.

3. Opis rozważanego problemu

Jak zostało wspomniane we wstępie, w tej pracy zostanie przeprowadzone rozważanie na temat możliwości zastosowania algorytmu zwanego „System mrówek” dla znalezienia rozwiązania problemu zwanego „Problemem komiwojażera”. W tym rozdziale przedstawiony zostanie opis tego zagadnienia.

3.1 Problem komiwojażera

Komiwojażer, czyli obwoźny sprzedawca towarów ustawicznie boryka się z problemem, jak w najkrótszym czasie i w najtańszy sposób odwiedzić wszystkich znajdujących się w różnych miastach klientów i znaleźć się w końcu w punkcie wyjścia. Oczywistym jest fakt, że dwukrotna wizyta u jednego klienta w ciągu danego cyklu jest zbyteczna, a przede wszystkim nieekonomiczna i dlatego należy ja wykluczyć.

Problem komiwojażera można przedstawić za pomocą grafu. Graf przedstawiający problem zawiera zbiór V (N=|V|) wierzchołków, reprezentujących odwiedzane przez sprzedawcę miasta, oraz zbiór łuków E łączące wszystkie wierzchołki N, reprezentujące drogi między miastami. Jeżeli przez dij oznaczymy miarę oznaczającą długość łuku (i,j) należącego do zbioru E, będzie on reprezentował odległość miedzy miastami i oraz j. Rozwiązanie Problemu Komiwojażera polega na znalezieniu minimalnej wartości cyklu Hamiltona dla grafu G = (V, E). Cykl ten jest zamknięty, znajduje się w nim każdy wierzchołek oraz każdy wierzchołek znajduję się w nim tylko jeden raz.

Wyróżniamy jeszcze „Asymetryczny Problem Komiwojażera”, charakteryzujący się tym, że dij dji. Graf reprezentujący ten problem jest grafem skierowanym.

W opracowaniach naukowych „Problem komiwojażera” oznaczany jest symbole TSP. Skrót ten wzięty jest z angielskiej nazwy problemu, tzn. Traveling Salesman Problem. „Asymetryczny Problem Komiwojażera” reprezentowany jest symbelem ATSP (Asymmetric Traveling Salesman Problem).

Podsumowując opis „Problemu Komiwojażera”, jego definicję można przedstawić następująco:

TSP

Niech:

V = {a, ..., z } zbiór wierzchołków grafu odpowiadających miastom, które ma odwiedzić podróżujący sprzedawca

E = { (r, s): r, s V } zbiór krawędzi grafu, odpowiadających drogom pomiędzy miastami

d(r, s) = d(s, r) , (r, s) A miara odpowiadająca odległością pomiędzy poszczególnymi miastami

Rozwiązanie problemu TSP polega na znalezieniu minimalnego pełnego cyklu zamkniętego, w którym każde miasto odwiedzane jest tylko raz.

Jeżeli każde miasto r V podane jest poprzez jego współrzędne {xr, yr} oraz miara d(s, r) jest miarą Euklidesową pomiędzy miastami r i s, mówimy wtedy, że rozpatrujemy „Euklidesowy Problem Komiwojażera”.

ATSP

Jeżeli spotykamy się z problemem różniącym się od opisywane powyżej tylko tym, że d(r, s) d(s, r) wtedy problem oznaczany symbolem TSP staje się Asymetrycznym Problemem Komiwojażera (ATSP).

Definicja 1

Z punktu widzenia procesu optymalizacji dyskretnej zagadnienie ATSP jest znacznie trudniejszym problemem niż symetryczne zagadnienie TSP.

3.2 Zastosowanie praktyczne

W tym paragrafie podane zostaną przykłady zastosowania problemu komiwojażera w życiu codziennym. Przykłady te zaczerpnięte są z książki profesora Bogusława Filipowicza „Badania Operacyjne”. Trzeba jednak zauważyć, iż nie są to jednak jedyne przykłady zastosowań tego problemu.

3.2.1 Optymalizacja drogi w transporcie

Spotykanym w życiu codziennym problem optymalizacji drogi formalizowanym w postaci problemu komiwojażera jest dobór trasy dla ciężarówki zaopatrującej sklepy danego regionu w produkty pobrane w magazynie. Najbardziej reprezentacyjnym przypadkiem jest tu działalność firm kurierskich. Zasada działania tych firm opiera się na bardzo sprawnie działającej sieci kurierów obsługujących przydzielone im regiony. Optymalizacja drogi w rezultacie może dać nie tylko zmniejszenie kosztów własnych lecz również zredukować liczbę kurierów potrzebnych do realizacji zamówień firmy. Zauważamy, że optymalizować można bezpośrednio koszty transportu przeliczane np. na odległość według liniowej funkcji lub też minimalizować czas trwania przejazdów i tą drogą osiągnąć zwiększenie efektywności przedsiębiorstwa.

Kurier i dostawca muszą po skończeniu działania wrócić do bazy, aby podjąć się kolejnych prac i nie jest w ich interesie pojawienie się w tym samym punkcie dwa razy podczas jednego cyklu. Punkty do odwiedzenia to w interpretacji grafowej wierzchołki grafu, odcinki (etapy trasy) łączące poszczególne punkty to krawędzie grafu. Każdej krawędzi przyporządkowuje koszt przemieszczenia się między punktami będącymi wierzchołkami grafu. Ponieważ dążymy do minimalizacji kosztów, krawędziom reprezentującym niemożliwe do realizacji lub nie istniejące w rzeczywistości połączenia, przyporządkowuje się koszt nieskończenie wielki.

Problem ten staje się coraz bardziej aktualny w dobie rozwoju e-commers. Planowane jest powstanie wielu firm, których działalność polegała będzie na dostarczaniu do klienta towarów zamawianych przez Internet. Problem opisywany w tym paragrafie będzie dla nich jakże aktualny.

3.2.2 Optymalizacja drogi w elektronice i mechanice

Bardzo ważnym zastosowaniem metod optymalizacji drogi jest wykonanie otworów montażowych i lutowanie podzespołów elektronicznych. Elementy wykonawcze tzn. wiertła i lutownice przemieszczające się za pomocą specjalnego układu napędowego. Ponieważ są to układy mechaniczne ich prędkość działania jest ograniczona zarówno przez koszty wykonania automatu jak i wytrzymałość elementów, z których są wykonane. Istotnym czynnikiem w produkcji wieloseryjnej jest czas obróbki jednego detalu.

Sposób postępowania przy opisie tego problemu jako zagadnienia komiwojażera jest analogiczny jak dla przypadku dostawcy, tzn.:

W masowej produkcji zysk z optymalizacji ma swoje źródło w skończonym czasie wykonania detalu, ograniczeniu energochłonności oraz zmniejszeniu zużycia mechanicznego automatu.

3.2.3 Optymalizacja drogi w systemach produkcyjnych

W elastycznych systemach produkcyjnych, jednym z elementów składowych jest system transportu detali pomiędzy stanowiskami roboczymi. Jak wiadomo, spotyka się na ogół trzy rodzaje sieci transportowych: sieć drabinkowa, mieszana oraz zamknięta w postaci pętli. Funkcjonowanie tej ostatniej może być zoptymalizowane za pomocą zagadnienia komiwojażera.

3.2.4 Optymalizacja drogi w systemach telekomunikacyjnych

Ostatni z przykładów zastosowania problemu komiwojażera dotyczy systemów telekomunikacyjnych. W sieci komputerowej typu „token ring” wymagane jest spełnienie warunku zamknięcia pętli łączącego wszystkie komputery. Koszty położenia jednego metra kabla i jego konserwacja mogą być zależne liniowo i odczytywane bezpośrednio z macierzy odległości. W przypadku zróżnicowania kosztów jednego metra instalacji macierz kosztów uzyskuje się na podstawie odpowiedniej wyceny odcinków między stacjami roboczymi i serwerami. Cena połączenia w obie strony, podobnie jak odległość jest zazwyczaj taka sama.

Rozwiązując problem komiwojażera obok zysku finansowego można poprawić również możliwości techniczne sieci. Wynika to z faktu, że prędkość propagacji sygnału w przewodach jest skończona, co nakłada ograniczenia na prędkość pracy takiej sieci oraz jej zasięg. Wyznaczenie najkrótszego połączenia pozwala na poprawę obu tych parametrów.

3.3 Metody rozwiązywania problemu komiwojażera

Ponieważ problem komiwojażera należy do problemów NP.-zupełnych, nie jest łatwo znaleźć algorytm rozwiązujący przy dużych rozmiarach problemu. Jednak ze względu na pojawianie się z życiu codziennym zadań łatwo sprowadzalnych do tego problemu, naukowcy zostali zmuszeni do prób opracowania metody rozwiązania problemu. Przykładem takich prób są metody:

Także autorzy meta-heurystyk przeprowadzali dyskusje nad możliwością zastosowania ich pomysłu do rozwiązywania tego problemu. W dalszej części tej pracy przedstawiona zostanie meta-heurystyka Dorigo „System mrówek” oraz moja próba realizacji tej meta-heurystyki właśnie do realizacji problemu komiwojażera.

4. Algorytm „System mrówek”

Za twórcę algorytmu zwanego „System Mrówek” uważany jest M. Dorigo. Zaproponował on nowe wielo-czynnikowe podejście do trudnych problemów optymalizacji kombinatorycznej. Algorytm ten wzorowany jest, jak większość metaheurystyk, na podstawie obserwacji przyrody. Dorigo przez długi okres czasu przyglądał się strukturze mrowiska.

Mrówki są owadami żyjącymi w koloniach, w których każdy osobnik ma dokładnie wyznaczone miejsce i pozycje. Ich zachowanie skierowane jest bardziej w kierunku przeżycia całej kolonii niż jako indywidualnej jednostki. Insekty przyciągnęły uwagę wielu naukowców ze względu na osiągnięcie wysokiego poziomu strukturalnego koloni, zwłaszcza w porównaniu ze względną prostotą jednostek indywidualnych.

Szczególną uwagę Dorigo zwróciły pracę biologów opisujących osobniki zajmujące się transportem pożywienia do mrowiska. Można znaleźć w nich stwierdzenie, że droga którą się udają do mrowiska jest najkrótszą jaką można dostać się z miejsca gdzie znajduje się pożywienia do mrowiska. Realizowane jest to dzięki temu, że w czasie przemierzanie drogi między źródłem pożywienia a gniazdem, mrówki składają na ziemi substancje zwana feromonem. Insekty te mają zdolność wyczuwania feromonu i w chwili wybierania drogi wybierają te, która oznaczona jest silnym stężeniem feromonu.

Ślad feromonu pozwala mrówkom na odnalezienie drogi z gniazda do źródła pożywienia i odwrotnie. Ponadto ten ślad może być używany przez inne mrówki do odnalezienia miejsca przechowywania żywności odnalezionej przez inne mrówki. W materiałach biologów opisany jest eksperyment wykazujący, że to zachowanie związane ze śladem feromonu jest przyczyną pojawienia się najkrótszych ścieżek. To znaczy gdy więcej ścieżek jest dostępnych z gniazda do źródła jedzenia , kolonia mrówek jest w stanie eksploatować ślady feromonu pozostawione przez inne mrówki w celu odkrywania najkrótszej drogi prowadzącej od gniazda do źródła jedzenia i z powrotem.

Ilustracją obserwacji biologów są umieszczone poniżej rysunki.

0x08 graphic
Rys. 3

0x08 graphic
Rysunek 3 przedstawia przemieszczającą się kolonię mrówek miedzy mrowiskiem a miejscem gdzie znalezione zostało pożywienie. Linia znajdująca się na rysunku ma obrazować pozostawiany przez owady feromon. Widzimy, że przemieszczające się mrówki, poruszają się wzdłuż linii, utworzonej z substancji chemicznej.

Rys. 4

Na rysunku 4 uwidocznione jest umieszczenie na linii feromonu przeszkody. Przeszkoda to uniemożliwia owadom dalsze poruszanie się po najkrótszej drodze miedzy dwoma punktami. W tym momencie rozpoczyna się poszukiwanie najkrótszej drogi do obejścia przeszkody.

0x08 graphic
Rys. 5

0x08 graphic
Na rysunku 5 widzimy początkowy losowy wybór drogi przejścia łańcucha mrówek. Pozostawiają one z dwóch stron fenemon, który będzie wykorzystany przez następne osobniki do wyznaczenia krótszej drogi.

Rys. 6

Stan końcowy przedstawiony jest na rysunku 6, gdzie droga pokazana na rysunku, jako droga nad przeszkodą, okazała się krótsza, feromon pozostawiony na tej ścieżce wolniej „parował”. Ślad pozostawianej substancji chemicznej okazywał się silniejszy właśnie na tej drodze, ponieważ jest ona krótsza. Powodowało to, że mrówki poruszające się później chętniej wybierały właśnie tę ścieżkę. Ślad feromonu stawał się coraz mocniejszy, aż wszystkie mrówki poruszały się tędy.

Należy też zauważyć, że ścieżka zostaje wybrana, nawet gdy alternatywna droga jest tej samej długości. Te prawidłowość zaobserwowano podczas następnego doświadczenia.

0x08 graphic
Rys. 7

Jak widać na rysunku 7, kolonia mrówek i źródło jedzenia zostały odgrodzone czymś co można określić jako binarny most. Każda z gałęzi tego mostu była tej samej długości. Mrówki pozostawiono tak, aby mogły swobodnie poruszać się między źródłem pożywienia a gniazdem i obserwowano ilość mrówek wybierających jedną z dwóch gałęzi.

Wykres 1

0x08 graphic
Wyniki doświadczenia widoczne są na wykresie 1. Widać tam, że po okresie przejściowym, w którym miały miejsce pewne wahania, mrówki zaczęły gromadzić się na tej samej (górnej) ścieżce.

Powodem takiego zachowania mrówek jest to, że początkowo nie ma feromonu na żadnej z gałęzi, które wybierane są z tym samym prawdopodobieństwem. Wahania w okresie przejściowym powodują, że kilka mrówek wybiera górną gałąź. Powoduje to zwiększenie ilości feromonu na tej gałęzi co z kolei stymuluje inne mrówki do jej wybrania itd. Należy jednak zauważyć, że przy powtórzeniu eksperymentu od początku, tak samo prawdopodobnym jest wybranie przez mrówki drugiej gałęzi.

Wydaje się być interesującym fakt że pomimo, iż każda z mrówek ma zdolność rozwiązywania problemów, tj. odnajdywanie ścieżki pomiędzy pojemnikiem jedzenia a gniazdem to dopiero kolonia mrówek charakteryzuje się zdolnością „odnalezienia najkrótszej drogi”. Również warto zaznaczyć, że mrówki zachowują się tak specyficznie, używając prostej formy pośredniej komunikacji za pośrednictwem składowania feromonu, zwanej stigmergy. Nazwa ta zaczerpnięta została z pracy pana Grass'e „La reconstruction ...”, która traktuje o innej społeczności owadów, tzn. termitów. W swojej pracy, Grass'e zdefiniował stigmery jako „stymulowanie robotników poprzez przedstawianie tego co osiągnęli”. W rzeczywistości Grass'e zaobserwował, że termity są w stanie zareagować na tzw. „ważne bodźce”, które uaktywniają genetycznie zakodowaną reakcje. W przypadku insektów stadnych, których zarówno mrówki jak i termity są najlepszym przykładem, skutki takich reakcji mogą być kolejnym ważnym bodźcem dla insektów, które je wyprodukowały jak i dla całej koloni. Takie wytworzenie nowego bodźca może być określone jako forma koordynacji działań i interpretowane jako forma komunikacji pośredniej. Na tej podstawie Grass'e zdefiniował stigmery jako środki komunikacji, które różnią się od innych dwoma aspektami:

  1. Fizyczny charakter informacji składanej przez komunikujące się insekty

  2. Miejscowy charakter składanej informacji, która może być udostępniona insektom, które odwiedzają miejsce, z którego informacja wyszła (lub sąsiedztwo tego miejsca).

Tak przedstawiona definicja dokładnie pasuje do sposobu komunikacji mrówek poprzez feromon składany przez nie na ziemi podczas przemieszczania się.

Opisane powyżej zachowanie zostało zaobserwowane eksperymentalnie, jednakże eksperymenty te zostały przeprowadzone w bardzo ograniczonych warunkach. Wysunięta na podstawie wyników teoria jest bardzo spójna, brakuje jednak formalnego dowodu na to, iż odnajdywanie najkrótszej drogi uzyskiwane jest przez feromon. Pojawiły się publikacje inaczej interpretujące wyniki opisywanych wcześniej doświadczeń i przypisujące odnajdywanie najkrótszej drogi przez mrówki wskazówkami wizualnymi.

Dorigo przychylił się jednak do opinii większości i na podstawie obserwacji biologów oraz swoich przemyśleń, zaproponował sposób znajdowania rozwiązania problemów NP-zupełnych wykorzystujący system agentów, zwanych właśnie mrówkami. Idea algorytmu polega na wykorzystaniu kolonii mrówek, z których każda pozostawia ślad na danej krawędzi grafu w postaci substancji chemicznej. Jej ilość, podobnie jak w biologicznej koloni tych owadów, zależy od wartości rozwiązania znalezionego przez mrówkę. Istotne jest to, że ów ślad na danej krawędzi sumuje się od każdej mrówki i ulega parowaniu w czasie dyskretnym. Widać więc, że algorytm ten jest wzorowany na opisywanych wcześniej obserwacjach.

4.1 Opis matematyczny algorytmu

W chwili t=0 wszystkie mrówki znajdują się w bazie, a wszystkie krawędzie (i,j) mają przypisane niewielkie, początkowe wartości (dobrane eksperymentalnie) śladu feromonu τij(0) równe c.

W chwili t każda mrówka wybiera losowo węzeł grafu, do którego udaje się w chwili następnej t+1. W trakcie pojedynczej iteracji algorytmu wyznaczone są przemieszczenia wszystkich m mrówek w czasie przedziału czasu (t, t+1). Jeden cykl pracy algorytmu składa się z n takich iteracji. Na końcu cyklu każda mrówka znajduje rozwiązanie problemu. Wówczas wielkość śladu na krawędziach jest modyfikowana zgodnie z formułą:

τ( t+1 ) = ρ ∗ τij( t ) + Δτ( t ), (1)

gdzie ρ, 0<ρ<1, jest współczynnikiem takim, że (1-ρ) określa stopień „zanikania” śladu w przedziale czasu (t, t+1), zaś:

0x01 graphic
(2)

jest wzorem określającym przyrosty śladu, a Δ τijr (t) jest wielkością kładzionego na krawędzi (i, j) przez mrówkę r w przedziale czasu (t, t+1).

Wartość ta jest obliczana zgodnie z formułą:

0x01 graphic
(3)

Wartość górna uzyskiwana jest w przypadku, gdy mrówka r poruszała się po krawędzi (i, j) w przedziale czasu (t, t+1) gdzie Q jest stałą, a L(r) jest kosztem rozwiązania znalezionego przez mrówkę r. W przeciwnym przypadku uzyskiwana jest wartość dolna.

Można więc zauważyć, że mrówki, które znalazły rozwiązanie o wyższym koszcie, układają mniejszą „ilość” śladu na krawędziach, po których przechodzą. W rezultacie krawędzie te są nie faworyzowane przy kolejnych etapach obliczeniowych.

Podczas poszukiwania rozwiązania, mogą pojawić się dodatkowe ograniczenia, np. mrówka r nie może odwiedzić żadnego wierzchołku grafu więcej niż jeden raz. Aby spełnić taki wymogi, wprowadza się listy tabu(r) oraz listy allowed(r). Pierwsza lista zawiera węzły odwiedzone przez mrówkę r w chwili czasu t, druga zawiera pozostałe dostępne węzły. Przy wyborze węzła, do którego ma przejść w chwili t+1, brane są pod uwagę węzły znajdujące się jedynie na liście allowed(r) danej mrówki. Na końcu każdego cyklu listy tabu(r) są wykorzystywane do pobrania rozwiązań znalezionych przez mrówki. List te są zerowane przed rozpoczęciem każdego cyklu.

Prawdopodobieństwo przejścia mrówki r znajdującej się w węźle i do węzła j w chwili czasu t+1 jest podane wzorem:

0x01 graphic
(4)

gdzie:

τ(i,j) - ilość feromonu na drodze od miasta i do miasta j

η(i,j) - definiowana dowolnie funkcja, w której argumentem jest odległość pomiędzy miastami i oraz j. W opisywanym w późniejszych rozdziałach zaprojektowanym systemie komputerowym zastosowano funkcję f(x) = 1/x, czyli proporcjonalność odwrotną.

Jk(r) - lista dozwolonych przejść dla mrówki r w chwili czasu t+1.

Wzór ten jest jednak modyfikowany w zależności od rozwiązywanego problemu. Pojawiające się w nim parametry α i β pozwalają kontrolować relatywny wpływ wielkości śladu i innych wartości przy wyborze docelowego węzła przemieszczenia.

Pseudo-kod rozpatrywanego algorytmu jest następujący:

: ustaw pozycje startowe algorytmu

: ustaw początkową wartość śladu dla wszystkich krawędzi

τ(i,j) := C dla (i, j) E

for iteracje := 1 do IT

for r := 1 do m

for krok := 1 do n

if ograniczenia nie przekroczone

: określ prawdopodobieństwo P(i,j)

wylosowania krawędzi (i,j)

: losuj następną krawędź dla mrówki r wg

rozkładu P

: modyfikuj listę tabu(r) dla krawędzi

end

end

end

: policz wartość funkcji celu dla rozwiązania określonego przez drogę każdej

mrówki w oparciu o listę tabu( r )

: określ najlepsze rozwiązanie w populacji

: policz przyrost śladu dla Δτkij( t ) dla każdej krawędzi ( i, j ) od

każdej mrówki k

: oblicz parowanie śladu i dodaj aktualne przyrosty

: wyczyść listy tabu (r)

: ustaw mrówki na pozycjach startowych

: zapisz najlepsze rozwiązanie i zapis symboliczny jego grafu w tablicy

best_graf

end

Definicja 2

Algorytm może zawierać także pewne zmienne odpowiedzialne za wizualizacje otrzymanych wyników. Nie jest to jednak część meta-heurystyki tylko już konkretnej realizacji algorytmu.

4.2 Złożoność obliczeniowa algorytmu „System mrówek”

Oszacowanie złożoności obliczeniowej algorytmu, jest problemem stosunkowo łatwym. Załóżmy, że ilość iteracji oznaczona w definicji 2 przez IT jest równa l. Złożoność obliczeniowa jednej iteracji zdeterminowana jest pętlami FOR. Pojedyncza mrówka porusza się w czasie O (nm), więc złożoność całego algorytmu jest równa T(n) = l*n2* m.

gdzie

4.3 Porównanie dwóch rodzajów mrówek

W meta-heurystycznej optymalizacji kolonii mrówek, kolonia sztucznych mrówek współpracuje w celu osiągnięcia rozwiązania problemu trudnej optymalizacji dyskretnej. Współpraca ta jest kluczowym czynnikiem algorytmu. Właściwe rozwiązanie problemu może być wyłonione tylko na drodze poprawnej interakcji i współpracy między agentami.

Sztuczne mrówki mają podwójny charakter. Z jednej strony wzorowane są na zachowaniu kolonii prawdziwych mrówek w odnalezieniu najlepszego rozwiązania. Z drugiej zaś wzbogacone zostały pewnymi umiejętnościami, których nie zaobserwujemy w ich naturalnych odpowiedników. Podejście takie wydaje się rozsądne ponieważ sprawia, że są bardziej skuteczne i sprawne w rozwiązywaniu problemów.

Postaram się teraz pokazać podobieństwa i różnice pomiędzy sztucznymi a prawdziwymi mrówkami. Do podobieństw należy zaliczyć:

Oprócz wymienionych powyżej podobieństw istnieją także czynniki różniące prawdziwe mrówki od sztucznych. Zaliczamy do nich:

4.4 Optymalizacja badanego algorytmu

Po okresie wstępnego zafascynowania możliwościami algorytmu mrówkowego stwierdzono, że algorytm „System Mrówek” może być raczej stosowany tylko jako wstępne poszukiwanie rozwiązania. badanego problemu. Gdy potrzebna jest duża efektywność przy rozwiązywaniu problemów kombinatorycznej optymalizacji NP- zupełnej algorytm ten jest raczej marny w porównaniu z innymi podejściami. Zaproponowane zastały pewne rozszerzenia i ulepszenia, mające na celu poprawy efektywności działania algorytmu. W tym punkcie zostaną przedstawione przykładowe rozszerzenia.

4.4.1 System Koloni Mrówek (ang. Ant Colony System - ACS)

Modyfikacja ta, zastała zaproponowana przez samych twórców algorytmu. Sami autorzy stwierdzili, że „System Koloni Mrówek” jest w pewnym sensie algorytmem prostszym i z biegiem czasu stał się przez nich preferowanym. Różni się on od algorytmu opisywanego wcześniej trzema głównymi aspektami:

Poniżej przedstawiamy bardziej szczegółowo te modyfikacje.

Konstrukcja trasy:

W opisywanej modyfikacji, mrówki wybierają kolejne wierzchołki grafu wykorzystując zasadę pseudo-przypadkowo-proporcjonalnego wyboru (ang. pseudo-random-proportional action choice rule). Polega ona na tym, że gdy mrówka k znajduje się w wierzchołku i musi losowo wybrać jedna z dwóch możliwości:

τil(t) * [ηil]β (5)

jest maksymalne, tzn. z prawdopodobieństwem q0 zostaje wykonany najlepszy ruch wskazany przez tory feromonu i heurystyczną informację (wykorzystanie wyuczonej wiedzy)

Lokalna aktualizacja feromonu

W opisywanej modyfikacji mrówki korzystają dodatkowo z zasady lokalnej aktualizacji feromonu, którą stosują zaraz po przejściu łuku w czasie konstrukcji trasy. Opisuje ją wzór:

τij = (1 - ξ)*τij + τ0*ξ (6)

gdzie: ξ, 0 < ξ < 1 i τ0 są dwoma parametrami.

Zasada lokalnej aktualizacji ma za zadanie sprawić, aby wybrany łuk stał się mniej pożądany dla kolejnej mrówki. Tym samym prawdopodobieństwo eksploatacji jeszcze nie odwiedzanych łuków wzrasta.

4.4.2 Max-Min System Mrówek (ang. Max-Min Ant System - MMAS)

Rozwiązanie w tej modyfikacji uzyskiwane jest tak samo jak w przypadku bez modyfikacji. Wykorzystywana jest także pseudo-przypadkowo-proporcjonalna zasada wyboru, opisywana w Systemie Koloni Mrówek. Główne dodatkowe modyfikacje są następujące:

Aktualizacja szlaku feromonu

Po znalezieniu rozwiązania przez wszystkie mrówki, szlaki feromonu aktualizowane są według wzoru:

τij(t + 1) = (1 - ξ) * τij(t) + ξ * Δτijbest (7)

gdzie: Δτijbest = 1/Lbest.

Mrówka, która złoży feromon, może znaleźć rozwiązanie najlepsze w danej iteracji (ang. iteration-best solution Tib) lub globalnie najlepsze (ang. global-best solution Tgb). Zatem, jeżeli konkretne łuki są często wykorzystywane w najlepszych rozwiązaniach, otrzymują one największą dawkę feromonu. Wyniki eksperymentów przeprowadzonych przez twórców tej modyfikacji pokazały, że najlepsze wyniki uzyskiwane są poprzez stopniowy wzrost częstotliwości wyboru Tgb dla aktualizacji szlaku.

Ograniczenia szlaku

W przypadku MIN-MAX narzucone są dolne i górne ograniczenie na możliwe nasycenie feromonu w celu uniknięcia stagnacji poszukiwań. Szczególnie narzucone ograniczenia odnoszą skutek w pośrednim ograniczeniu prawdopodobieństwa pij wyboru wierzchołka j kiedy mrówka jest w wierzchołku i do przedziału [pmin, pmax] gdzie 0 < pmin < pij < pmax < 1. Tylko w przypadku, gdy mrówka ma jedną możliwość wyboru następnego wierzchołka pmin = pmax. Wyniki eksperymentalne sugerują, że dolne ograniczenia prawdopodobieństwa wyboru szlaku wykorzystywane w MIN-MAX są istotniejszymi, ponieważ maksymalna moc szlaku na łukach jest na dłuższą metę ograniczona z powodu ulatniania się feromonu.

Inicjalizacja szlaku

Szlaki feromonu w MIN-MAX są inicjalizowane od wyższych wartości. Dzięki temu poszukiwania najlepszego rozwiązania na początku działania algorytmu wzrasta, ponieważ różnice względne pomiędzy mocami szlaku feromonu są mniej wyraźne.

4.4.3 System Mrówek wykorzystujący rangi (ang. Rank-Based Version of Ant System - ASrank)

Kolejnym udoskonaleniem algorytmu „System Mrówek” jest wersja oparta na rangach (ASrank). W tej modyfikacji korzystamy zawsze z globalnie najlepszego rozwiązania w celu aktualizacji śladów feromonu. Dodatkowo tylko ograniczona liczba mrówek każdej iteracji może dodać feromon. W tym celu mrówki są sortowane według znalezionych rozwiązań (L1(t)<L2(t)<...<Lm(t)), a ilość mrówek, które mogą złożyć feromon jest odmierzana według rangi r mrówki. Tylko (w - 1) najlepszych mrówek każdego powtórzenia może złożyć feromon. Najlepsze globalnie rozwiązanie, dające najsilniejsze sprzężenie zwrotne osiąga wagę w. Najlepsza mrówka r obecnej iteracji przyczynia się do aktualizacji feromonu z wagą nadaną przez wzór:

max {0, r-w} (8)

Zatem zmieniona zasada aktualizacji feromonu wyglada następująco:

0x01 graphic
(9)

gdzie:

0x01 graphic
i 0x01 graphic

Twórcy tej modyfikacji porównywali swój algorytm z algorytmami genetycznymi oraz z algorytmem symulowanego wyżarzania Okazało się, że algorytm oparty na systemie rang dawały dla większych problemów lepsze wyniki.

4.4.4 Podsumowanie

Wszystkie proponowane opcje algorytmów mrówkowych mają wiele cech wspólnych. Algorytm w pierwszej formie używany jest głównie jako pierwsze podejście do problemu NP-zupełnego i rozwiązanie znalezione przez niego jest raczej marne w porównaniu z innymi podejściami. Zaproponowano zatem kilka modyfikacji algorytmów dla poprawy jego działania.

Główną cechą proponowanych udoskonaleń jest to, że wykorzystują one do dalszych poszukiwań najlepsze rozwiązania znalezione podczas wcześniejszych poszukiwań. Osiąga się to, poprzez nadanie większe wagi lepszym rozwiązaniom przy aktualizacji feromonu i często dopuszcza się do tworzenia dodatkowego śladu feromonu na łukach globalnie najlepszego rozwiązania.

Naturalnie poprzez silniejsze wykorzystywanie najlepszych rozwiązań, łuki znajdujące się na najlepszych trasach otrzymują dodatkowe, silne sprzężenie zwrotne, a zatem są wybierane z większym prawdopodobieństwem w kolejnych iteracjach algorytmu. Powstaje jednak problem, że wraz z silniejszą eksploatacją najlepszych rozwiązań, doprowadzimy do stagnacji algorytmu, tzn. takiej sytuacji, w której wszystkie mrówki podążają jedną trasą. Zatem niektóre modyfikacje, w szczególności ACS i MMAS, wprowadzają dodatkowe cechy w celu uniknięcia stagnacji.

Wszystkie opisane modyfikacje algorytmu wykazują znacznie lepsze działanie przy rozwiązywaniu problemów optymalizacji kombinatorycznej i wykazują silniejszą eksploatacje najlepszych rozwiązań znalezionych przez mrówki. Rozsądnym będzie więc stwierdzenie, że koncentracja poszukiwań wokół najlepszych rozwiązań znalezionych w czasie poszukiwań jest kluczem do udoskonalenia działania algorytmu.

4.5 Zastosowanie algorytmów mrówkowych dla rozwiązania problemu komiwojażera

W przypadku problemu komiwojażera, każda pojedyncza mrówka konstruuje rozwiązanie podróżując między poszczególnymi miastami. W czasie inicjalizacji umieszczamy wszystkie mrówki w mieście będącym miastem startowym algorytmu, następnie modyfikujemy algorytm w ten sposób, aby mrówki po przejściu wszystkich miast, odwiedziły każde miasto tylko jeden raz a następnie powróciły do punktu startowego algorytmu.

W trakcie implementacji algorytmu należy zwrócić uwagę na poprawną obsługę list tabu(r) oraz allowed(r). Są one niezbędne dla spełnienia warunku pobytu komiwojażera w każdym mieście tylko jeden raz.

5. Opis systemu komputerowego

5.1 Dane techniczne

System komputerowy to aplikacja mogąca pracować pod kontrolą systemów Windows 95/98/NT/2000. Minimalne parametry komputera na którym może pracować system to:

5.2 Dane wejściowe

Pierwszym krokiem niezbędnym do rozpoczęcia pracy aplikacji testowej jest wprowadzenie danych wejściowych zawierających macierz odległości pomiędzy poszczególnymi miastami. Można to zrobić na dwa sposoby:

5.2.1 Wczytywanie danych z pliku

Plik z danymi jest plikiem tekstowym o rozszerzeniu ATS. Składa się on z dwóch części:

NAME: ftv33

TYPE: ATSP

COMMENT: Asymmetric TSP (Fischetti)

DIMENSION: 34

EDGE_WEIGHT_TYPE: EXPLICIT

EDGE_WEIGHT_FORMAT: FULL_MATRIX

Plik z danymi można odczytać za pomocą opcji „Open” dostępnej w pasku narzędzi lub rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia się standardowy dla wszystkich wersji dedykowanego systemu operacyjnego okienko dialogowe pozwalające na wybranie pliku (zobacz rys. 8).

0x08 graphic

Rys. 8

Wybrany plik zostaje wczytany do pamięci operacyjnej komputera. W wyniku tego aktywne stają się opcję aplikacji służące do inicjalizacji obliczeń, opisane w dalszej części rozdziału.

Do wersji instalacyjnej systemu dostarczone są pliki zawierające przykładowe zagadnienia ATSP zaczerpnięte z biblioteki TSPLIB. Są to zagadnienia ATSP, dla których znane jest rozwiązanie optymalne. Dziki temu, podczas testowania systemu, można porównać znalezione przez aplikacje rozwiązanie z rozwiązaniem optymalnym.

5.2.2 Tworzenie nowego problemu.

0x08 graphic
System komputerowy pozwala także na stworzenie nowego problemu poprzez generacje macierzy odległości pomiędzy miastami. Możliwe jest poprzez opcje „New” dostępną w pasku narzędzi lub rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia się następujące okienko dialogowe:

Rys. 9

Pozwala ono na wybranie sposobu wprowadzania danych, tzn.:

Po wybraniu każdego rodzaju wprowadzania danych pojawia się okienko dialogowe, służące do weryfikacji lub edytowania dych:

0x08 graphic

Rys. 10

Okienko dialogowe widoczne na rysunku 10 pozwala w łatwy sposób dokonywać zmian w macierzy opisującej odległości pomiędzy miastami. Weryfikacja taka może odbywać się nie tylko podczas tworzenia problemu, lecz także w czasie pracy aplikacji, gdy macierz danych wejściowych znajduje się w pamięci operacyjnej komputera. Można to uzyskać poprzez opcję „Data Review” dostępnej w pasku narzędzi oraz rozwijalnym menu aplikacji.

5.2.3 Zapis danych do pliku

Nowowprowadzone lub zmodyfikowane dane wejściowe mogą być zapisane do pliku. W przypadku modyfikacji danych, zapis danych do istniejącego już pliku uzyskujemy poprzez opcje „Save” dostępną w pasku narzędzi oraz w rozwijalnym menu aplikacji. Aktywacja tej opcji powoduje nadpisanie pliku ze zmodyfikowaną macierzą odległości.

0x08 graphic
Zapis danych do nowego pliku uzyskujemy poprzez opcje „Save as...” dostępną w rozwijalnym menu aplikacji. Po aktywacji tej opcji pojawia się standardowy dla wszystkich wersji dedykowanego systemu operacyjnego okienko dialogowe pozwalające na wprowadzenia nazwy pliku , pod którą mają zapisane być dane (zobacz rys. 11).

Rys. 11

Zapis danych do pliku nie powoduje ich kasacji z pamięci operacyjnej komputera, w dalszym ciągu możliwa jest praca aplikacji na zapisanych wcześniej danych.

5.3 Ustawienie parametrów procesu obliczeń

0x08 graphic
System komputerowy posiada implementacje algorytmu „System Mrówek” oraz jego modyfikacji zaproponowanej przez Dorigo, tzn. „System Koloni Mrówek”. Przed rozpoczęciem procesu obliczeń należy wybrać interesującą nas opcję algorytmu oraz wprowadzić wartości parametrów występujących we wzorach matematycznych, na których bazują algorytmy. Służy do tego celu okienko dialogowe dostępne poprzez opcję „Settings” dostępną w pasku narzędzi oraz rozwijalnym menu aplikacji.

Rys. 12

Oprócz opcji algorytmu, która będzie wykonywana w procesie obliczeń w okienku dialogowym pokazanym na rysunku oznaczonym numerem 12 możemy określić następujące wartości:

Wszystkie wymienione wcześniej wartości mają znaczący wpływ na znalezione przez system rozwiązanie, należy wiec dobierać je dla każdego rozpatrywanego problemu. Złe wartości parametrów mogą powodować niepoprawną pracę algorytmu.

5.4 Proces obliczeń

Proces obliczeń aktywowany jest poprzez opcje „Run” dostępną w pasku narzędzi oraz w rozwijalnym menu aplikacji. Aktywacja tej opcji powoduje zablokowanie innych opcji, których użycie podczas procesu obliczeń mogłoby być krytyczne dla poprawnej pracy algorytmu.

Długość procesu obliczeń jest zależna od następujących czynników

Widać więc, że może być on względnie długi, dla różnych ustawień aplikacji i danych wejściowych. Dla ilustracji postępów pracy algorytmu, oraz czasu jaki pozostał do zakończenia pracy, w głównym oknie aplikacji umieszczone zastały dwa paski postępu (zobacz rysunek 13)

0x08 graphic
Rys. 13

Opisywane wcześniej paski postępu widoczne są w prawym rogu głównego okna aplikacji. Pierwszy nazwany „Iteration Progress” informuje o ilości wykonanych przez algorytm iteracji, drugi nazwany „Ant Progress” informuje o ilości mrówek, które poszukiwały już rozwiązania podczas każdej iteracji.

5.5 Wyniki obliczeń

0x08 graphic
Po zakończeniu procesu obliczeń samoczynnie wyświetlane jest okienko dialogowe pokazujące szczegółowo najlepsze znalezione rozwiązanie. Okienko to jest dostępne także w opcji „Result” dostępnej w pasku narzędzi oraz w rozwijalnym menu aplikacji.

Rys. 14

W opisywanym okienku dialogowym możemy zobaczyć wartość najlepszego rozwiązania znalezionego przez aplikacje w procesie obliczeń oraz dokładny opis drogi.

Wyniki obliczeń widoczne są także w głównym oknie aplikacji. Znajdują się tam dwa wykresy wizualizujące:

Wykresy te pojawiają się także na zakończenie procesu obliczeń.

5.6 Pliki pomocy

Zaimplementowany system komputerowy posiada także rozwinięty system plików pomocy. Zaopatrzony jest w pomoc kontekstową mogącą być pomocną podczas pracy z aplikacją przez użytkowników nie zapoznanych z treścią części pisemnej pracy. Pomoc kontekstowa uaktywniana jest za pomocą klawiatury komputerowej przyciskiem F1.

5.7 Opis implementacji systemu.

System komputerowy został zaimplementowany przy użyciu środowiska programistycznego Visual C++, z wykorzystaniem biblioteki MFC (Microsoft Foundation Class ). Jest to system dwu-wątkowy, w którym wszystkie obliczenia odbywają się w oddzielnym wątku, dla uniknięcia blokady całego systemu podczas procesu obliczeń.

Klasy zaimplementowane podczas realizacji systemu można podzielić na następujące grupy:

5.7.1 Główne klasy aplikacji

5.7.1.1 Klasa CAntApp

Nazwa klasy

CAntApp

Klasa bazowa

CWinApp

Krótki opis

Implementacja obiektu aplikacji. Zawiera wszystkie obiekty i zmienne globalne, do których jest dostęp we wszystkich wątkach systemu.

Uwagi

Wartości zmiennych, które zawierają wartości parametrów obliczeń zapisywane są w rejestrze systemowym i odczytywane przy ponownym uruchomieniu aplikacji.

Tabela 1

Diagram dziedziczenia dla klasy CAntApp.

0x01 graphic

Diagram współpracy dla klasy CAntApp

0x01 graphic

Spis metod oraz zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

5.7.1.2 Klasa CAntDoc

Nazwa klasy

CAntDoc

Klasa bazowa

CDocument

Krótki opis

Implementacja obiektu dokumentu, niezbędnego do realizacji architektury Widok-Dokument, preferowanej w MFC.

Uwagi

Brak

Tabela 2

Diagram dziedziczenia dla CAntDoc

0x01 graphic

Diagram współpracy dla CAntDoc:

0x01 graphic

Spis metod klasy

  1. Metody Publiczne

  1. Metody Chronione

5.7.1.3 Klasa CAntView

Nazwa klasy

CantView

Klasa bazowa

CformView

Krótki opis

Implementacja obiektu widoku, niezbędnego do realizacji architektury Widok-Dokument, preferowanej w MFC.

Uwagi

Brak

Tabela 3

Diagram dziedziczenia dla klasy CAntView

0x01 graphic

Diagram współpracy dla klasy CAntView:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

  1. Metody Prywatne

5.7.1.4 Klasa CAntFrame

Nazwa klasy

CAntFrame

Klasa bazowa

CFrameWnd

Krótki opis

Implementacja obiektu szkieletu okna, występującego w aplikacji typu SDI (Single document interface).Zawiera obsługę wszystkich wiadomości przekazywanych przez wątek roboczy do głównego wątku aplikacji..

Uwagi

Brak

Tabela 4

Diagram dziedziczenia dla klasy CAntFrame

0x01 graphic

Diagram współpracy dla klasy CAntFrame:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

  1. Atrybuty Chronione

5.7.1.4 Klasa CAntThread

Nazwa klasy

CAntThread

Klasa bazowa

CWinThread

Krótki opis

Implementacja wątku roboczego aplikacji. Posiada zaimplementowane dwa algorytmy obliczeniowe, tzn. „Ants System” oraz „Ants Colony System”.

Uwagi

Praca aplikacji nie może być zakończona podczas pracy obiektu tej klasy. Grozi to pozostawieniem przez aplikację nie zwolnionej pamięci operacyjnej.

Tabela 5

Diagram dziedziczenia dla klasy CAntThread

0x01 graphic

Diagram współpracy dla klasy CAntThread:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Metody Chronione

  1. Atrybuty Chronione

  1. Atrybuty Prywatne

5.7.2 Klasy implementacji okienek dialogowych

5.7.2.1 Klasa CAboutDlg

Nazwa klasy

CAboutDlg

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu zawierającego krótki opis aplikacji.

Uwagi

Brak

Tabela 6

Diagram dziedziczenia dla klasy CAboutDlg

0x01 graphic

Diagram współpracy dla klasy CAboutDlg:

0x01 graphic

Spis metod klasy

  1. Metody Publiczne

  1. Metody Chronione

5.7.2.2 Klasa CAntDataReviewDlg

Nazwa klasy

CAntDataReviewDlg

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu pozwalającego na weryfikacje macierzy odległości wprowadzonej jako dane wejściowe do aplikacji.

Uwagi

Brak

Tabela 7

Diagram dziedziczenia dla klasy CAntDataReviewDlg

0x01 graphic

Diagram współpracy dla klasy CAntDataReviewDlg:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

5.7.2.3 Klasa CAntGridDlg

Nazwa klasy

CAntGridDlg

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu pozwalającego wprowadzenie macierzy odległości podczas tworzenia nowego problemu.

Uwagi

Brak

Tabela 8

Diagram dziedziczenia dla klasy CAntGridDlg

0x01 graphic

Diagram współpracy dla klasy CAntGridDlg:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

5.7.2.3 Klasa CAntNewProblem

Nazwa klasy

CAntNewProblem

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu pozwalającego na wybranie rodzaju wprowadzania danych oraz rozmiaru nowego problemu.

Uwagi

Brak

Tabela 9

Diagram dziedziczenia dla klasy CAntNewProblem

0x01 graphic

Diagram współpracy dla klasy CAntNewProblem:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

  1. Metody Prywatne

5.7.2.4 Klasa CAntResultDlg

Nazwa klasy

CAntResultDlg

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu pozwalającego na obejrzenie szczegółów dotyczących najlepszego rozwiązania znalezionego podczas procesu obliczeń.

Uwagi

Brak

Tabela 10

Diagram dziedziczenia dla klasy CAntResultDlg

0x01 graphic

Diagram współpracy dla klasy CAntResultDlg:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

  1. Metody Prywatne

5.7.2.5 Klasa CAntSettingsDlg

Nazwa klasy

CAntSettingsDlg

Klasa bazowa

CDialog

Krótki opis

Implementacja dialogu pozwalającego na ustawienie parametrów obliczeń.

Uwagi

Brak

Tabela 11

Diagram dziedziczenia dla klasy CAntSettingsDlg

0x01 graphic

Diagram współpracy dla klasy CAntSettingsDlg:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

5.7.3 Klasy pomocnicze

5.7.3.1 Klasa CAntChart

Nazwa klasy

CAntChart

Klasa bazowa

CStatic

Krótki opis

Implementacja klasy odpowiedzialnej za wykresy wyświetlane w głównym oknie aplikacji.

Uwagi

Brak

Tabela 12

Diagram dziedziczenia dla klasy CAntChart

0x01 graphic

Diagram współpracy dla klasy CAntChart:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Publiczne

  1. Metody Chronione

  1. Atrybuty Chronione

  1. Atrybuty Prywatne

5.7.3.2 Klasa CAntElement

Nazwa klasy

CAntElement

Klasa bazowa

CObject

Krótki opis

Klasa odpowiedzialna za przetrzymywanie wartości rozwiązań znalezionych w poszczególnych iteracjach.

Uwagi

Konieczność implementacji tej klasy wynikało z użycia klas kontenerów zaimplementowanych w MFC.

Tabela 13

Diagram dziedziczenia dla klasy CAntElement

0x01 graphic

Diagram współpracy dla klasy CAntElement:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Prywatne

5.7.3.3 Klasa CAntFileManager

Nazwa klasy

CAntFileManager

Klasa bazowa

Krótki opis

Klasa odpowiedzialna za operacje na plikach z danymi, tzn. zapis pliku na dysk i odczyt pliku z dysku.

Uwagi

Brak

Tabela 14

  1. Metody Publiczne

5.7.3.4 Klasa CAntGrid

Nazwa klasy

CAntGrid

Klasa bazowa

CWnd

Krótki opis

Klasa odpowiedzialna za obsługę siatki użytej do wprowadzania i weryfikacji danych wejściowych.

Uwagi

Brak

Tabela 15

Diagram dziedziczenia dla klasy CAntGrid

0x01 graphic

Diagram współpracy dla klasy CAntGrid:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Metody Chronione

5.7.3.5 Klasa CAntRandom

Nazwa klasy

CAntRandom

Klasa bazowa

CObject

Krótki opis

Implementacja generatora liczb pseudo-losowych. Obiekty tej klasy używane są podczas generacji nowych problemów oraz podczas wyboru drogi w czasie procesu obliczeń.

Uwagi

Ustawienie punktu startowego generatora odbywa się w konstruktorze, ale może być zmieniane podczas życia obiektu.

Tabela 16

Diagram dziedziczenia dla klasy CAntRandom

0x01 graphic

Diagram współpracy dla klasy CAntRandom:

0x01 graphic

Spis metod i zmiennych klasy

  1. Metody Publiczne

  1. Atrybuty Chronione

Wersja instalacyjna systemu komputerowego zawarta jest na krążku CD-R dołączonym do tekstu pracy. Znajduje się na nim plik wykonywalny o nazwie AntSetup.exe, uruchomienie którego powoduje rozpoczęcie procesu instalacji. Po pomyślnym zakończeniu procesu instalacji aplikacja gotowa jest do użytku.

6. Przykłady i wnioski

System komputerowy został wykonany zgodnie z projektem przedstawionym w poprzednim rozdziale, zaimplementowany w języku programowania C++, przy użyciu klas MFC. Testy systemy przeprowadzone zostały na komputerze z procesorem Pentium 166 MHz, 32 MB pamięci operacyjnej RAM pod kontrolą systemu operacyjnego Windows 98.

Testowanie systemu zostało ukierunkowane na porównanie wyników uzyskiwanych przez zaimplementowane algorytmy z optymalnymi rozwiązaniami znanych problemów. Wykorzystano do tego przykładowe zagadnienia ATSP zaczerpnięte z biblioteki TSPLIB. Wyniki tych testów przedstawione są w tabeli.

Nazwa problemu

AS

ACS

Najlepsze znane rozwiazanie

ft70

39831

38781

38673

kro124p

38361

36241

36230

p43

2840

2810

2810

ry48p

15343

14422

14422

Tabela 17

Na postawie danych zawartych w tabeli 17, można stwierdzić, że uzyskane podczas testów najlepsze rozwiązania są bardzo zbliżone do najlepszych znanych rozwiązań problemów, w niektórych przypadkach są nawet równe najlepszym rozwiązaniom.

Naturalnym wydaje się spostrzeżenie, że główny wpływ na wyniki obliczeń mają dwa czynniki, tzn.

0x08 graphic
Wpływ tych czynników na wartość znalezionego rozwiązania przedstawia wykres:

Wykres 2

0x08 graphic
Na podstawie wykresu wyraźnie widać, że wraz ze wzrostem wartości tych parametrów wzrasta efektywność tych parametrów. Niestety radykalnie wzrasta czas pracy algorytmu.

Wykres 3

Należy jednak podkreślić, że system operacyjny pod który dedykowana jest aplikacja nie pozwala na dokładne badanie zależności czasowych.

Innymi czynnikami mającymi wpływ na efektywność algorytmu są wartości parametrów, które można zmieniać za pomocą okienka dialogowego „Settings”. Nie potrafiłem jednak znaleźć ogólnych zasad, według których można ustalać najlepsze wartości tych parametrów. Podczas testowania aplikacji, dobierane one były eksperymentalnie w zależności od problemu. Według moich eksperymentów, najlepsze wyniki otrzymywane były z następującymi wartościami parametrów:

0x08 graphic
Aplikacja pozwala na badanie wpływu tych czynników na wartości rozwiązań znajdywane przez algorytm. Jako przykład zamieszczamy wpływ parametru α.

Wykres 4

Pragnę jednak podkreślić, że w przypadku wybrania innego problemu, wykres ten mógłby wyglądać inaczej i że nie można jednoznacznie określić najlepszych wartości opisywanych parametrów.

Jednak na podstawie wszystkich eksperymentów, jestem w stanie stwierdzić, że efektywność metaheurystyki „Ant Colony System” jest duża, pozwalająca myśleć o zastosowaniu metaheurystyki w opracowaniu rozwiązań do problemów życia codziennego i należy ją propagować. Być może praca ta będzie miała czynny udział w propagowaniu tej metaheurystyki.

7. Literatura

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. Wprowadzenie do algorytmów. Warszawa 1997, 1998.

  2. Bogusław Filipowicz. Badania operacyjne. Wybrane metody obliczeniowe i algorytmy. Część 1. Kraków 1997

  3. Antoni Kościeliski. Teoria obliczeń. Wykłady z metematycznych podstaw informatyki. Wydawnictwo Uniwersytetu Wrocławskiego 1997.

  4. Aleksej Anisimow. Hipertekstowy słownik informatyczny. Praca magisterska napisana pod kierunkiem dr inż. Tomasza Bilskiego.

  5. Paweł Martynowicz. Badania operacyjne - referat, AGH Kraków, Wydział EAIiE.

  6. Mirosław Jabłoński. Zagadnienie podgrafu gęstego w grafie zwykłym. Projekt z przedmiotu Automatyzacja Procesów Dyskretnych pod przewodnictwem prof. dr hab. Inż. Konrada Wali, AGH Kraków, Wydział EAIiE.

  7. Vittorio Maniezzo, Alberto Colornii. The Ant System Applied to the Quadratic Assignment Problem.

  8. Zbigniew J. Czech, Ewa Marzec. Heuristic Algorythms for Solving the Set-partitioning Problem.

  9. Urszula Boryczka, MARIUSZ Boryczka, Daniel Kuna. Generative Policies in the Job-shop Scheduling Problem.

  10. Marco Dorigo, Vittorio Maniezzo, Alberto Colorni. The Ant System: Optimization by a colony of cooperating agents.

  11. Marco Dorigo, Luca Maria Gambardella. Ant colonies for the traveling salesman problem.

  12. Marco Dorigo, Luca Maria Gambardella. Ant-Q: A Reinforcement Learning approach tothe traveling salesman problem.

  13. Marco Dorigo, Gianni Di Caro, Luca Maria Gambardella. Ant Algorithms for Discrete Optimization.

  14. Luca Maria Gambardella, Marco Dorigo. Has-Sop: Hybrid Ant System for The Sequential Ordering Problem.

  15. Luca Maria Gambardella, Marco Dorigo. An Ant Colony System Hybridized with a New Local Search for the Sequential Ordering Problem

  16. Luca Maria Gambardella, Marco Dorigo. Solving Symmetric and Asymmetric TSPs by Ant Colonies.

  17. Thomas Stutzle, Marco Dorigo. ACO Algorithms for the Traveling Salesman Problem.

T. H. Cormen, Ch. E. Leiserson, R. L. Rivest, „Wprowadzenie do algorytmów”, Warszawa 1997, 1998

A. Kościeliski, „Teoria obliczeń. Wybrane metody obliczeniowe i algorytmy”, Kraków 1997

A. Anisimow, „Hipertekstowy słownik informatyczny”, Praca magisterska napisana pod kierunkiem dr inż. T. Bileckiego.

B. Filipowicz, „Badania operacyjne. Wybrane metody obliczeniowe i algorytmy”, Kraków 1997.

P. Martynowicz, „Badania operacyjne- referat”, AGH Kraków.

M. Dorigo, V. Maniezzo, A. Colorni, „The Ant System: Optimization by a colony of cooperating agents”.

M. Jabłoński, „Zagadnienie podgrafu gęstego w grafie zwykłym”, projekt, AGH Kraków.

M. Dorgio, G. Di Carlo, L. M. Gambardella, „Ant Algorithms for Discrete Optimization”

M. Dorigo, V. Maniezzo, A. Colorni, „The Ant System: Optimization by a colony of cooperating agents”.

Informatyka w Sterowaniu i Zarządzaniu 0x01 graphic

3

Informatyka w Sterowaniu i Zarządzaniu 0x01 graphic

3

2

6

5

4

1

2

3

6

5

4

1

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
Komputerowy system do?dań?ektywności metaheurystyki ''System Mrówek'' w zakresie optymalizacj
Optymalizacja pracy Windows, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr II
Komputerowe systemy zarządzania produkcją
format[1], Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr I
KOMPUTEROWE SYSTEMY STEROWANIA Nieznany
Program Laboratorium Komputerowe systemy pomiarowe Gawędzki KSP
Komputerowe systemy automatyki przemysłowej
ksa4, Edukacja, studia, Semestr VIII, Komputerowe Systemy Automatyki, KSA-lab
Dyski twarde-woluminy, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr II
raczynski 2, Edukacja, studia, Semestr VII, Komputerowe Systemy Automatyki
Komputerowy system rejestracji?nych pomiarowych PC Link Plus
EEG komputerowy system
Etapy uruchamiania komputera, systemu
INF II stopien Grafika komputerowa i systemy multimedialne
Normy prawne dotyczące rozpowszechniania programów komputerowych, 1.Systemy operacyjne i sieci kompu
Labolatorium komputerowych systemów automatyki, Systemy wizualizacji i sterowania, Politechnika Lube
Labolatorium komputerowych systemów automatyki, Systemy wizualizacji i sterowania, Politechnika Lube
Komputerowy system DAMB analizy dynamicznej budynków wysokich usztywnionych konstrukcjami ścianowymi
Architektura komputerów i systemy operacyjne

więcej podobnych podstron