Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Hiter zapis funkcije v obliki anonimne funkcije, brez potrebe po ločenem
- % fajlu
- f = @(x) (x(1)-2)^2 + (x(2)-1)^2;
- % Omejitve matrične enačbe Ax=b - tu ne pridejo v poštev
- A = [];
- b = [];
- Aeq = [];
- beq = [];
- % Spodnje in zgornje meje spremenljivk
- % - pridejo v poštev samo, če so eksplicitno navedene
- % če bi npr. veljalo 1<=x1,x2<=5,
- % bi zapisali:
- % lb = 1.0 * ones(2);
- % ub = 5.0 * ones(2);
- lb = [];
- ub = [];
- for x = -2:2
- for y = -2:2
- x0 = [x,y];
- val = fmincon(f,x0,A,b,Aeq,beq,lb,ub, @nlcon);
- % Minimalni x1,x2
- fprintf('Rezultat: [%.5f %.5f]\n', val);
- % Funkcijska vrednost
- fprintf('Vrednost: %.5f\n', f(val));
- end
- end
- % Funkcija za omejitev - nelinearna optimizacija
- function [c,ceq] = nlcon(x)
- %Za vsako nelinearno neenačbo moramo narediti c(1),c(2)... itd.
- %fmincon vedno minimizira f(x) <= 0, tak da mora bit neenačaj
- %ustrezno obrnjen!!!
- c(1) = x(1)+x(2)-2;
- c(2) = x(1)^2-x(2);
- % ceq v tem primeru ne rabimo, ker so samo neenačbe
- ceq = [];
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement