Przeglądaj wersję html pliku:

Instrukcja z optymalizacji Matlab


OPTYMALIZACJA W ŚRODOWISKU MATLAB

1. Cel ćwiczeń Celem ćwiczeń jest zaznajomienie studentów z podstawową obsługą środowiska obliczeń in ynierskich Matlab oraz zapoznanie się z mo liwościami przeprowadzenia procesu optymalizacji w tym środowisku. Po ukończeniu tych zajęć student powinien umieć samodzielnie utworzyć plik funkcyjny zawierający funkcję celu, zdefiniować ograniczenia oraz uruchomić procedurę optymalizacji. 2. MATLAB – podstawowe operacje

a) Definiowanie macierzy i wektorów X=[1 3 2 8] – przez podanie kolejnych elementów, X=[1:7] – przez podanie zakresu, X=[1:2:13] – przez podanie zakresu oraz skoku, X=[1 3 2 8; 2 4 5 6; 3 2 1 8] – podawanie elementów, X=[-5:1; 1:7; 1:2:13] – operowanie zakresem i skokiem b) Odwołania do elementów macierzy i wektorów X(1,2) – odwołanie do jednego elementu, X(1:2,4:7) – odwołanie zakresowe, X(1:2,1:2:7) – odwołanie zakresowe ze skokiem c) Składanie macierzy i wektorów A=[1:4, 4:7], B=[2:2:8, 10:10:40], C=[A;B] – składanie w pionie, C=[A,B] – składanie w poziomie, C=[A,B;B,A] – składanie mieszane d) Definiowanie macierzy z wykorzystaniem funkcji systemu Matlak X=eye(5) – macierz jednostkowa 5x5, X=ones(5) – macierz jedynkowa 5x5 , X=zeros(5) - macierz zerowa 5x5, X=rand(5) - macierz losowa 5x5, X=randn(5) - macierz losowa o rozkładzie normalnym 5x5, X=linspace(x1,x2,N) – wektor liniowy, X=logspace(x1,x2,N) – wektor logarytmiczny e) Manipulacje macierzami A=rot90(B) – obrót, A=flipr(B) – odbicie w pionie,

1

A=flipuprot90(B) – odbicie w poziomie, A=reshape(B,2,5) – połamanie wektora, A=diag(B) – macierz diagonalna f) Działania na macierzach i wektorach C=A+/-B – dodawanie i odejmowanie macierzy, C=A*B – mno enie macierzy, C=A.*B – mno enie tablicowe macierzy, C=A’ – transponowanie macierzy, C=A^(-1) – odwrotność macierzy, C=A.^2 – podniesienie do potęgi elementów macierzy, C=A./B – dzielenie tablicowe g) Inne funkcje macierzowe Rank(A) – rząd macierzy [m,n]=size(A) – wymiar macierzy, N=length(X) – długość wektora, Inv(A) – macierz odwrotna, h) Liczby zespolone 5+6i, 5+6*sort(-1) – deklaracja liczby zespolonej, abs(z) – moduł liczby zespolonej, angle(z) – argument liczby zespolonej, real(z) – część rzeczywista liczby zespolonej, imag(z) – część urojona liczby zespolonej, conj(z) – sprzę enie liczby zespolonej, Dokładniejszy opis poszczególnych funkcji oferowanych przez system Matlab znaleźć mo na w rozległej literaturze [1,2,3,4] oraz systemie pomocy Matlaba. 3. OPTYMALIZACJA bez ograniczeń - fminunc Zadanie: Znajdź minimum nieograniczonej funkcji wielu zmiennych min f ( x) , gdzie x jest wektorem
x

zmiennych decyzyjnych a f(x) funkcją celu.

Składnia funkcji fminunc:
x = fminunc(fun,x0) x = fminunc(fun,x0,options) x = fminunc(fun,x0,options,P1,P2,...) [x,fval] = fminunc(...) [x,fval,exitflag] = fminunc(...) [x,fval,exitflag,output] = fminunc(...) [x,fval,exitflag,output,grad] = fminunc(...) [x,fval,exitflag,output,grad,hessian] = fminunc(...)

2

Wyjaśnienie występujących oznaczeń:

• • • • • • • • •

fun – funkcja celu, musi być zdefiniowana w pliku funkcyjnym matlaba, x – wektor zawierający optimum, x0 – punkt startowy optymalizacji, fval – wartość funkcji celu odpowiadająca w optimum, exitflag – znacznik wyjścia, output – zawiera ogólne informacje dotyczące procesu optymalizacji, grad – gradient, hessian – wartość hessiana funkcji celu options – opcje optymalizacji, ustawiane poleceniem optimset

Opcje optymalizacji – funkcja optimset: • LargeScale – On/Off, • Display – On/Off • TolX – tolerancja na wektor X, • TolFun – tolerancja funkcji celu

4. OPTYMALIZACJA z definicją gradientu
Ten typ optymalizacji pozwala zdefiniować dodatkowo gradient funkcji celu.

