Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Obliczenia w Matlabie Optymalizacja

Podobne prezentacje


Prezentacja na temat: "Obliczenia w Matlabie Optymalizacja"— Zapis prezentacji:

1 Obliczenia w Matlabie Optymalizacja
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania

2 Optymalizacja „Dążenie człowieka do perfekcji znajduje swój wyraz w optymalizacji. Zajmuje się ona tym, jak opisać i osiągnąć Najlepsze, gdy wiemy już jak mierzyć i zmieniać Dobre i Złe […].” Beightler C. S., Phillips D. T., Wilde D. J., Foundations of optimization, Englewood Cliffs, N.J., Prentice-Hall, 1979.

3 Zadanie optymalizacji

4 Zbiór rozwiązań dopuszczalnych

5 Funkcja celu

6 Minimum globalne

7 Metody optymalizacji Programowanie liniowe, Metody bezgradientowe (bezpośredniego szukania), Metody gradientowe, Metody niedeterministyczne.

8 [x_opt y_opt] = bintprog(f,A,b,Aeq,beq)
Problem binarny Wektor x może przyjmować jedynie wartości 0 lub 1. Szukamy maksimum funkcji celu: przy ograniczeniach: [x_opt y_opt] = bintprog(f,A,b,Aeq,beq) Funkcja bintprog szuka minimum funkcji celu przy ograniczeniach nierównościowych (zmienne A i b) oraz równościowych (zmienne Aeq i beq). Wartości zwracane to wektor zmiennych decyzyjnych x_opt oraz wartość funkcji celu y_opt.

9 Dyskretny problem plecakowy
Przy podanym zbiorze elementów o podanej wadze i wartości, należy wybrać taki podzbiór by suma wartości była możliwie jak największa, a suma wag była nie większa od danej pojemności plecaka. Lp. Wartości Waga 1 75 7 2 270 8 3 250 6 4 35 5 10 100 9

10 Dyskretny problem plecakowy
Znak minus jest konieczny ponieważ szukamy maksymalnej wartości plecaka a funkcja bintprog szuka wartości minimalnej f=-[ ]; A=[ ]; b=10; [x_opt y_opt]=bintprog(f,A,b) Optimization terminated. x_opt = 1 y_opt = -285 Lp Wartości Waga 1 75 7 2 270 8 3 250 6 4 35 5 10 100 9

11 Dyskretny problem plecakowy
Dodatkowe ograniczenie: zabierając przedmiot nr 3 musimy zabrać przedmiot nr 5 i odwrotnie. f=-[ ]; A=[ ]; b=10; Aeq=[ ]; beq=0; [x_opt y_opt]=bintprog(f,A,b,Aeq,beq) Optimization terminated. x_opt = 0 1 y_opt = -270 Lp Wartości Waga 1 75 7 2 270 8 3 250 6 4 35 5 10 100 9

12 Szukamy maksimum funkcji celu: przy ograniczeniach:
Problem linowy Szukamy maksimum funkcji celu: przy ograniczeniach: [x_opt y_opt] = linprog(f,A,b,Aeq,beq,lb,ub) Funkcja linprog szuka minimum funkcji celu przy ograniczeniach nierównościowych (zmienne A i b), równościowych (zmienne Aeq i beq) oraz kostkowych (zmienne lb i ub). Wartości zwracane to wektor zmiennych decyzyjnych x_opt oraz wartość funkcji celu y_opt.

13 Ciągły problem plecakowy
f=-[ ]; A=[ ]; b=10; [x_opt y_opt]=linprog(f,A,b) Exiting: One or more of the residuals, duality gap, or total relative error has grown times greater than its minimum value so far: the dual appears to be infeasible (and the primal unbounded). (The primal residual < TolFun=1.00e-008.) x_opt = 1.0e+014 * y_opt = e+016

14 Ciągły problem plecakowy
f=-[ ]; A=[ ]; b=10; lb=[ ]; [x_opt y_opt]=linprog(f,A,b,[],[],lb) Optimization terminated. x_opt = y_opt =

15 Poszukiwanie minimum funkcji jednej zmiennej z ograniczeniami
lb=-2; ub=5; [x_opt y_opt]=fminbnd(f,lb,ub) x_opt = 2 y_opt = 0 Funkcja fminbnd wykorzystuje metodę złotego podziału oraz aproksymacji kwadratowej Uchwyt do funkcji celu Dolne ograniczenie Górne ograniczenie

16 Poszukiwanie minimum funkcji wielu zmiennych bez ograniczeń
function y=fun_celu(x) y=(x(1)-5).^2+(x(2)-5).^2; [x_opt x_opt = y_opt = e-009 Funkcja celu jest zdefiniowana w osobnym pliku o nazwie fun_celu Uchwyt do funkcji celu Punkt startowy Funkcja fminsearch wykorzystuje metodę sympleks Neldera-Meada

17 Poszukiwanie minimum funkcji wielu zmiennych bez ograniczeń
[x_opt y_opt]=fminunc(f,[2;2]) Warning: Gradient must be provided for trust-region algorithm; using line-search algorithm instead. > In fminunc at 365 Local minimum found. Optimization completed because the size of the gradient is less than the default value of the function tolerance. <stopping criteria details> x_opt = 0 y_opt = Funkcja fminunc wykorzystuje metodę gradientową

18 Poszukiwanie minimum funkcji wielu zmiennych bez ograniczeń
2*x(2)]; opcje=optimset('GradObj','on'); [x_opt y_opt]=fminunc({f;g},[2;2],opcje) Local minimum found. Optimization completed because the size of the gradient is less than the default value of the function tolerance. <stopping criteria details> x_opt = 0 y_opt =

19 Poszukiwanie minimum funkcji wielu zmiennych bez ograniczeń
function [y dy]=fun_celu(x) syms X Y f=X.^2+Y.^2; g=gradient(f); X=x(1); Y=x(2); y=eval(f); dy=eval(g); Utworzenie dwóch zmiennych symbolicznych opcje=optimset('GradObj','on'); [x_opt Local minimum found. Optimization completed because the size of the gradient is less than the default value of the function tolerance. <stopping criteria details> x_opt = y_opt = Zdefiniowanie funkcji celu (również zmienna symboliczna) Zdefiniowanie gradientu funkcji f Zmiennym X oraz Y przypisujemy konkretne wartości liczbowe Obliczamy wartość funkcji i jej gradientu w punkcie o współrzędnych X oraz Y

20 Poszukiwanie minimum funkcji wielu zmiennych z ograniczeniami
[x_opt Uchwyt do funkcji celu Ograniczenia nierównościowe Ograniczenia kostkowe Punkt startowy Ograniczenia równościowe Ograniczenia nieliniowe function [c ceq]=ograniczenia(x) c=…; ceq=…;

21 Poszukiwanie minimum funkcji wielu zmiennych z ograniczeniami
Funkcja celu function y=fun_celu(x) y=(x(1)-5).^2+(x(2)-5).^2; A=[1,1]; b=5; [x_opt x_opt = y_opt =

22 Poszukiwanie minimum funkcji wielu zmiennych z ograniczeniami
Funkcja celu function y=fun_celu(x) y=(x(1)-5).^2+(x(2)-5).^2; A=[1,1]; b=5; Aeq=[0,1]; beq=5; [x_opt x_opt = 0 5 y_opt = 25

23 Poszukiwanie minimum funkcji wielu zmiennych z ograniczeniami
Funkcja celu function y=fun_celu(x) y=(x(1)-5).^2+(x(2)-5).^2; function [c ceq]=ograniczenia(x) c=x(1).^2+x(2).^2-4; ceq=[]; [x_opt x_opt = y_opt = Funkcja z ograniczeniami nieliniowymi

24 Poszukiwanie minimum funkcji wielu zmiennych z ograniczeniami
Algorytm genetyczny [x_opt Rozmiar przestrzeni poszukiwań function [c ceq]=ograniczenia(x) c=…; ceq=…;

25 Poszukiwanie minimum wielu funkcji wielu zmiennych z ograniczeniami
[x_opt Argumenty jak przy funkcji fmincon. Minimalizowana funkcja celu zwraca wektor (wiele funkcji celu). Funkcja fminimax poszukuje rozwiązania minimalizującego wszystkie funkcje celu. function y=fun_celu(x) y(1)=(x-1).^2; y(2)=(x+1).^2; [x_opt x_opt = e-016 y_opt =

26 Dwukryterialna optymalizacja belki
Belka o długości l i przekroju kołowym o średnicy d jest obciążona siłą P. Ugięcie belki pod wpływem działania siły wynosi: występujące naprężenie wynosi:

27 Dwukryterialna optymalizacja belki
Zadanie polega na wyznaczeniu wymiarów belki: aby zapewnić minimalną masę belki oraz minimalne ugięcie. Dodatkowymi ograniczeniami są maksymalne ugięcie belki oraz maksymalne naprężenie wynoszące odpowiednio:

28 Dwukryterialna optymalizacja belki
ro=7800; P=1e3; E=207e9; u_max=5e-3; sigma_max=300e6; l_lim=[200,1000]*1e-3; d_lim=[10,50]*1e-3;

29 Dwukryterialna optymalizacja belki
l=linspace(l_lim(1),l_lim(2),100); d=linspace(d_lim(1),d_lim(2),100); D=[]; P=[]; for i=1:length(l) for j=1:length(d) if u([l(i);d(j)])<u_max && sigma([l(i);d(j)])<sigma_max D(:,end+1)=[l(i);d(j)]; P(:,end+1)=[m([l(i);d(j)]);u([l(i);d(j)])]; end

30 Dwukryterialna optymalizacja belki
figure('Color',[1 1 1]); plot(D(1,:),D(2,:),'.'); set(gca,'FontSize',28); xlabel('l[m]'); ylabel('d[m]'); plot(P(1,:),P(2,:),'.') xlabel('m[kg]'); ylabel('u[m]');

31

32 Normalizacja max_m=m([l_lim(2);d_lim(2)]); min_m=m([l_lim(1);d_lim(1)]); max_u=u([l_lim(2);d_lim(1)]); min_u=u([l_lim(1);d_lim(2)]);

33 Optymalizacja dwukryterialna
x_opt=fminimax(f,… [range(l_lim)*rand+l_lim(1);range(d_lim)*rand+d_lim(1)],... function [c ceq]=limits(x,u,sigma,u_max,sigma_max) ceq=[]; c=[u(x)-u_max;sigma(x)-sigma_max]; x_opt=[200mm; 18.9mm] m(x_opt)= kg u(x_opt)= mm

34 Metoda sumy ważonej w=0:0.01:1;n=length(w); M=zeros(1,n); U=zeros(1,n); for i=1:n x_opt=fmincon(f,… [range(l_lim)*rand+l_lim(1);range(d_lim)*rand+d_lim(1)],... M(i)=m(x_opt); U(i)=u(x_opt); end

35 Metoda sumy ważonej figure('Color',[1 1 1]); plot(M,U,'*','MarkerSize',20,'LineWidth',3) set(gca,'FontSize',28); xlabel('m[kg]'); ylabel('u[m]');

36 Problem pokrycia Zadanie polega na rozmieszczeniu n kół o promieniu r w taki sposób, aby maksymalnie pokryć obszar prostokątny. Koła nie mogą wychodzić poza obszar. Dane: a=0 b=1 n=10 r=0.15

37 Rysowanie kół r=0.15; a=0; b=1; n=10; X=a+r+(b-a-2*r)*rand(n,2); t=0:0.01:2*pi; for i=1:n x=r*sin(t)+X(i,1); y=r*cos(t)+X(i,2); fill(x,y,'g','FaceAlpha',0.5) hold on end axis equal set(gca,'XLim',[a b]); set(gca,'YLim',[a b]); set(gcf,'Color',[1,1,1]);

38 Uruchomienie optymalizacji
X=reshape(X,2*n,1); [X_opt [],[],[],[],(a+r)*ones(2*n,1),(b-r)*ones(2*n,1)); X_opt=reshape(X_opt,n,2);

39 Funkcja celu Minimalizacja części wspólnych każdej pary okręgów

40 Funkcja celu function y=fun(x,r,n) x=reshape(x,n,2); y=0; for i=1:n-1 for j=i+1:n y=y+max(0,2*r-norm(x(i,:)-x(j,:))); end

41

42 Dodatkowo środki kół muszą leżeć pod krzywą x2=x12.

43 function [c,ceq]=ogr(x,n) x=reshape(x,n,2); c=x(:,2)-x(:,1)
function [c,ceq]=ogr(x,n) x=reshape(x,n,2); c=x(:,2)-x(:,1).^2; ceq=[]; X=reshape(X,2*n,1); [X_opt X_opt=reshape(X_opt,n,2);

44 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie:


Pobierz ppt "Obliczenia w Matlabie Optymalizacja"

Podobne prezentacje


Reklamy Google