基于遺傳算法的PID參數整定研究
基于遺傳算法的PID參數整定研究(七-九)是基于精确的傳遞函數進行優化,其本質是将優化對象簡化為一階或者二階的傳遞函數,在.m程式上進行編寫其零極點模型,進而應用遺傳算法對其進行參數整定。
然而,實際情況是大多數的被控對象往往其傳遞函數難以獲得,無法運用經典控制理論進行合理化的模型建立。比如針對含有SVPWM的雙閉環矢量控制系統,含離散元器件的系統,以及非線性的單元等等。是以,有必要建立一種直接聯合Simulink仿真模型的線上參數整定。
1.3.4遺傳算法聯合Simulink仿真下的參數整定
當被控對象為雙閉環矢量PI控制系統,采取實數編碼優化的三個決策變量分别為kP,ki,Ba,使用的樣本個數為5,交叉機率和變異機率分别為:Pc=0.9,Mu=0.033。設定優化區間分别為:參數kP的取值範圍為[0,1],ki的取值範圍為[0,7],Ba的取值範圍為[0,0.02]。經過5代進化,獲得的優化參數如下:
kP=0.1317,ki=1.4187,Ba=0.0035,性能名額J=0.0342,整定過程中代價函數J的變化如圖15所示。優化後空載工況下的轉速響應波形如圖16所示。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL3VFRNVTUq1UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0QDOyIDOyMTM0ETNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
圖14 永磁同步電機的雙閉環矢量PI控制系統
主函數 main.m
clc,
clear all; %#ok<CLALL>
tic %計時開始
global w1 w2 yout ycrtl simout1
%% 電機參數設定
Ts = 1e-5;
Pn = 4;
flux = 0.1827;
R = 0.9585;
Ld = 0.00525;
Lq = 0.00525;
J = 0.0006329; %0.221515
B = 0.0003035;
Kt = 1.5*Pn*flux;
%% 遺傳算法優化參數
Size=5; % 種群大小30個 可行解
G=5; % 種群運作100次
CodeL=3; % 三個實數編碼 三個決策變量
rin = 1000.0000; %控制輸入
B=0;
% rand('state',sum(clock));
MinX(1)=zeros(1);
MaxX(1)=1*ones(1);
MinX(2)=0*ones(1);
MaxX(2)=7*ones(1);
MinX(3)=0*ones(1);
MaxX(3)=0.02*ones(1);
Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1);
Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1);
Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1);
BsJ=0;
%*************** Start Running ***************
for kg=1:1:G
time(kg)=kg;
%****** Step 1 : Evaluate BestJ ******
for i=1:1:Size
Kpidi=Kpid(i,:); %單個可行解
Kp = Kpidi(1); %回報d-q軸電流
Ki = Kpidi(2);
Ba = Kpidi(3);
clc,
simout1 = sim('PMSM_PI_decomposition'); % 時間輸出
clc,
%目标函數
P = length(simout1);
yout = w1; %轉速回報值
ycrtl = w2; %轉速控制輸入
error = yout-rin; %轉速偏差
A = roundn(yout,-4); %一維數組
num = round(P*0.618);
ymax = max(A); %最大值
Value =roundn(mean(yout(num:P-1,1)),-4);%一個數值
%% 上升時間
[row1 col1]=find(ymax==A);
tu1=simout1(row1);
%% 調節時間,允許的誤差範圍内
% [row2 col2]=find(rin==A);
% tu2=simout1(row2);
%% 誤差調節
% B=0.001*sum(abs(error(num)));
% for i=1:1:P
% if i>1
% erry(i)=w1(i)-w1(i-1);
% if erry(i)<0
% B=B+100*(abs(erry(i)));
% end
% end
% end
BsJ=B+(tu1)*10;
% [Kpidi,BsJ]=chap_f1(Kpidi,BsJ);
BsJi(i)=BsJ; %%BsJi優化參數的數值矩陣
end
[OderJi,IndexJi]=sort(BsJi);
BestJ(kg)=OderJi(1);
BJ=BestJ(kg);
Ji=BsJi+1e-10; %Avoiding deviding zero
fi=1./Ji;
% Cm=max(Ji);
% fi=Cm-Ji;
[Oderfi,Indexfi]=sort(fi); %Arranging fi small to bigger
Bestfi=Oderfi(Size); %Let Bestfi=max(fi)
BestS=Kpid(Indexfi(Size),:); %Let BestS=E(m), m is the Indexfi belong to max(fi)
kg
BJ
BestS
%****** Step 2 : Select and Reproduct Operation******
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size); % Selecting Bigger fi value
r=Size-sum(fi_S);
Rest=fi_Size-fi_S;
[RestValue,Index]=sort(Rest);
for i=Size:-1:Size-r+1
fi_S(Index(i))=fi_S(Index(i))+1; % Adding rest to equal Size
end
k=1;
for i=Size:-1:1 % Select the Sizeth and Reproduce firstly
for j=1:1:fi_S(i)
TempE(k,:)=Kpid(Indexfi(i),:); % Select and Reproduce
k=k+1; % k is used to reproduce
end
end
%************ Step 3 : Crossover Operation ************
Pc=0.90;
for i=1:2:(Size-1)
temp=rand;
if Pc>temp %Crossover Condition
alfa=rand;
TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);
TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);
end
end
TempE(Size,:)=BestS;
Kpid=TempE;
%************ Step 4: Mutation Operation **************
Pm=0.10-[1:1:Size]*(0.01)/Size; %Bigger fi,smaller Pm
Pm_rand=rand(Size,CodeL);
Mean=(MaxX + MinX)/2;
Dif=(MaxX-MinX);
for i=1:1:Size
for j=1:1:CodeL
if Pm(i)>Pm_rand(i,j) %Mutation Condition
TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);
end
end
end
%Guarantee TempE(Size,:) belong to the best individual
TempE(Size,:)=BestS;
Kpid=TempE;
end
Bestfi
BestS
Best_J=BestJ(G)
figure(1);
plot(time,BestJ);
xlabel('Times');ylabel('Best J');
% figure(2);
% plot(timef,rin,'r',timef,yout,'b');
% xlabel('Time(s)');ylabel('rin,yout');
toc %計時結束
圖15 優化前空載工況下的轉速響應波形
圖16 優化後空載工況下的轉速響應波形
圖17 代價函數J的變化過程
由圖15和圖16可知,優化後的性能對比,超調明顯減小,但是穩态性能卻變差了,是以對于處于沖突性質的性能名額無法做到二者兼得。是以,可以運用多目标優化算法對其進行改進并進行線上參數整定。