3. Algorytmy genetyczne

3.5. Inicjacja

Czym są operatory inicjalizacji?

Operatory inicjalizacji to procedury odpowiedzialne za wygenerowanie pierwszej populacji w algorytmie genetycznym. To, jak zostaną rozłożone początkowe punkty w przestrzeni rozwiązań, może mieć ogromne znaczenie dla skuteczności dalszego poszukiwania. Celem inicjalizacji jest zapewnienie odpowiedniej różnorodności genetycznej, by uniknąć przedwczesnej zbieżności populacji.

Typowe metody inicjalizacji

W literaturze i praktyce algorytmów genetycznych spotyka się kilka głównych podejść:

Inicjacja równomierna (jednorodna)

Inicjalizacja równomierna (jednorodna) to najprostszy i najczęściej stosowany sposób generowania początkowej populacji w algorytmach genetycznych. Polega na tym, że każda zmienna decyzyjna (gen) losowana jest niezależnie z rozkładu jednostajnego w zadanym przedziale dopuszczalnych wartości. Dzięki temu cała przestrzeń poszukiwań jest wstępnie przeszukiwana z równym prawdopodobieństwem, co zapewnia dobrą eksplorację już od pierwszej generacji.

Wzór opisujący losowanie jednego genu g_i z rozkładu jednostajnego wygląda następująco:

g_i = a_i + (b_i - a_i) \cdot U(0,1)

  • a_ib_i to odpowiednio dolna i górna granica przedziału dla genu g_i,
  • U(0,1) to liczba losowa z rozkładu jednostajnego w przedziale .

Zaletą inicjalizacji równomiernej jest jej prostota i niskie wymagania obliczeniowe. Nie wymaga żadnych dodatkowych parametrów (jak np. średnia i odchylenie standardowe w rozkładzie normalnym), ani wstępnej wiedzy o funkcji celu. Jest idealna do zadań, gdzie brakuje jakiejkolwiek wiedzy wstępnej o położeniu optymalnych rozwiązań.

Wadą tej metody może być jednak zbyt rzadkie pokrycie przestrzeni w wysokich wymiarach — przy dużej liczbie zmiennych liczba możliwych kombinacji rośnie wykładniczo, przez co nawet duże populacje mogą „nie trafić” w istotne obszary.

Rozkład normalny (Gaussa)

Rozkład normalny (Gaussa) to klasyczny rozkład symetryczny, którego kształt opisywany jest przez funkcję dzwonową. Jego parametrami są średnia , wokół której skupiają się wartości, oraz odchylenie standardowe , określające szerokość rozrzutu. Rozkład ten jest szeroko stosowany w algorytmach genetycznych do lokalnej inicjalizacji populacji, szczególnie gdy znane jest przybliżone położenie optimum.

Funkcja gęstości prawdopodobieństwa rozkładu normalnego zapisana w postaci matematycznej wygląda następująco:

Rozkład normalny (Gaussa) to klasyczny rozkład symetryczny, którego kształt opisywany jest przez funkcję dzwonową. Jego parametrami są średnia , wokół której skupiają się wartości, oraz odchylenie standardowe , określające szerokość rozrzutu. Rozkład ten jest szeroko stosowany w algorytmach genetycznych do lokalnej inicjalizacji populacji, szczególnie gdy znane jest przybliżone położenie optimum.

Funkcja gęstości prawdopodobieństwa rozkładu normalnego zapisana w postaci matematycznej wygląda następująco:


f(x) = \frac{1}{\sigma \sqrt{2\pi}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right)

Rozkład normalny pozwala w naturalny sposób regulować intensywność eksploracji poprzez manipulowanie – im większe odchylenie, tym większy zasięg losowanych wartości. Jest często stosowany jako alternatywa dla rozkładu jednostajnego, gdy zależy nam na zbliżeniu się do konkretnych obszarów przestrzeni decyzyjnej.

Kiedy używać rozkładu normalnego do inicjalizacji?

Rozkład normalny (Gaussa) jest szczególnie użyteczny w sytuacjach, gdy chcemy skoncentrować generowane punkty w pobliżu znanego lub przypuszczalnego optimum. Jest to korzystne np. w zadaniach, gdzie:

  • przestrzeń poszukiwań jest bardzo duża, a eksploracja całej przestrzeni byłaby nieefektywna,
  • dysponujemy wcześniejszą wiedzą o typowym zakresie dobrych rozwiązań,
  • potrzebujemy szybko zbliżyć się do dobrego punktu początkowego,
  • wymagane jest utrzymanie populacji w ograniczonym zasięgu wokół konkretnego rozwiązania,
  • zależy nam na dokładnej eksploracji lokalnej okolicy (eksploatacja zamiast eksploracji).

