3.4 Algorytmy metaheurystyczne
3.4.2 Algorytm genetyczny
Idea algorytmu genetycznego jest zaczerpnięta z nauk przyrodniczych. Twórcą kon-cepcji był Holland w 1975 r. [60]. Sposób przeszukiwania potencjalnych rozwiązań w GA naśladuje procesy naturalne: dziedziczenie genetyczne i zjawiska doboru natural-nego. Mechanizmy doboru naturalnego (selekcji) prowadzą do przetrwania osobników najlepiej przystosowanych w danym środowisku. Osobniki, które przetrwają – przeka-zują informację genetyczną swoim potomkom (operacje krzyżowania, mutacji). Kolejne pokolenia są przeciętnie coraz lepiej dostosowane do warunków środowiska.
Schemat działania algorytmu genetycznego przedstawiony jest na rysunku 6.
t := 0 // Krok 1 – inicjalizacja:
znajdź P(0) // generowanie populacji początkowej oceń P(0) // obliczenie funkcji przystosowania repeat
t: = t+1
Wybierz P(t) z P(t-1) // Krok 2 - selekcja osobników
Zmień P(t) // Krok 3 i 4 – krzyżowanie, mutacja Oceń P(t) // obliczanie funkcji przystosowania until (Warunek_Stopu)
Kolejne kroki algorytmu genetycznego można opisać następująco:
Krok 1:
Inicjalizacja.
Generowanie populacji początkowej (przy użyciu najlepszych algorytmów me-todą wstawień, priorytetowych i losowo). Ustalenie parametrów algorytmu: prawdopodobieństwa krzyżowania, mutacji, liczby pokoleń, rozmiaru popula-cji i liczby osobników elitarnych.
Krok 2:
Selekcja.
Wybór osobników do nowej populacji. Stosowane metody: rankingowa, koła ruletki, turniejowa, ze strategią elitarną lub bez.
Krok 3:
Krzyżowanie.
Wybór osobników (rodziców) do rozmnażania i następnie przeprowadzenie wymiany materiału genetycznego między losowo dobranymi rodzicami przy zastosowaniu wybranego operatora krzyżowania.
Krok 4:
Mutacja.
Na wybranych osobnikach zmiany w liście zadań przy użyciu wybranego ope-ratora mutacji (mutacje typu Wstaw, Zamień, Zamień sąsiednie, Inwersja). Kroki 2-4 powtarzane są aż do spełnienia warunku STOP-u np. przebieg algorytmu przez określoną liczbę pokoleń.
W zagadnieniu optymalizacji genetycznej bardzo istotne jest właściwe określenie funkcji przystosowania fitness. Jest to odpowiednio przekształcona funkcja celu F roz-ważanego problemu. W tej pracy autor proponuje zastosować następujące skalowanie funkcji F do funkcji przystosowania fitnessi:
populacji rozmiar j j i i F fitness fitness _ ... 1 ) min( (33) gdzie:
Fi – wartość funkcji celu Fn określonej wzorem (13) dla osobnika i,
fitnessi – wartość funkcji przystosowania osobnika i.
Funkcja przystosowania jest wykorzystywana do oceny osobników przy wyborze (selekcji) do nowej populacji. W GA stosowane są m.in. następujące metody selekcji [125]:
- selekcja turniejowa – do udziału w turnieju z całej populacji losowanych (ze zwraca-niem) jest kilka chromosomów, najlepszy z nich wybierany jest do nowej populacji, - selekcja metodą koła ruletki, proporcjonalna – losowanie chromosomów z rozkładem
opartym o funkcje przystosowania,
- selekcja rankingowa – tworzony jest ranking osobników zgodnie z rosnącą wartością funkcji przystosowania, na podstawie rankingu każdemu osobnikowi przydzielana jest liczba szans: najsłabszy osobnik otrzymuje jedną szansę, natomiast najsilniejszy liczbę szans równą rozmiarowi populacji, do nowej populacji losowane są chromo-somy zgodnie z rozkładem opartym o liczbę szans poszczególnych osobników.
Spośród metod selekcji eksperymentalnie zostanie wybrana najlepsza procedura wyboru nowych osobników do kolejnych populacji.
Poza wyborem metod selekcji istotne jest znalezienie najlepszych operatorów gene-tycznych. Spośród znanych operatorów krzyżowania dla problemu RCPSP stosowane są te, które nie zaburzają zależności kolejnościowych [99]:
- 1PX (krzyżowanie jednopunktowe ang. One-Point Crossover) – osobnik potomny powstaje przez skopiowanie genów od pierwszej pozycji do punktu krzyżowania od jednego z rodziców a brakujące geny są uzupełniane w kolejności ich występowania u drugiego z rodziców.
- 2PX (krzyżowanie dwupunktowe ang. Two-Points Crossover) – osobnik potomny powstaje przez skopiowanie genów od jednego z rodziców (poza fragmentem chro-mosomu między dwoma wylosowanymi punktami krzyżowania) i uzupełnieniu bra-kujących genów w kolejności ich występowania u drugiego z rodziców.
- PPX [16] (krzyżowanie z zachowaniem następstwa ang. Precedence Preservance
Crossover) – na początku wyznaczany jest wektor V o długości równej rozmiarowi
chromosomu, złożony z losowo wygenerowanych 0 i 1. Osobnik potomny powstaje poprzez kopiowanie kolejnych genów z chromosomów rodzicielskich Rodzic1 i
Ro-dzic2 na podstawie wszystkich kolejnych wartości wektora V: gdy na danej pozycji
w wektorze V jest wartość 0 do potomka gen jest kopiowany z chromosomu
Ro-dzic1, gdy jest wartość 1 gen z chromosomu Rodzic2. Po dopisaniu do potomka dany
gen jest usuwany z obu rodziców.
Poza znanymi krzyżówkami proponowany jest nowy operator krzyżowania z regułami priorytetowymi PRX8. Operator ten zachowuje kolejność genów występującą u rodzi-ców z dodatkowym uporządkowaniem fragmentu chromosomu zgodnie z określoną regułą priorytetową. Losowane są dwa punkty krzyżowania, które dzielą chromosom na trzy części Fr1, Fr2 i Fr3. Następnie losowana jest kolejność przydzielania genów do poszczególnych części np. załóżmy, że dla potomka 1 wylosowano następujący przy-dział: fragment Fr1 – Rodzic1, fragment Fr2 – lista priorytetowa, fragment Fr3 –
Ro-dzic2. Wtedy dla potomka 2: fragment Fr1 – Rodzic2, fragment Fr2 – lista
prioryteto-wa, fragment Fr3 – Rodzic1. Przykład działania operatora dla tak ustalonej kolejności przepisywania genów operatora przedstawiony jest na rysunku 7. Chromosom
Poto-mek1 powstaje następująco:
- fragment Fr1 jest przepisany z Rodzic1, te dodane geny z Rodzic1 do Potomek1 są wykreślane z listy priorytetowej i z Rodzic2,
- fragment Fr2 powstaje przez przepisanie z listy priorytetowej, w kolejności wystę-powania na tej liście, nie wykreślonych do tej pory genów, geny te są wykreślane z chromosomu Rodzic2,
- fragment Fr3 zostaje wypełniony genami nie wykreślonymi w chromosomie Rodzic2 w kolejności ich występowania w chromosomie Rodzic2.
8Wyniki eksperymentów przeprowadzonych przez autora dla algorytmu genetycznego, w którym stoso-wany jest operator PRX są gorsze niż uzyskane przy zastosowaniu znanych operatorów krzyżowania. Dla celów porównawczych pozostawiono jednak opis operatora PRX i zaprezentowano wyniki uzyskane przy jego zastosowaniu.
Rysunek 7. Przykład działania nowego operatora krzyżowania dla listy priorytetowej czynności {1, 3, 2, 6, 7, 8, 4, 5, 10, 9}.
Konstrukcja proponowanego operatora krzyżowania gwarantuje, że jego wykorzystanie nie powoduje zaburzenia zależności kolejnościowych występujących w sieci projektu.
Jako techniki jednoargumentowe, zwane w GA mutacjami, zastosowane są ruchy opisane w SA (poza ruchami Zamień wszystkie, Zamień sąs. wszystkie, Wstaw
wszyst-kie).
W klasycznym algorytmie genetycznym nie są sprawdzane na bieżąco rozwiązania a przeprowadzane operacje mutacji, krzyżowania mogą „zniekształcać” obiecujące listy czynności. Autor proponuje także hybrydową wersję GA, w której w każdym kolejnym pokoleniu najlepszy osobnik poddany jest lokalnemu przeszukiwaniu przy użyciu tech-nik jednoargumentowych tj. mutacji Wstaw wszystkie, Zamień wszystkie, Zamień sąs.
wszystkie.