Advertisement
ikov34

OM nal3 maj 2008

Jan 6th, 2021
1,015
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.07 KB | None | 0 0
  1. % Hiter zapis funkcije v obliki anonimne funkcije, brez potrebe po ločenem
  2. % fajlu
  3. f = @(x) (x(1)-2)^2 + (x(2)-1)^2;
  4.  
  5. % Omejitve matrične enačbe Ax=b - tu ne pridejo v poštev
  6. A = [];
  7. b = [];
  8. Aeq = [];
  9. beq = [];
  10.  
  11. % Spodnje in zgornje meje spremenljivk
  12. % - pridejo v poštev samo, če so eksplicitno navedene
  13. % če bi npr. veljalo 1<=x1,x2<=5,
  14. % bi zapisali:
  15. % lb = 1.0 * ones(2);
  16. % ub = 5.0 * ones(2);
  17.  
  18. lb = [];
  19. ub = [];
  20.  
  21. for x = -2:2
  22.     for y = -2:2
  23.         x0 = [x,y];
  24.         val = fmincon(f,x0,A,b,Aeq,beq,lb,ub, @nlcon);
  25.         % Minimalni x1,x2
  26.         fprintf('Rezultat: [%.5f %.5f]\n', val);
  27.         % Funkcijska vrednost
  28.         fprintf('Vrednost: %.5f\n', f(val));
  29.     end    
  30. end
  31.  
  32.  
  33. % Funkcija za omejitev - nelinearna optimizacija
  34. function [c,ceq] = nlcon(x)
  35.   %Za vsako nelinearno neenačbo moramo narediti c(1),c(2)... itd.  
  36.   %fmincon vedno minimizira f(x) <= 0, tak da mora bit neenačaj
  37.   %ustrezno obrnjen!!!
  38.   c(1) = x(1)+x(2)-2;
  39.   c(2) = x(1)^2-x(2);
  40.   % ceq v tem primeru ne rabimo, ker so samo neenačbe
  41.   ceq = [];
  42. end
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement