2. Zadanie minimalizacji

2.5. Uwzględnianie ograniczeń w optymalizacji – kiedy nie wszystko wolno

Uwzględnianie ograniczeń w optymalizacji – kiedy nie wszystko wolno

W większości realistycznych problemów optymalizacyjnych nie możemy swobodnie dobierać zmiennych – jesteśmy ograniczeni przez warunki fizyczne, ekonomiczne, prawne czy techniczne. W tym rozdziale przyjrzymy się, jak klasyczne algorytmy radzą sobie z ograniczeniami. Omówimy metody jawne i niejawne, twarde i miękkie, dokładne i przybliżone.

Rodzaje ograniczeń

Zacznijmy od klasyfikacji. Ograniczenia w problemie optymalizacji można zapisać jako:

  • Ograniczenia równościowe: h_i(x) = 0
  • Ograniczenia nierównościowe: g_j(x) \leq 0

Mogą one dotyczyć jednej zmiennej lub całego ich zestawu, np. x_i \in [a_i, b_i].

Z punktu widzenia praktyki dzieli się je na:

  • twarde (hard) – muszą być spełnione bez wyjątku,
  • miękkie (soft) – można je naruszyć, ale z konsekwencjami (np. kara w funkcji celu).

Dodatkowo, wyróżniamy:

  • ograniczenia jawne – znane i zapisane bezpośrednio,
  • ograniczenia niejawne – wynikające z ukrytej logiki zadania lub symulacji.