Stosując rozkład normalny, możemy łatwo regulować „rozrzut” poprzez parametr odchylenia standardowego σ – co czyni ten rozkład bardzo praktycznym narzędziem do lokalnego poszukiwania rozwiązań.

Inne operatory inicjalizacji spotykane w literaturze

Oprócz standardowych metod, w literaturze opisywane są również bardziej zaawansowane operatory inicjalizacji, które zwiększają jakość pokrycia przestrzeni poszukiwań. Przykładem jest Latin Hypercube Sampling (LHS), który zapewnia, że próbki są równomiernie rozmieszczone wzdłuż każdego wymiaru. Dzięki temu unika się sytuacji, w której populacja początkowa przypadkowo pomija duże obszary przestrzeni rozwiązań. LHS znajduje zastosowanie głównie w zadaniach o dużej liczbie zmiennych ciągłych, gdzie losowanie niezależnych wartości z rozkładu jednostajnego mogłoby prowadzić do nadmiernego skupienia próbek.

Rozkład Cauchy’ego zasługuje na osobne omówienie ze względu na jego unikalne właściwości. W przeciwieństwie do rozkładu normalnego, Cauchy charakteryzuje się tzw. grubymi ogonami – co oznacza, że wartości znacznie oddalone od średniej mają wyraźnie większe prawdopodobieństwo wystąpienia. Dzięki temu inicjalizacja z wykorzystaniem rozkładu Cauchy’ego może skutecznie wspierać eksplorację przestrzeni poszukiwań, zwłaszcza w problemach, gdzie dobre rozwiązania mogą występować daleko od środka przestrzeni decyzyjnej. Jest to zatem doskonała opcja w przypadkach, gdy zależy nam na agresywnym przeszukiwaniu całej przestrzeni, a nie tylko jej wycinka.

Drugą rodziną podejść są tzw. sekwencje niskiej dyskrepancji, takie jak Sobola, Haltona czy Faure’a. Są to quasi-losowe ciągi, które rozmieszczają punkty bardziej równomiernie niż czysto losowe próbkowanie. Dzięki temu zapewniają systematyczne i powtarzalne pokrycie przestrzeni, co czyni je przydatnymi np. w testowaniu algorytmów lub optymalizacji deterministycznej. Ich zaletą jest pełna kontrola nad rozkładem punktów oraz możliwość odwzorowania przestrzeni nawet w wysokich wymiarach.

Ciekawą propozycją jest również inicjalizacja warstwowa (layered), która łączy różne podejścia w jednej populacji. Na przykład, część populacji może być losowana z rozkładu jednostajnego dla szerokiej eksploracji, a inna część z rozkładu normalnego wokół znanych dobrych punktów – dla precyzyjnej eksploatacji. Takie połączenie działań eksploracyjnych i eksploatacyjnych już na etapie inicjalizacji pozwala algorytmowi rozpocząć poszukiwania z bardziej zrównoważonym rozkładem potencjalnych rozwiązań.

Nadinicjalizacja

Pojęcie nadinicjalizacji oznacza sytuację, w której generuje się znacznie więcej osobników niż wynosi docelowa liczność populacji – a następnie wybiera z nich najlepsze bądź najbardziej zróżnicowane. Pomaga to w uzyskaniu lepszej jakości początkowej populacji, ale wiąże się z większym kosztem obliczeniowym.

Można też rozumieć „nadinicjalizację” jako próbę kompensacji ubogiej struktury inicjalnej populacji przez sztuczne zwiększenie jej rozrzutu – np. przez silną mutację na etapie inicjalizacji lub przez celowe zwiększenie zakresów poszukiwań.

Podsumowanie

Wybór operatora inicjalizacji nie jest błahy:

  • dla eksploracji warto korzystać z rozkładu równomiernego, Cauchy’ego lub LHS,
  • dla eksploatacji – z rozkładów skoncentrowanych (np. normalnego, beta, wykładniczego),
  • inicjalizacja hybrydowa (np. kilka punktów heurystycznych + losowanie) daje często najlepsze efekty.

Dobrze zaprojektowana inicjalizacja może zdecydować, czy algorytm w ogóle znajdzie sensowne rozwiązania.