Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation) Jest to technika probabilistyczna rozwiązywania problemów obliczeniowych, które mogą zostać sprowadzone do problemu znalezienie najkrótszych ścieżek w grafie. W rzeczywistym świecie mrówki wędrują losowo (początkowo) i po znalezieniu pożywienia wracają do mrowiska, wydzielając po drodze feromony. Jeżeli inna mrówka znajdzie taką ścieżkę z feromonami, porzuci losową wędrówkę i pójdzie za tą ścieżką, a gdy znajdzie pożywienie, również tą ścieżką wróci. Z czasem ścieżka feromonowa paruje. Im dłużej mrówka idzie drogą do pożywienia i z powrotem, tym więcej feromonów paruje. Gdy ścieżka jest krótka, gęstość feromonów jest wysoka (feromony nie zdążą wyparować, zanim mrówka zacznie wracać). Dzięki parowaniu feromonów można uniknąć zbieżności do rozwiązania lokalnego.gdyby nie było parowania feromonów, ścieżka wybrana przez pierwszą mrówkę, byłaby najbardziej atrakcyjną dla idących za nią mrówek. Wtedy przestrzeń rozwiązań zostałaby zawężona. Tak więc, gdy jedna mrówka znajdzie dobrą (krótką ) ścieżkę, inne mrówki będą za nią podążać, a następnie wracać tą ścieżką, co może doprowadzić to wędrówki wszystkich mrówek tą samą ścieżką. Algorytmy mrówkowe naśladowanie postępowania mrówek. Algorytm ten można zastosować do rozwiązywania problemu komiwojażera. Ma on przewagę nad symulowanym, wyżarzaniem w sytuacji, gdy graf zmienia się dynamicznie. Algorytm mrówkowy będzie się dostosowywał do zmian. (network routing) W AS sztuczne mrówki znajdują rozwiązanie (drogę) poruszając się po grafie problemu z jednego miasta do drugiego. Algorytm uruchamia t max iteracji. Podczas każdej z nich m mrówek szuka dróg wykonując n kroków, w których podejmowana jest probabilistyczna decyzja. W praktyce, kiedy w węźle i mrówka wybiera jako węzeł docelowy węzeł j, to krawędź (i,j) jest dodawana do aktualnie budowanej drogi. Te kroki są powtarzane, aż mrówka skończy budować swoją drogę. 1
Wymyślono trzy rodzaje algorytmu AS różniące się sposobem, w jaki uaktualniany jest szlak feromonowy. Te algorytmy to: gęstościowy (ant-density), w którym mrówki zostawiają stałą ilość feromonu podczas budowania drogi, ilościowy (ant-quantity), w którym mrówki zostawiają ilość feromonu odwrotnie proporcjonalną do długości wybranej krawędzi podczas budowania drogi, cykliczny (ant-cycle), w którym mrówki zostawiają feromon dopiero w momencie, gdy zbudują całą drogę. Eksperymenty wykazały, że wydajność algorytmu cyklicznego była znacznie wyższa, niż pozostałych dwóch, więc przestaniemy się nimi zajmować, a określenie AS będziemy odnosić do algorytmu cyklicznego. Problem komiwojażera: Mamy graf pełny. Znamy długość każdej z krawędzi d(i; j). Pseudokod: while(not warunek_końca) { generujrozwiązanie()//znajdz drogi dla m mrówek UaktualnijWartościFeromonów() } Mrówki poruszając się między miastami zostawiają ślad feromonowy o natężeniu τ(i, j) Natężenie feromonu na każdej z krawędzi będzie zmieniać się w trakcie rozwiązywania problemu (w miarę jak kolonia poznawać będzie otoczenie i wybierać najlepszą trasę.) Mrówki kierują się nie tylko feromonem ale preferują również krótkie odcinki podróży Odległości d oraz natężenie feromonu τ definiują funkcję preferencji: t(i; j) = τ (i; j)/d(i; j) β 2
Dla pojedynczej mrówki znajdującej się w mieście i wybieramy miasto j zgodnie z rozkładem prawdopodobieństwa danym wzorem: t( i, j) P( j) = t( i, k) gdzie N i nieodwiedzeni sąsiedzi miasta i k Ni Zmiany ilości feromonów: τ i,j = ρτ i,j + Δτ i,j - ρ wspólczynnik parowania (ρ<1) - Δτ i,j ilość zdeponowanego feromonu dana wzorem gdzie L k jest długością drogi k-tej mrówki (im krótsza droga, tym większa ilość feromonu zostawiona na jej krawędziach) Inne sposoby zmian natężenia feromonów OZNACZANIA GLOBALNE Zmieniamy natężenie tylko dla najkrótszej z tras (tylko dla mrówki, która znalazła najkrótszą trasę) τ i,j = ρτ i,j + αδτ i, gdzie α ufność z jaką mrówki podchodzą do najkrótszej trasy. Przyjmijmy α=0.1 OZNACZANIE LOKALNE Oznaczanie lokalne ma zniechęcić mrówkę do sprawdzania krawędzi, którą w tym samym obiegu sprawdziła inna mrówka. Oznaczanie wykonywane natychmiast po przejściu z miasta i do miasta j τ i,j = ρτ i,j + α/p gdzie p- bardzo duże 3
Uwagi praktyczne: Każda mrówka pamięta miasta już odwiedzone (w odpowiedniej kolejności) Każda mrówka pamięta miasta jeszcze nie odwiedzone Początkowo przyjmujemy dla każdej krawędzi: τ i,j =1/(d(i; j) β Przyjmijmy β=2 Mrówki umieszczamy losowo po miastach Algorytm dla każdej mrówki wygląda następująco: 1. Wylosuj miasto startowe 2. Uaktualnij listę miast odwiedzonych 3. Uaktualnij listę miast nie odwiedzonych 4. Oblicz rozkład prawdopodobieństwa, czyli P(j) dla każdego j z listy miast nie odwiedzonych 5. Wybierz miasto j spośród miast nie odwiedzonych zgodnie z rozkładem, czyli przykładowo: - niech sąsiedzi nie odwiedzeni to j, k, l - niech P(j)=P(k)=1/4 oraz P(l)=1/2 - wylosuj liczbę f z przedziału [0,1] - if (f<p(j)=1/4) wybierz miasto j Else if ( f< ( P(j)+P(k)=1/4) ) wybierz miasto k Else wybierz miasto l Przykładowo: niech f=3/8 Wtedy wybieramy miasto k, ponieważ: 4
Modyfikacje algorytmu: Dodatkowy parametr q 0 [ 0,1 ] q 0 = 0 oznacza pełny determinizm q 1 oznacza pełną nosowość 0 = Sposób postępowania: q 0,1 Losujemy [ ] - Jeśli q < q0 to mrówka idzie z miasta i do takiego miasta j, które maksymalizuje funkcję preferencji t(i,j) - Jeśli q > q0 to mrówka idzie z miasta i do takiego miasta j, wybranego zgodnie z rozkładem prawdopodobieństwa Zadanie: Zaimplementować powyższy algorytm, przyjmując α= 0.1 β= 2 q 0 = 0.9 M-liczba miast=20; P należy wybrać w sposób następujący: p=lm, gdzie L długość trasy wyznaczonej przez strategię najbliższego sąsiada [z każdego miasta idziemy do najbliższego]. Narysować długość ostatniej najlepszej drogi dla liczby mrówek m = 1, 2,10, 50. Jak długo trwa nauka w zależności od m? Przyjąć m = 10. Zbadać jak idzie mrówkom nauka, gdy: q 0, 0.25, 0.5,1 0 = Rozwiązać problem dla większej liczby miast. 5