I. Metoda programowania nieliniowego PNL.
Celem ćwiczenia jest zapoznanie się z podstawową metodą rozwiązywania nieliniowego zadania optymalizacji z ograniczeniami na przykładzie algorytmu optymalizacji lokalnej z ograniczeniami lub algorytmu genetycznego z ograniczeniami.
Algorytm optymalizacji lokalnej lub algorytm optymalizacji globalnej (algorytm genetyczny) z ograniczeniami pozwala na wyliczenie takiego wektora zmiennych decyzyjnych x, dla którego funkcja celu osiąga minimum :
Przy ograniczeniach:
--> Wstęp teoretyczny (na postawie informacji zawartych na stronie: http://pl.wikipedia.org)[Author:M]
Algorytm genetyczny to rodzaj algorytmu przeszukującego przestrzeń alternatywnych rozwiązań problemu w celu wyszukania rozwiązań najlepszych. Sposób działania algorytmów genetycznych nieprzypadkowo przypomina zjawisko ewolucji biologicznej, ponieważ ich twórca John Henry Holland właśnie z biologii czerpał inspiracje do swoich prac.
Najczęściej działanie algorytmu przebiega następująco:
Losowana jest pewna populacja początkowa.
Populacja poddawana jest ocenie (selekcja). Najlepiej przystosowane osobniki biorą udział w procesie reprodukcji.
Genotypy wybranych osobników poddawane są operatorom ewolucyjnym:
są sobą kojarzone poprzez złączanie genotypów rodziców (krzyżowanie),
przeprowadzana jest mutacja, czyli wprowadzenie drobnych losowych zmian.
Rodzi się drugie (kolejne) pokolenie i algorytm powraca do kroku drugiego, jeżeli nie znaleziono dostatecznie dobrego rozwiązania. W przeciwnym wypadku uzyskujemy wynik.
Działanie algorytmu genetycznego obejmuje kilka zagadnień potrzebnych do ustalenia:
ustalenie genomu jako reprezentanta wyniku
ustalenie funkcji przystosowania/dopasowania
ustalenie operatorów przeszukiwania
II. Zadania do wykonania
1. f(x) = (x1 - 2)2 + (x2 - 2)2
Punkt optymalny: x* = [2, 2]
Wartość optymalna funkcji: f(x*) = 0
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-5, 5]
x2 = [-5, 5]
Wizualizacja rozwiązania bez ograniczeń:
ograniczenie nieaktywne
Ograniczenie: x1 + x2 < 6
Punkt optymalny: x* = [2, 2]
Wartość optymalna funkcji: f(x*) = 0
Wizualizacja rozwiązania z ograniczeniem:
ograniczenie aktywne
Ograniczenie: x1 + x2 < 2
Punkt optymalny: x* = [0.937, 1.055] x* = [1, 1]
Wartość optymalna funkcji: f(x*) = 2.023 f(x*) = 2
-5 : 5 -2:2
--> Wizualizacja rozwiązania z ograniczeniem:[Author:M]
2. f(x) = 2x12 - 2x1x2 + x22
Punkt optymalny: x* = [0, 0]
Wartość optymalna funkcji: f(x*) = 0
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-2, 2]
x2 = [-2, 2]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie nieaktywne
Ograniczenie: 4x1 + 3x2 < 12
Punkt optymalny: x* = [0, 0]
Wartość optymalna funkcji: f(x*) = 0
Wizualizacja rozwiązania z ograniczeniem:
ograniczenie aktywne
Ograniczenie: - x1 - 2x2 < - 4
Punkt optymalny: x* = [1, 1.5] x* = [0.904, 1.548]
Wartość optymalna funkcji: f(x*) = 1.25 f(x*) = 1.232
-2 : 2 0 : 2
Wizualizacja rozwiązania z ograniczeniem:
3. f(x) = x12 + x1x2 + 0.5x22 - x1 - x2
Punkt optymalny: x* = [0, 1]
Wartość optymalna funkcji: f(x*) = -0.5
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-2, 2]
x2 = [-2, 2]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie nieaktywne
Ograniczenie: - 2x1 + 3x2 < 6
Punkt optymalny: x* = [0, 1]
Wartość optymalna funkcji: f(x*) = - 0.5
Wizualizacja rozwiązania z ograniczeniem:
b) ograniczenie aktywne
Ograniczenie: x1 < - 1
Punkt optymalny: x* = [-1, 2] x* = [-1, 2]
Wartość optymalna funkcji: f(x*) = 0 f(x*) = 0
-2 : 2 -2:0, 1:3
Wizualizacja rozwiązania z ograniczeniem:
4. Funkcja Engwall'a f(x) = x14 + x24 - 2x12x2 - 4x1 + 3
Punkt optymalny: x* = [1,309, 0,949]
Wartość optymalna funkcji: f(x*) = -1,74109
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-2, 2]
x2 = [-2, 2]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie nieaktywne
Ograniczenie: 3x1 + 4x2 < 12
Punkt optymalny: x* = [1.31, 0.94]
Wartość optymalna funkcji: f(x*) = - 1.74
Wizualizacja rozwiązania z ograniczeniem:
b) ograniczenie aktywne
Ograniczenie: x1 + x2 < 1
Punkt optymalny: x* = [1, 0] x* = [1, 0 ]
Wartość optymalna funkcji: f(x*) = 0 f(x*) = 0
-2:2 0:2, -1:1
Wizualizacja rozwiązania z ograniczeniem:
5. Zmodyfikowana funkcja Himmelblau'a f(x) = (x12 + x2 - 11)2 + (x1 + x22 - 7)2 - 200
Punkty optymalne: Cztery identycznej wartości minima lokalne
Wartość optymalna funkcji: f(x*) = -200
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-5, 5]
x2 = [-5, 5]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie nieaktywne
Ograniczenie: x12 + x22 < 25
Punkty optymalne: x1* = [3, 2] x2* = [-3.78, -3.28] x3* = [-2.81, 3.13] x4* = [3.58, -1.85]
Wartość optymalna funkcji: f(x*) = - 200
Wizualizacja rozwiązania z ograniczeniem:
b) ograniczenie aktywne
Ograniczenie: x12 + x22 < 1
Punkt optymalny: x* = [0.82, 0.57] x* = [0.78, 0.62]
Wartość optymalna funkcji: f(x*) = - 70.57 f(x*) = -70.65
-5:5 -1:1
Wizualizacja rozwiązania z ograniczeniem:
--> 6. f(x) = (x1 - 2)2 + (x2 - 1)2[Author:M]
Punkt optymalny: x* = [2, 1]
Wartość optymalna funkcji: f(x*) = 0
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-2, 4]
x2 = [-2, 4]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie aktywne
Ograniczenia: x12 - x2 < 0
x1 + x2 < 2
Punkt optymalny: x1* = [1, 1] x* = [1, 1]
Wartość optymalna funkcji: f(x*) = 1 f(x*) = 1
Wizualizacja rozwiązania z ograniczeniem:
-2:4 -2:2, 0:2
7. f(x) = (x1 - 1)2 + (x2 - 5)2
Punkt optymalny: x* = [1, 5]
Wartość optymalna funkcji: f(x*) = 0
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-2, 4]
x2 = [2, 8]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie aktywne
Ograniczenia: x12 - x2 < 0
x1 + x2 < 2
Punkt optymalny: x1* = [-1.127, 3.079] x* = [-1, 3]
Wartość optymalna funkcji: f(x*) = 8.216 f(x*) = 8
Wizualizacja rozwiązania z ograniczeniem:
-2:4 -2:2, 0:4
7. f(x) = (x1 + 3)2 + (x2 - 1)2
Punkt optymalny: x* = [-3, 1]
Wartość optymalna funkcji: f(x*) = 0
Część programowa:
Ogólne założenia
Populacja początkowa: 40 osobników
Wybór początkowej populacji: losowy
Krzyżowanie: 60%
Mutacja: 12%
Kryterium stopu: brak postępu
Zakres zmiennych: x1 = [-5, -1]
x2 = [-1, 3]
Wizualizacja rozwiązania bez ograniczeń:
a) ograniczenie aktywne
Ograniczenia: x12 - x2 < 0
x1 + x2 < 2
Punkt optymalny: x1* = [-1.27, 1.62] x* = [-1.25, 1.56]
Wartość optymalna funkcji: f(x*) = 3.378 f(x*) = 3.379
Wizualizacja rozwiązania z ograniczeniem:
-5:-1, -1:3 -2:0, 1:3
III. Wnioski
Efektywność i dokładność obliczeniowa algorytmu genetycznego zależy głównie od prawidłowego doboru zakresu wartości zmiennych oraz w przypadku programowania nieliniowego z ograniczeniami właściwego doboru ograniczeń. Nieprawidłowy dobór obszaru z ograniczeniami nieaktywnymi (λ < 0) i bez ograniczeń (λ = 0) powoduje błędne wskazania wartości optymalnej. W przypadku zbyt dużego obszaru algorytm może idealnie nie trafić w punkt optymalny, zbyt mały obszar powoduje nie znalezienie optymalnego rozwiązania (punkt optymalny będzie znajdował się na brzegach badanego obszaru). W przypadku zadania z ograniczeniami dobór obszaru jest równie ważny, nie musimy jednak obejmować całego obszaru funkcji, wystarczy tylko aby ograniczony obszar poszukiwań w wybranych przedziałach się znajdował. Najlepiej dobrać jak najmniejszy możliwy obszar, mamy wtedy większe prawdopodobieństwo na znalezienie optimum warunkowego.
Kolejnym istotnym problemem jest dobór algorytmu selekcji, ponieważ od nich zależy dokładność odszukanego optimum. Jednak w wybranym programie nie mieliśmy możliwości wyboru algorytmu selekcji.
Ważnym parametrem jest rozmiar populacji. W zadaniach opracowywanych w tym ćwiczeniu optymalna liczba osobników w populacji powinna mieścić się w granicach 30 - 50. Na szybkość i efektywność algorytmu genetycznego poza algorytmem selekcji ma wpływ jakość osobników w początkowej populacji. A więc dobre losowanie (w przypadku zastosowania takiej metody wyboru początkowej populacji) ma bardzo duży wpływ na osiągnięcie optymalnego rozwiązania.
Decydujący wpływ na końcowe rozwiązanie ma kryterium stopu, czyli warunek decydujący o zatrzymaniu pracy algorytmu. Zdecydowanie najlepszym wyborem (naszym zdaniem) jest kryterium na brak postępu, ponieważ w miarę szybko znajduje optymalne rozwiązanie. W przypadku wyboru kryterium na liczbę generacji musimy orientować się jak dobrać tą liczbę. Zbyt mała liczba spowoduje, że algorytm nie dojdzie do rozwiązania optymalnego, natomiast zbyt duża liczba znacznie wydłuży czas wyszukiwania optimum.
Głównym zadaniem tego ćwiczenia był odpowiedni dobór ograniczeń, aby uzyskać ograniczenia aktywne (przesuwające punkt optymalny funkcji celu) i nieaktywne (nie mające wpływy na wartość optymalną funkcji celu). Po przeanalizowaniu wybranych funkcji i ograniczeń stwierdziliśmy, że ćwiczenie zostało wykonane poprawie, potwierdziła to również analiza analityczna (załącznik: przykładowe obliczenia).
Laboratorium |
Technika optymalizacji |
Autorzy:
Kier.: EiT Spec.: ESA |
Wrocław, dnia 13.11.2006
Prowadzący: Dr inż. Ewa Szlachcic |
Ćwiczenie V Zadanie programowania nieliniowego z ograniczeniami |
Algorytmy optymalizacji lokalnej i algorytmy optymalizacji globalnej
|
12
Napisać zdecydowanie ambitniejszy wstęp + opisać ogólnie wpływ ograniczeń.
Komentarz do wszystkich wizualizacji!!!
Podpisać obrazki (dla jakich zakresów zmiennych widoczna wizualizacja) - u nas ręcznie to było zrobione.
Poniżej dodatkowe OBOWIĄZKOWE zadania z zajęć wymyślone przez prowadzącą .