2. Algorytm mrówkowy
● Probabilistyczna technika rozwiązywania
problemów obliczeniowych (oparta na
obliczaniu prawdopodobieństwa)
● Dobry sposób na znajdowanie ścieżek w grafie,
np. TSP – problem
● Metaheurystyka
3. Idea algorytmu
● Obserwacja życia mrówek
● Poszukiwanie najkrótszej ścieżki mrowisko –
jedzenie
● Ślady feromonu (wskazówka krótszej ścieżki do
pozostałych mrówek)
5. Implementacja równoległa
● Kolonia podzielona na P-koloni (każdy procesor)
● Każda z koloni szuka rozwiązania niezależnie. Po
pewnym czasie wymienia informacje ze swoim
partnerem (innym procesorem – wybór
partnera jest dynamiczny)
● Czas wymiany nie jest przypadkowy
6. Algorytm:
PACO -Parallel Ant Colony Optimization
Begin:
Stage 1:
Inicjalizacja zmiennych,
– Licznik wymiany informacji t = 0;
– Licznik cyklu i = 0
– g0 = wartość czasu wymiany – zakładamy z góry dla 0
– m – macierz feromonów dla wymiany
7. Algorytm cd..
● Stage 2:
While(zadany wynik) do
For każdego procesora
For każdej mrówki
● Stwórz rozwiązanie
● Oceń rozwiązanie
End For
Lokalna tab. feromonów←tablica najszybszej mrówki
if (nadszedł czas wymiany){
Znajdź procesor wymiany informacji
Uaktualnij tablicę feromonów z partnerem
Ustal nowy czas wymiany gt+1
}
End For
End do
End.
8. Wymiana informacji
● Strategia oparta jest na wyliczeniu średniej
trafności rozwiązania w zależności od
rozwiązania każdej mrówki:
Ni
1
f ave i =
Ni
∑ f i , k
k =1
gdzie:
N i −Liczba mrówek na procesorze i
f i , k −trafność rozwiązania k−tej mrówki na i−tym procesorze
9. Wymiana informacji
● Następnie wartości są sortowane w porządku
malejącym
● Oznaczamy po sortowaniu każdy procesor
rank_1,rank_2,...,rank_P
● Wymiana między procesorami:
rank_i wymienia się z rank_P+1-i
● np. : rank_1 wymienia się z rank_P
10. Wymiana informacji - szczegóły
● Po tym jak Procesor i-ty znajdzie partnera
wymienia m(j,k) (krawędź j,k) macierzy
feromonów.
1 *
m j , k = [m j , k m j , k ]
1 2
2
Gdzie:
m* j , k −wartość feromonu na krawędzi j , k precesoru rank P1−i
rank i rank i
1=1− 2 = ∗1
P P
11. Wymiana informacji - szczegóły
● W ten sposób procesor o gorszych parametrach
może polepszyć swoje poszukiwania.
● Zaś lepszy procesor unika wpadnięcia w lokalne
minimum i może rozszerzyć swoje poszukiwania.
12. Interwał wymiany danych
● Krytycznym czynnik
● Krótki interwał:
+ możliwe polepszenie wyników
– powoduje zmniejszenie wydajności algorytmu
● Długi interwał:
+ mniej czasu straconego na wymianę informacji
– poszczególne procesory mogą utknąć w lokalnym
minimum
13. Dobry interwał – rozwiązanie
● Nie jest stały!
● Wyliczany przy każdej generacji:
N N
∑ ∑ max mmax −mij , mij −mmin
k k k k
i=1 j=1
conk =2⋅ k k
−0,5
N⋅N⋅m max −m min
● gdzie:
mmin – minimalny feromon
k
mmax – maksymalny feromon
k
na k – tym procesorze
14. Interwał
● Na początku algorytmu ustawiamy wartość
każdego feromonu na 0,5 => con(k) = 0
● g0 ustalamy na początku!
● Im większe con(k) tym większa koncentracja
feromonu (potencjalnie lepsza ścieżka) =>
większe ryzyko wpadnięcia w lokalne optimum
15. Interwał
● Czas interwału między kolejnymi wymianami
informacji pomiędzy procesorami jest
uzależniony od tego czynnika:
g t1=
{
max g t 0,5−conave ⋅k 1 ,1 gdy conave 0,8 lub conave 0,2
g t w przeciwnym wypadku }
● k1 to nieujemna stała
● gt+1 to czas następnego interwału
16. Interwał
P
1
conave = ⋅∑ conk
P k =1
● wskazuje średni stopień zbieżności procesorów
● im większy, tym czas między wymianą informacji
procesorów może być dłuższy (mniejsze ryzyko,
że jakiś procesor wpadnie w lokalne optimum)