1、PID神经元网络解耦控制算法讲解% 清空环境变量clcclear % 粒子初始化%粒子群算法中的两个参数c1=1.49445;c2=1.49445;%最大最小权值wmax=0.9;wmin=0.1;%最大最小速度Vmax=0.03;Vmin=-0.03;%最大最小个体popmax=0.3;popmin=-0.3; maxgen=50; % 进化次数 sizepop=20; %种群规模 %随机产生一个种群for i=1:sizepop pop(i,:)=0.03*rand(1,45); %个体编码 fitness(i)=fun(pop(i,:); %染色体的适应度 V(i,:)=0.003*ra
2、nds(1,45); %初始化速度end % 初始种群极值%找最好的染色体bestfitness bestindex=min(fitness);zbest=pop(bestindex,:); %全局最佳gbest=pop; %个体最佳fitnessgbest=fitness; %个体最佳适应度值fitnesszbest=bestfitness; %全局最佳适应度值 % 迭代寻优for i=1:maxgen i for j=1:sizepop w=(wmax-wmin)*(i-1)/(maxgen)+wmin; %权值线性变化 V(j,:)=w*V(j,:) + c1*rand*(gbest(j
3、,:) - pop(j,:) + c2*rand*(zbest - pop(j,:); %速度更新 V(j,find(V(j,:)Vmax)=Vmax; %小于最大速度 V(j,find(V(j,:)0.95 pop(j,k)=0.3*rand; %自适应变异 end end pop(j,find(pop(j,:)popmax)=popmax; %小于个体最大值 pop(j,find(pop(j,:)popmin)=popmin; %大于个体最小值 %适应度值 fitness(j)=fun(pop(j,:); end for j=1:sizepop %个体极值更新 if fitness(j)f
4、itnessgbest(j) gbest(j,:) = pop(j,:); fitnessgbest(j) = fitness(j); end %全局极值更新 if fitness(j)ynmax)=ynmax; yn(find(ynxpmax)=xpmax; xp(find(xpqimax)=qimax; qi(find(qiqdmax)=qdmax; qd(find(qduhmax)=uhmax; uh(find(uhuhmin)=uhmin; u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律 %-网络反馈修正- %计算误差 error=r1(k)-y1(
5、k);r2(k)-y2(k);r3(k)-y3(k); error1(k)=error(1);error2(k)=error(2);error3(k)=error(3); J(k)=0.5*(error(1)2+error(2)2+error(3)2); %调整大小 ypc=y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3); uhc=u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3); %隐含层和输出层权值调整 %调整w21 Sig1=sign(ypc./(uhc(1)+0.00001); dw21=sum(error.*Sig1)*
6、qo; w21=w21+rate2*dw21; %调整w22 Sig2=sign(ypc./(uh(2)+0.00001); dw22=sum(error.*Sig2)*qo; w22=w22+rate2*dw22; %调整w23 Sig3=sign(ypc./(uh(3)+0.00001); dw23=sum(error.*Sig3)*qo; w23=w23+rate2*dw23; %输入层和隐含层权值调整 delta2=zeros(3,3); wshi=w21;w22;w23; for t=1:1:3 delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uh
7、c(t)+0.00000001); end for j=1:1:3 sgn(j)=sign(h1i(j)-h1i_1(j)/(x1i(j)-x1i_1(j)+0.00001); end s1=sgn*r1(k),y1(k); wshi2_1=wshi(1:3,1:3); alter=zeros(3,1); dws1=zeros(3,2); for j=1:1:3 for p=1:1:3 alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j); end end for p=1:1:3 dws1(p,:)=alter(p)*s1(p,:); end w11=w11+r
8、ate1*dws1; %调整w12 for j=1:1:3 sgn(j)=sign(h2i(j)-h2i_1(j)/(x2i(j)-x2i_1(j)+0.0000001); end s2=sgn*r2(k),y2(k); wshi2_2=wshi(:,4:6); alter2=zeros(3,1); dws2=zeros(3,2); for j=1:1:3 for p=1:1:3 alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j); end end for p=1:1:3 dws2(p,:)=alter2(p)*s2(p,:); end w12=w12+rate1*dws2; %调整w13 for j=1:1:3 sgn(j)=sign(h3i(j)-h3i_1(j)/(x3i(j)-x3i_1(j)+0.0000001);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1