function [Gc,x,y]=fpidtune(x0,xm,xM,kAlg) % fpidtune - design of optimum fractional-order PID controllers % % [Gc,x,y]=fpidtune(x0,xm,xM,kAlg) % % x0 - initial parameters % xm, xM - boundary values of the decision variables % kAlg - optimization algorithm specifications % Gc - optimum FOPID controller % x - optimal decision variables % y - optimal value of the objective function % Copyright (c) Dingyu Xue, Northeastern University, China % Last modified 28 March, 2017 % Last modified 18 May, 2022 n=length(x0); if nargin==5, ff=optimset; ff.MaxIter=50; end switch kAlg case {1,2} x=fminsearchbnd(@fpidfuns,x0,xm,xM); case 3 x=patternsearch(@fpidfuns,x0,[],[],[],[],xm,xM); case 4 x=ga(@fpidfuns,n,[],[],[],[],xm,xM); case 5 x=particleswarm(@fpidfuns,n,xm,xM); end [y,Gc]=fpidfuns(x); end