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

📄 danchunxing.m

📁 一个控制系统的PID参数寻优的单纯形法的MATLAB的程序
💻 M
字号:
u=1.6;v=0.4;h=0.1;
x0=[10 11 10 1];
e1=[1 0 0 0];
e2=[0 1 0 0];
e3=[0 0 1 0];
e4=[0 0 0 1];
x1=x0+h*e1;
x2=x0+h*e2;
x3=x0+h*e3;
x4=x0+h*e4;
A=[x0 x1 x2 x3 x4];   %设初值
N=0;qh=1;ql=2;               %循环次数
while abs(qh-ql)>0.001*abs(ql) | N<=100
q1=Q(A(1),A(2),A(3),A(4));
q2=Q(A(5),A(6),A(7),A(8));
q3=Q(A(9),A(10),A(11),A(12));
q4=Q(A(13),A(14),A(15),A(16));
q5=Q(A(17),A(18),A(19),A(20));
q=[q1,q2,q3,q4,q5];   %计算目标函数值
[xh,i]=max(q);[xl,j]=min(q); %计算最好点和最坏点
[xg,m]=second(q1,q2,q3,q4,q5);      %计算次坏点
k=1;
xG=[];xH=[];xL=[];
for k=1:4
    xH(k)=A(4*i-4+k);
end;
for k=1:4
    xG(k)=A(4*m-4+k);
end;    
for k=1:4
    xL(k)=A(4*j-4+k);
end;   
for k=1:4            
    xc(k)=(A(k)+A(k+4)+A(k+8)+A(k+12)+A(k+16)-xH(k))/4;  
end;
xR=2*xc-xH;         %计算反射点
qr=Q(xR(1),xR(2),xR(3),xR(4));  
ql=Q(xL(1),xL(2),xL(3),xL(4));
qg=Q(xG(1),xG(2),xG(3),xG(4));  
qh=Q(xH(1),xH(2),xH(3),xH(4)); 
if qr<qg
    xE=(1-u)*xH+u*xR;
     for k=1:4
       A(4*i-4+k)=xE(k);
     end;
end;
if qr>qg
    xS=(1-v)*xH+u*xR;
    qs=Q(xS(1),xS(2),xS(3),xS(4));
    if qs>qg
       for k=1:4
            A(k)=(xL(k)+A(k))/2;
            A(k+4)=(xL(k)+A(k+4))/2;
            A(k+8)=(xL(k)+A(k+8))/2;
            A(k+12)=(xL(k)+A(k+12))/2;
            A(k+16)=(xL(k)+A(k+16))/2;
       end;
    end;
end;    %得到新的单纯形
N=N+1;
end

⌨️ 快捷键说明

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