Advertisement
Guest User

fminunc AiR2018

a guest
Nov 17th, 2018
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.04 KB | None | 0 0
  1. Td = 0.1;
  2. init = [tutajTrzeba,daćJakieś,wartościZDupyOdKtórychZacznieOptymalizację];
  3. options = optimoptions('fminunc', ...
  4. 'FinDiffRelStep',[dupa,dupa,dupa], ... %dostosujcie sobie progi o jakie zwiększa/zmniejsza parametry optymalizator, wpływa na ilość iteracji
  5. 'Algorithm','quasi-newton', ... %quasi-newton bo nie mamy gradientu
  6. 'Diagnostics','on', ...
  7. 'PlotFcns',@optimplotfval, ...
  8. 'TolFun',0.001, ... %dosyć ważne, zależnie od tego znajduje optimum lub nie
  9. 'MaxFunEvals',1000); %yolo, na biednego nie trafiło
  10. [x,min] = fminunc(@optim,init,options);
  11.  
  12. function res = optim( param ) %najważniejsze, żeby optim przyjmowało interesujące parametry i zwracała skalar, który będzie optymalizowany
  13.     kp = param(1);
  14.     ki = param(2);
  15.     kd = param(3);
  16.     assignin('base','kp',kp); %tutaj ustawiamy zmienne globalne w workspace
  17.     assignin('base','ki',ki);
  18.     assignin('base','kd',kd);
  19.     sim('model'); %odpalamy simulinka
  20.     res = I.data(end); %ostatnia wartość wskaźnika optymalności zwróconego z simulinka
  21. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement