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