Politechnika Gdańska Wydział Oceanotechniki i Okrętownictwa St. II stop., sem. I Podstawy teorii optymalizacji Wykład 12 M. H. Ghaemi maj 2014 Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 96
Numeryczne rozwiązanie problemów optymalizacyjnych 1 Excel Solver Ładowanie dodatku Solver Dodatek (Add in) Solver dla programu MS Office Excel jest dostępny po zainstalowaniu pakietumicrosoftofficelub programuexcel. Abyużywać tego dodatku w programie Excel, należy go najpierw załadować. 1. Kliknij przycisk Microsoft Office programu Excel., a następnie kliknij przycisk Opcje 2. Kliknij ij pozycję Dodatki, a następnie w polu Zarządzaj wybierz pozycję Dodatki programu Excel. 3. Kliknij przycisk Przejdź. 4. W polu Dostępne dodatki zaznacz pole wyboru Solver, a następnie kliknij przycisk OK. Jeśli pozycja Solver nie jest wyświetlana w polu Dostępne dodatki, kliknij przycisk Przeglądaj, aby odnaleźć ten dodatek. Jeśli zostanie wyświetlony monit informujący, że dodatek Solver nie został zainstalowany na komputerze, kliknij przycisk Tak, aby go zainstalować. 5. Po załadowaniu dodatku Solver polecenie Solver będzie dostępne w grupie Analiza na karcie Dane. Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 97
Rozwiązanie problemu optymalizacji statycznej za pomocą SOLVER Przykład: Siłownia statku składająca się z 2 silników różnego rodzaju n 2 min F = c B ( P ) i 1 i i i B = i ( Pi ) = 0,5 + Pi + 0,1 P B i i ( Pi ) = 1 + n P P i 1 i = P0 = 1,5 P1 + P2 = P0 = 0 min. P = 0,4 P 1 0,4 i min. max. Pi Pi Pi max. P2 0,4 Pi = 1,0 n = 2 P1 1,0 ci = 1 c : jednostkowa cena paliwa i-tego silnika P 2 1, 0 i P 1 + P = 1,5 2 + 0,1 P 2 1 + 0,1 P 2 2 Siłownia statku składająca się z 2 silników różnego rodzaju Nazwa zmiennych decyzyjnych P1 P2 Wartości zmiennych decyzyjnych 0,7 0,8 Wartość funkcji celu problemu optymalizacji 2,613 Ograniczenia Lewa strona Prawa strona Ograniczenie 1 15 1,5 15 1,5 Ograniczenie 2 0,7 0,4 Ograniczenie 3 0,8 0,4 Ograniczenie i 4 07 0,7 10 1,0 Ograniczenie 5 0,8 1,0 Zmienne decyzyjne (dowolne wartości początkowe) Formuła wyznaczająca wartość funkcji celu Formuły wyznaczające wartości ograniczenia lewa str. Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 98
Dane Solver Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 99
Wyniki Microsoft Excel 12.0 Raport wyników Arkusz: [Przyklad_dwa_silniki.xlsx]Arkusz1 dwa Raport utworzony: 2014-06-05 01:09:55 Komórka celu (Min) Komórka Nazwa Wartość początkowa Wartość końcowań $C$5 Wartość funkcji celu problemu optymalizacji P2 2,613 2,6125 Komórki decyzyjne Wartość Komórka Nazwa Wartość początkowa końcowa $B$4 Wartości zmiennych decyzyjnych P1 0,7 0,75 $C$4 Wartości zmiennych decyzyjnych P2 0,8 0,75 Warunki ograniczające Komórka Nazwa Wartość komórki formuła Status Luz $B$7 Ograniczenie 1 Lewa strona 1,5 $B$7=$C$7 Niewiążące 0 $B$8 Ograniczenie 2 Lewa strona 0,75 $B$8>=$C$8 Niewiążące 0,35 $B$9 Ograniczenie 3 Lewa strona 0,75 $B$9>=$C$9 Niewiążące 0,35 $B$10 Ograniczenie 4 Lewa strona 0,75 $B$10<=$C$10 Niewiążące 0,25 $B$11 $ Ograniczenie 5 Lewa strona 0,75 $B$11<=$C$11 $ $ $ Niewiążące ąą 0,25 Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 100
Numeryczne rozwiązanie problemów optymalizacyjnych 2 MATLAB Film: Tips and Tricks Getting Started Using Optimization with MATLAB (na stronie mathworks.com) Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 101
Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 102
Wstęp do 'MATLAB Optimization Toolbox' na przykładzie układu napędu statku zawierającego dwóch silników. (Funkcja celu to koszt wytwarzanej energii) % Funkcja celu: F(P1,P2)=1.0+P1+P2+0.1*P1^2+0.1*P2^2; % Ograniczenia: 1) P1+P2=P, gdzie P=1.5 % 2) Pi_min <= Pi <= Pi_max, gdzie: Pi_min=0.4, Pi_max=1.0. % 3) 0.5+P1+0.1*P1^2 <= 1.0 % 0.5+P2+0.1*P2^2 <= 1.0 clear all % 1 napisać m.plik np. o nazwie 'koszty.m' zawerający funkcję celu % 2 zaproponować p punkt startowy P0=[1;1]; % 3 rozwiązanie przy użyciu funkcji 'fminunc' fminunc(@koszty, P0) % 4 więcej odpowiedzi [P, wartf] = fminunc(@koszty, P0) % 5 zmiana opcji opcje = optimset('largescale','off'); [P, wartf] = fminunc(@koszty, P0, opcje) % 6 więcej informacji o odp. [P, [, wartf, flagwyj, wyj] = fminunc(@koszty, P0, opcje) pj) % plik koszty.m % Definicja funkcji celu, tj. 'koszt' wytwarzania energii % function koszt = funkcja(p) koszt=1.0+p(1)+p(2)+0.1*p(1)^2+0.1*p(2)^2; Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 103
% 1) rozwiązanie przy ograniczenia liniowe typu równościowe funkcja 'fmincon' [P,wartF] = fmincon(@koszty,p0,[],[],[1 [1 1],[1.5]) % zmienić 'opcje' opcje = optimset('largescale','off', t('l ' ' 'Display','iter'); ' 'it ') % % 2) rozwiązanie i gdy dodatkowo d mamy ograniczenia i nieliniowe ilii nierównościowe ś i [P,wartF] = fmincon(@koszty,p0,[],[],[1 1],[1.5],[],[],@ograniczenia,opcje) % % 3) rozwiązanie przy wprowadzeniu ograniczeń na wartości brzegowe P(i) [P,wartF] = fmincon(@koszty,p0,[],[],[1 1],[1.5],[0.4;0.4],[1.0;1.0],@ograniczenia,opcje) % lub [P, wartf, flagwyj, wyj] = fmincon(@koszty,p0,[],[],[1 1],[1.5],[0.4;0.4],[1.0;1.0],@ograniczenia,opcje) % % plik ograniczenia.m % 4) można sprawdzić wartości funkcji ograniczeń w % punkcie rozwiązania [c ceq] = ograniczenia(p) % % Definicja funkcjiogranczeń nieliniowych % function [c ceq] = ogr(p) % ograniczenia nieliniowe typu nierównościowe c = [P(1)+0.1*P(1)^2 0.5; P(2)+0.1*P(2)^2 0.3]; % ograniczenia nieliniowe typu równościowe ceq = []; Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 104
% 5) wprowadzenie gradientu w sposób analityczny % a przygotowanie funkcji 'koszty_grad.m' oraz 'ograniczenia_grad.m' % które zawierają gradient funkcje celu oraz gradientu funkcji ograniczeń % b zmiana opcji opcje = optimset(opcje,'gradobj','on','gradconstr','on'); % rozwiązanie [P, [, wartf, flagwyj, wyj] = fmincon(@koszty y_g grad,p0,[],[],[1,[],[],[ 1],[1.5],[0.4;0.4],[1.0;1.0],@ograniczenia ; ],@ _g grad,opcje) % obliczenie gradientu oraz Hessian [P, wartf, flagwyj, wyj, lambda, grad, Hessian] = fmincon(@koszty_grad,p0,[],[],[1 1],[1.5],[0.4;0.4],[1.0;1.0],@ograniczenia_grad,opcje) % % 6) programowanie liniowe u ywanie funkcji 'linprog' ff(1:2)=koszty([1;1]); P=linprog(ff,[],[],[1.0 [1 1.0],[1.5],[0.4;0.4],[1;1],[1.0 10][15][04;04][1;1][1010]) 1.0]) % ============================================== % 7) Używanie funkcji 'fsolve' ('fzero' jest podobną ą funkcją, ale tylko % dla funkcji jednozmiennej) [x fval]=fsolve(@koszty, [1 1]) % plik koszty_grad.m % Definicja funkcji celu oraz jej gradient w sposób % analityczny % function [koszt gradkoszt]= funkcja(p) koszt = 10 1.0 + P(1) + P(2) + 0.1*P(1)^2 + 0.1*P(2)^2; gradkoszt=[1.0 + 0.2*P(1), 1.0 + 0.2*P(2)]; % plik ograniczenia_grad.m % Definicja funkcji ograniczeń nieliniowych oraz ich gradienty % function [c ceq, cgrad, ceqgrad] = ogr(p) % ograniczenia nieliniowe typu nierównościowe c = [P(1)+0.1*P(1)^2 0.5; 0.5; P(2)+0.1*P(2)^2 0.3]; cgrad = [1.0+0.2*P(1), 0; 0, 1.0+0.2*P(2)]; % ograniczenia nieliniowe typu równościowe ceq = []; ceqgrad = []; Podstawy teorii optymalizacji Oceanotechnika, II stop., sem. I 105