Składnia: [x,fval,exitflag,output]=fminunc({@fcelu,@fgradientu},x0,options)
Jedyną ró nicą pomiędzy tym rodzajem optymalizacji, a zwykłą optymalizacją bez ograniczeń jest konieczność zdefiniowania funkcji gradientu. Jest to osobny m-plik funkcyjny zawierający wyra enia na pochodne cząstkowe funkcji celu po poszczególnych zmiennych decyzyjnych.

5. OPTYMALIZACJA z ograniczeniami - fmincon Zadanie: Znajdź minimum ograniczonej funkcji wielu zmiennych min f ( x) , gdzie x jest wektorem
x

zmiennych decyzyjnych a f(x) funkcją celu oraz:

c( x ) ≤ 0 ceq( x ) = 0 A⋅ x ≤ b Aeq ⋅ x ≤ beq lb ≤ b ≤ ub
gdzie x, b, beq, lb oraz ub są wektorami, A i Aeq są macierzami, c(x) i ceq(x) są funkcjami zwracającymi wektory oraz f(x) jest funkcją zwracającą skalar. Funkcje f(x), c(x) i ceq(x) mogą być funkcjami nieliniowymi.

3

Składnia funkcji:
x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...) [x,fval] = fmincon(...) [x,fval,exitflag] = fmincon(...) [x,fval,exitflag,output] = fmincon(...) [x,fval,exitflag,output,lambda] = fmincon(...) [x,fval,exitflag,output,lambda,grad] = fmincon(...) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...) Funkcja nonlcon mo e być u yta do wygodnego definiowania wszystkich ograniczeń nieliniowych w osobnym pliku funkcyjnym, zamiast ich definiowania podczas wywoływania procedury optymalizacji.

6. Przykłady
Przykład 1

Znajdź minimum funkcji y = e x1 + e x2 , dla następujących ograniczeń równościowych: x(1)^2+x(2)^2-9=0 oraz nierównościowych –x1-x2+1<0, -x1<0; x2>0 Rozwiązanie: x=[2.12 funkcji celu = 16.6843 2.12], wartość

Przykład 2

minimum Znajdź 2 2 y = ( x1 − 2 ) + ( x 2 − 1) +

funkcji

 x2  2 2 + 0.04 ⋅  1 − x 2 + 1 + 5 ⋅ ( x1 − 2 x 2 + 1)  4    w granicach x1=[-2:0.1:5] i x2=[1:0.1:4]; x=[1.8442, 1.4047], Rozwiązanie: wartość funkcji celu = 0.1212

4

Przykład 3 Znajdź minimum funkcji danej wzorem: f ( x, y ) = 100 y − x 2 + (1 − x ) Jest to funkcja, którą trudno jest zoptymalizować. Dlatego nale y zastosować optymalizację z gradientem. Punkt startowy: x0=[-1.9, 2]; Minimum nale y poszukiwać w granicach x ∈< −2,2 > , y ∈< −1,3 > W celu rozwiązania zadania nale y wyznaczyć pochodne cząstkowe funkcji celu: ∂f = −400 y − x 2 x − 2(1 − x ) ∂x ∂f = 200 y − x 2 ∂y
2

(

)

2

(

)

(

)

Przed wywołaniem funkcji optymalizującej nale y poprawnie ustawić opcje optymalizacji: Options=optimset(‘largescale’,’off ’,’linesearchtype’,’cubicpoly’,’gra dobj’,’on’)

Wyniki optymalizacji: wartość funkcji celu w optimum 8.9856e-009, dla x = 1.0001 oraz y = 1.0002

7. Zadania do samodzielnego wykonania.
Zadanie 1 Znajdź optimum funkcji f ( x, y ) = e x Zadanie 2 Znajdź optimum funkcji f ( x, y ) =
2

+2 y2

− 10 xy w granicach x = [-1.1:1.1], y = [-1:1].

(0.132 − e

(y

2

− 0 .5

)

2

− ( x −1)2

) w granicach x = [0:2], y = [-1.1:1.1].
5

Zadanie 3 Znajdź optimum funkcji f ( x, y ) = 2 x 3 + y 2 + x 2 y 2 + 4 y + 3 w granicach x = [4:13], y = [0:10].

8. Literatura
[1] A.Zalewski, R.Cegieła: Matlab – obliczenia numeryczne i ich zastosowania. Wydawnictwo Nakom, Poznań 1996 [2] W. Regel: Obliczenia symboliczne i numeryczne w programie Matlab. Wydawnictwo Mikom, Warszawa 2004 [3] M.Czajka: Matlab – ćwiczenia. Wydawnictwo Helion, Gliwice 2005 [4] B.Mrozek, Z.Mrozek: Matlab – uniwersalne środowisko do obliczeń naukowo technicznych. Wyd.3, Warszawa 1996

6

 
statystyka