⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wengby.rar.m

📁 在微分控制中
💻 M
字号:
global KP KI KDbdclose all;set_param(0,'CharacterEncoding','ISO-8859-1')testw1=4;w2=3;w3=2;w4=1;NIND = 40; % Number of individualsMAXGEN =30; % Maximum no. of generationsNVAR = 3; % No. of variablesPRECI =10; % Precision of variablesGGAP = 0.9; % Generation gap% Build field descriptorFieldD = [rep([PRECI],[1,NVAR])];FieldD(2:3,1) = [rep([0;5],[1,1])];FieldD(2:3,2) = [rep([0;5],[1,1])];FieldD(2:3,3) = [rep([0;5],[1,1])];FieldD(4:7,1:3) = rep([1;0;1;1],[1,NVAR]);% Initialise populationChrom = crtbp(NIND, NVAR*PRECI);gen = 0; % Counter% Evaluate initial populationA=bs2rv(Chrom,FieldD);ObjVCh=[];ii=1;while NIND>=ii    KP=KPP(ii,1);    KI=KII(ii,2);    KD=KDD(ii,3);    [t,x,y]=sim('test');subplot(3,1,1):plot(t,y);xlabel('time/s');ylabel('frequency/Hz');title('Output of every chromosome in system ');Ymax=max(y);k=1;white t(k)<max(t)if y(k)==Ymax;b(k)=t(k);else b(k)=max(t);endk=k+1;endtp=min(b);clear k;xx=1;M=1;l=0;while t(M)<max(t);if abs(y(M)-ref)<=0.02;l(xx)=t(M);else clear l;l=max(t);xx=1;endts=min(l);clear M;clear xx;clear l;MP=abs(Ymax-ref)/ref;clear k;oo=1;k=2;f=0;while oo<length(t)-1;if(y(k)-y(k-1))*(y(k+1)-y(k))<0;f=f+1;k=k+1;else k=k+1;endoo=oo+1;endclear k;f    [ObjVCh(ii,1)]=1/(w1*MP/0.01+w2*ts/7+w3*tp/5+w4*f/5);    ii=ii+1;end  clear ii;  f1=1;  ObjVChM=max(ObjVCh);while f1<=NIND,if ObjVChM=ObjVCh(f1,1);     KP=A(f1,1);    KI=A(f1,2);    KD=A(f1,3);endf1=f1+1;end% Generational loopwhile gen < MAXGEN,% Assign fitness values to entire populationFitnV = scaling(ObjVCh);% Select individuals for breedingSelCh = select('sus', Chrom, FitnV, GGAP);% Recombine individuals (crossover)SelCh = recombin('xovsp',SelCh,0.85);% Apply mutationSelCh = mut(SelCh,0.01);% Evaluate offspring, call objective functionA1=bs2rv(SelCh,FieldD);ObjVCh=[];ii=1;while (GGAP*NIND)>=ii    KP=A1(ii,1);    KI=A1(ii,2);    KD=A1(ii,3);[t,x,y]=sim('test');subplot(3,1,1):plot(t,y);xlabel('time/s');ylabel('frequency/Hz');title('Output of every chromosome in system ');Ymax=max(y);k=1;white t(k)<max(t)if y(k)==Ymax;b(k)=t(k);else b(k)=max(t);endk=k+1;endtp=min(b);clear k;xx=1;M=1;l=0;while t(M)<max(t);if abs(y(M)-ref)<=0.02;l(xx)=t(M);else clear l;l=max(t);xx=1;endts=min(l);clear M;clear xx;clear l;MP=abs(Ymax-ref)/ref;clear k;oo=1;k=2;f=0;while oo<length(t)-1;if(y(k)-y(k-1))*(y(k+1)-y(k))<0;f=f+1;k=k+1;else k=k+1;endoo=oo+1;endclear k;f[ObjVCh(ii,1)]=1/(w4*MP/0.01+w3*ts/7+w2*tp/5+w1*f/5);    ii=ii+1;clear KI KP KDend  clear ii;ObjVSelM=max(ObjVSel);% Reinsert offspring into population% Increment counter[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);A=bs2rv(SelCh,FieldD);f=1;  ObjVChM=max(ObjVCh);while f1<=NINDif ObjVChM=ObjVCh(f1,1);     KP=A(f1,1);    KI=A(f1,2);    KD=A(f1,3);endf1=f1+1;endgen = gen+1;Best(gen,1) = ObjVChM;Best(gen,2)=KP;Best(gen,3)=KI;Best(gen,4)=KD;geng(gen,1)=genBestmax(gen,1)=ObjVChMsubplot(3,1,3);plot(geng,Bestmax(1:gen,1),'ro',geng,Bestmax(1:gen,1),'g-');xlabel('gen')ylabel('fitness')title('every generation fitness')[t,x,y]=sim('test');subplot(3,1,2):plot(t,y,'r--');xlabel('time/s');ylabel('frequency/Hz');beependKP,KI,KD[t,x,y]=sim('test');subplot(3,1,2):plot(t,y,'r');xlabel('time/s');ylabel('frequency/Hz');title('Best output of the system ');beepbeep[t,x,y]=sim('test');subplot(3,1,1):plot(t,y);xlabel('time/s');ylabel('frequency/Hz');title('Output of every chromosome in system ');Ymax=max(y);k=1;white t(k)<max(t)if y(k)==Ymax;b(k)=t(k);else b(k)=max(t);endk=k+1;endtp=min(b)clear k;xx=1;M=1;l=0;while t(M)<max(t);if abs(y(M)-ref)<=0.02;l(xx)=t(M);else clear l;l=max(t);xx=1;endts=min(l);clear M;clear xx;clear l;MP=abs(Ymax-ref)/ref;clear k;oo=1;k=2;f=0;while oo<length(t)-1;if(y(k)-y(k-1))*(y(k+1)-y(k))<0;f=f+1;k=k+1;else k=k+1;endoo=oo+1;endclear k;f

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -