init
This commit is contained in:
26
FOTF Toolbox/fpidfuns.m
Normal file
26
FOTF Toolbox/fpidfuns.m
Normal file
@ -0,0 +1,26 @@
|
||||
function [fy,C]=fpidfuns(x)
|
||||
% fpidfuns - general objective function for optimum fractional-order PID
|
||||
|
||||
% Copyright (c) Dingyu Xue, Northeastern University, China
|
||||
% Last modified 28 March, 2017
|
||||
% Last modified 18 May, 2022
|
||||
global G t key1 key2 C
|
||||
s=fotf('s'); t=t(:);
|
||||
switch key1
|
||||
case {'fpid',1}, C=x(1)+x(2)*s^(-x(4))+x(3)*s^(x(5));
|
||||
case {'fpi',2}, C=x(1)+x(2)*s^(-x(3));
|
||||
case {'fpd',3}, C=x(1)+x(2)*s^x(3);
|
||||
case {'fpidx',4}, C=x(1)+x(2)/s+x(3)*s^x(4);
|
||||
case {'pid','PID',5}, C=x(1)+x(2)/s+x(3)*s;
|
||||
end
|
||||
dt=t(2)-t(1); e=step(feedback(1,G*C),t); e=e(:).';
|
||||
switch key2
|
||||
case {'itae','ITAE',1}, fy=dt*abs(e)*t;
|
||||
case {'ise','ISE',2}, fy=dt*sum(e.^2);
|
||||
case {'iae','IAE',3}, fy=dt*sum(abs(e));
|
||||
case {'itse','ITSE',4}, fy=dt*e.^2*t;
|
||||
otherwise
|
||||
error('Available criteria are itae, ise, iae, itse.')
|
||||
end
|
||||
disp([x(:).' fy])
|
||||
end
|
Reference in New Issue
Block a user