Transport chemikaliów
Przypomnijmy sobie zadanie z rozdziału 2.1, gdzie projektowaliśmy prostopadłościenne zbiorniki na chemikalia. Naszą funkcją celu był koszt transportu, a zmiennymi decyzyjnymi były wymiary pojemników.
W tym przypadku ograniczenia obejmowało:
  • x_1, x_2, x_3 > 0 – bo pojemniki muszą mieć dodatnie rozmiary,
  • ( 2*x_1*x_3+x_1*x_2 \leq 10 - bo nie można zużyć za dużo materiału z recyklingu na jedno pudełko,
W bardziej realistycznym przykładzie pewnie należałoby dodać jakieś ograniczenie na pojemność (zarówno dolne jaki i górne), czy też na poszczególne wymiary. Przy czym można wyobrazić sobie część z nich jako miękkie - z powodów ergonomicznych lepiej, by wysokość nie była większa niż 2 m.

Metoda eliminacji – tylko to, co dopuszczalne

Najprostsza strategia to nie wpuszczać do przestrzeni przeszukiwania żadnego punktu, który nie spełnia ograniczeń. To tzw. metoda eliminacji (feasibility filter).

Jak to działa?

  • Generujemy kandydatów (np. losowo lub iteracyjnie),
  • Sprawdzamy, czy spełniają wszystkie ograniczenia,
  • Jeśli nie – odrzucamy i szukamy dalej.

Zalety:

  • prostota,
  • 100% pewności, że rozwiązania są dopuszczalne.

Wady:

  • może być ekstremalnie nieefektywna, jeśli dopuszczalna przestrzeń jest wąska,
  • problematyczna w przestrzeniach ciągłych o trudnych ograniczeniach geometrycznych.

Metoda ta jest powszechna w prostych algorytmach przeszukiwania losowego.

Kara - niedobrze jak opuścisz obszar poszukiwań

Inna popularna strategia to włączenie ograniczeń do funkcji celu w postaci dodatkowej kary (penalty function). To pozwala naruszać ograniczenia, ale z kosztami.

Nowa funkcja celu ma postać:

f'(x) = f(x) + P(x)

gdzie  P(x) to funkcja kary, np.:

P(x) = \sum_{i} r_i \cdot \max(0, g_i(x))^2 + \sum_{j} s_j \cdot h_j(x)^2

g_i(x) – funkcje ograniczeń nierównościowych, które opisują warunki typu \leq. Na przykład, g_1(x) = x_1^2 + x_2 - 5 \leq 0 wymaga, aby dana kombinacja zmiennych mieściła się w wyznaczonym obszarze.
h_j(x) – funkcje ograniczeń równościowych, które muszą być dokładnie spełnione. Na przykład, h_1(x) = x_1 + x_2 - 1 = 0 oznacza, że suma tych zmiennych musi wynosić dokładnie 1.

Parametry r_i i /(s_j\) to współczynniki kar. Ich dobór jest krytyczny – zbyt małe kary powodują lekceważenie ograniczeń, zbyt duże całkowicie blokują eksplorację.

Zalety:

  • łatwa do zastosowania w istniejących algorytmach,
  • działa także z funkcjami niegładkimi.

Wady:

  • trudność w doborze wag kary,
  • ryzyko, że dobre rozwiązania dopuszczalne będą pominięte, jeśli punkt niedopuszczalny ma niską wartość oryginalnej funkcji celu.
Metoda barier – podejście od wewnątrz

Alternatywą dla kar jest metoda barier, szczególnie w przestrzeni ciągłej. Zamiast pozwalać wejść do strefy niedozwolonej, bariera zapobiega zbliżaniu się do granicy dopuszczalności.

Typowa postać funkcji barierowej:


    f'(x) = f(x) + \mu \cdot \sum_j \frac{1}{-g_j(x)}

Bariera działa tylko dla punktów wewnątrz dopuszczalnego obszaru – im bliżej granicy, tym kara większa. to współczynnik kontrolujący siłę działania bariery.

Zalety:

  • zachowujemy się "bezpiecznie", nie przekraczając granic,
  • sprzyja optymalizacji wewnątrz trudnych wielowymiarowych obszarów.

Wady:

  • nie działa dla równości,
  • wymaga funkcji różniczkowalnej i pochodnych,
  • może prowadzić do utknięcia daleko od minimum globalnego.
Metody rzutowania – powrót na ścieżkę

Jeśli w kolejnych krokach algorytmu zdarza się, że punkt wyjdzie poza dopuszczalną przestrzeń, możemy go ręcznie przywrócić do niej – poprzez tzw. rzutowanie.

Mamy ograniczenie  x \in [0,1] . Jeśli nowy punkt  x_k = 1.3 , to zamiast odrzucić, robimy ustawiamy  x_k = 1.0 .

Rzutowanie działa na granicy dopuszczalności i zachowuje sens matematyczny przeszukiwania.

Zalety:

  • prosta implementacja,
  • pozwala używać standardowych algorytmów nawet w obecności ograniczeń.

Wady:

  • może prowadzić do "ślizgania się" po granicy,
  • nie uwzględnia geometrii problemu.
Naprawianie (repair) – sprytna korekta

Zamiast odrzucać lub karać – można próbować naprawiać niedopuszczalne rozwiązania. Np. jeśli suma udziałów w portfelu przekracza 100%, można je przeskalować. Jeśli punkt leży poza granicą, można przesunąć go najkrótszą drogą do wnętrza.

Zalety:

  • elastyczne i skuteczne w praktyce,
  • pozwala korzystać z silnych heurystyk bez komplikowania algorytmu.

Wady:

  • często wymaga znajomości problemu i specjalnych procedur,
  • może zaburzać rozkład rozwiązań (np. w metodach losowych).
Metody hybrydowe i adaptacyjne

W rzeczywistości często stosuje się kombinacje powyższych metod:

  • kara + rzutowanie,
  • bariera + naprawianie,
  • kara adaptacyjna – która zmienia siłę działania w czasie (np. rośnie w miarę trwania optymalizacji).

Szczególnie algorytmy ewolucyjne często korzystają z adaptacyjnych funkcji kary, które uwzględniają np. liczbę spełnionych ograniczeń w danej populacji.

Uwagi praktyczne

Dobór odpowiedniej strategii postępowania z ograniczeniami w optymalizacji zależy od wielu czynników. Przede wszystkim trzeba wziąć pod uwagę naturę problemu: czy mamy do czynienia z przestrzenią ciągłą, gdzie możemy wykorzystać pochodne i gładkość funkcji celu, czy z przestrzenią dyskretną, gdzie takie założenia nie obowiązują. Problemy ciągłe z ograniczeniami równościowymi wymagają często stosowania metod analitycznych lub przybliżających – na przykład przez przekształcenie równości w funkcje kary kwadratowe. W przypadku ograniczeń nierównościowych dobrze sprawdzają się metody barierowe lub adaptacyjne kary. Z kolei w przestrzeniach dyskretnych bardziej praktyczne okazują się metody naprawcze lub prosta eliminacja rozwiązań niedopuszczalnych.

Ważną rolę odgrywa także geometria przestrzeni rozwiązań – w niektórych problemach dopuszczalny obszar jest nieregularny, pełen dziur i nieciągłości. W takich przypadkach warto rozważyć metody rzutowania lub adaptacyjne przekształcanie przestrzeni przeszukiwania. W praktyce inżynierskiej, zwłaszcza w dziedzinach takich jak projektowanie mechaniczne, inżynieria materiałowa czy chemiczna, dobrze działa połączenie strategii optymalizacji z wiedzą ekspercką. Na przykład zamiast jedynie penalizować naruszenie granic geometrycznych, można wprowadzić sprytne algorytmy naprawcze, które przekształcają rozwiązania w realne i wykonalne, zgodnie z zasadami fizyki czy standardami technicznymi.

Warto też zauważyć, że sposób traktowania ograniczeń może wpływać nie tylko na skuteczność optymalizacji, ale również na jakość znalezionych rozwiązań – zwłaszcza w problemach, gdzie między ograniczeniami a funkcją celu istnieje subtelna zależność. Dlatego wybór metody powinien być dokonywany świadomie, w oparciu o analizę problemu, a nie przez przyzwyczajenie czy wygodę implementacyjną. (np. optymalizacja konstrukcji) warto wspomagać się informacjami z domeny.