基于遺傳算法的PID整定_第1頁
基于遺傳算法的PID整定_第2頁
基于遺傳算法的PID整定_第3頁
基于遺傳算法的PID整定_第4頁
基于遺傳算法的PID整定_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、參數(shù)編碼遺傳操作種群1計算適配置滿足要求,即達(dá)到最大迭代次數(shù)解碼種群2尋優(yōu)結(jié)束種群1> 種群2復(fù)制交叉變異基于遺傳算法的PID整定流程圖% 基于遺傳算法的PID整定% 被控對象為二階函數(shù): 400% G(s) = -% S2+50S% 采樣時間為 1ms,輸入信號為階躍信號% 采用二進(jìn)制編碼方式,種群個體(kp,ki,kd)長度為10close all;clc;clear;global rin yout timef %定義全局變量G=100; %迭代次數(shù)Size=30; %種群大小CodeL=10; %種群個體長度(二進(jìn)制編碼)MinX=zeros(1,3); %約束條件,即kp,kd,

2、ki 的取值范圍MaxX(1)=20*ones(1); % kp in 0 20MaxX(2)=1.0*ones(1); % kd,ki in 0 1MaxX(3)=1.0*ones(1);E=round(rand(Size,3*CodeL); %初始化種群,編碼Bsj=0;for k=1:G %迭代次數(shù) time(k)=k; for s=1:Size m=E(s,:); y1=0;y2=0;y3=0; %輸出量初始化(十進(jìn)制) m1=m(1:CodeL); for i=1:CodeL y1=y1+m1(i)*2(i-1); %計算輸出量 end K(s,1)=(MaxX(1)-MinX(1)

3、*y1/1024+MinX(1); %解碼,計算Kp的取值 m2=m(CodeL+1:2*CodeL); for i=1:CodeL y2=y2+m2(i)*2(i-1); %計算輸出量 end K(s,2)=(MaxX(2)-MinX(2)*y2/1024+MinX(2); %解碼,計算Kd的取值 m3=m(2*CodeL+1:3*CodeL); for i=1:CodeL y3=y3+m1(i)*2(i-1); %計算輸出量 end K(s,3)=(MaxX(3)-MinX(3)*y1/1024+MinX(3); %解碼,計算Ki的取值 % *適應(yīng)度函數(shù)* KK=K(s,:); KK,Bs

4、j=pid_ga(KK,Bsj); % 調(diào)用 pid_ga.m Bsji(s)=Bsj; % 最優(yōu)代價值 end O,D=sort(Bsji); %最優(yōu)代價值排序 Bestj(k)=O(1) %取最小值 BJ=Bestj(k); Ji=Bsji+1e-10; fi=1./Ji; %適應(yīng)函數(shù)值 O2,D2=sort(fi); %適應(yīng)函數(shù)值排序 Bestfi=O2(Size); %取最大值 Bests=E(D2(Size),:); % * 選擇算子 * fi_sum=sum(fi); fi_size=(O2/fi_sum)*Size; fi_s=floor(fi_size); %取較大的適應(yīng)值,確

5、定其位置 kk=1; for i=1:Size for j=1:fi_s(i) %選擇,復(fù)制 tempE(kk,:)=E(D2(j),:); kk=kk+1; end end % * 交叉算子 * pc=0.6; %交叉概率 n=30*pc; for i=1:2:(Size-1) temp=rand; if pc>temp %交叉條件 for j=n:-1:1 tempE(i,j)=E(i+1,j); %新、舊種群個體交叉互換 tempE(i+1,j)=E(i,j); end end end tempE(Size,:)=Bests; E=tempE; % * 變異算子 * pm=0.00

6、1-1:1:Size*(0.001)/Size; %變異算子,從大到小 for i=1:Size for j=1:2*CodeL temp=rand; if pm>temp %變異條件 if tempE(i,j)=0 tempE(i,j)=1; else tempE(i,j)=0; end end end end tempE(Size,:)=Bests; E=tempE;endBJ,Bestfi,KKfigure(1),plot(time,Bestj);xlabel('Times');ylabel('Best J');figure(2),plot(time

7、f,rin,'r',timef,yout,'b');xlabel('Times');ylabel('rin,yout');function KK,Bsj=pid_ga(KK,Bsj)global rin yout timef ts=0.001;sys=tf(400,1,50,0); % 被控對象為二階傳遞函數(shù)dsys=c2d(sys,ts,'z'); %做Z變換num,den=tfdata(dsys,'v');rin=1.0; % 輸入信號為階躍信號 u_1=0.0;u_2=0.0; y_1=0.0

8、;y_2=0.0;x=0 0 0;B=0;err_1=0;tu=1;s=0;P=100;for k=1:P timef(k)=k*ts; r(k)=rin; u(k)=sum(KK.*x); %控制器輸出 if u(k)>=10 % 約束條件 u(k)=10; end if u(k)<=-10 u(k)=-10; end %跟蹤輸入信號 yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; err(k)=r(k)-yout(k); % * 返回 PID 參數(shù)* u_2=u_1;u_1=u(k); y_2=y_1;y_1=yout

9、(k); x(1)=err(k); %計算 P x(2)=(err(k)-err_1)/ts; %計算 D x(3)=x(3)+err(k)*ts; %計算 I err(2)=err_1; err_1=err(k); if s=0 if yout(k)>0.95&yout(k)<1.05 tu=timef(k); % tu為上升時間 s=1; % 進(jìn)入穩(wěn)態(tài)區(qū)域 end endendfor i=1:P % 求代價函數(shù)值 Ji(i)=0.999*abs(err(i)+0.01*u(i)2*0.1; B=B+Ji(i); if i>1 erry(i)=yout(i)-yout(i-1); % 系統(tǒng)誤差 if erry(i)<0 % 若產(chǎn)生超調(diào),采取懲罰措施 B=B+100*abs(erry(i); end endend

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論