资源简介

PID参数可以通过工程整定方法整定,也可以通过使给定的性能指标达到最大或最小来确定。对于给定的性能指标,通过单纯形替换法寻优,得到使性能指标达到最小时的P I D 值。通过matlab编程实现。

资源截图

代码片段和文件信息

function [XminGmin]=DIEDAI(x0max_step)
%该函数用于进行单纯性替换,需要输入初始点坐标x0和终止限zz
n=length(x0);%问题的维度
[VGF]=CSDCX(x02);%得到单纯形矩阵与单纯形顶点函数值矩阵棱长l为2
[GF index]=sort(GF);%对单纯形顶点函数值排序  goalfunction
V=V(:index);%按照函数值排序的顺序对单纯形矩阵排序
%下面进行迭代准备,求出初始单纯形的最好,最差,次差及中心点
for k=1:max_step
    Vbest=V(:1);%最好点
        GFbest=GF(1);
    Vsoso=V(:n);%次差点
        GFsoso=GF(n);
    Vworst=V(:n+1);%最差点
        GFworst=GF(n+1);
    center = sum(V(:1:n)2)./ n;  %单纯形的中心点
    %下面进行反射,通过中心点center反射最差点Vworst得到反射点Vr(refelct)
    Vr=2*center-Vworst;%得到反射点向量
        GFr=feval(‘ZHIBIAO‘Vr);%反射点函数值
        if GFr            Ve=center+2*(Vr-center);%得到延伸点Ve(extend)
                GFe=feval(‘ZHIBIAO‘Ve);%得到延伸点函数值
            if GFe<=GFbest%如果延伸点比最好电还要好,则以延伸点Ve代替原最好点Vbest;否则,以反射点Vr代替原最好点Vbest
                V(:n+1) =Ve;
                GF(n+1) =GFe;
                %替换后需要重新形成单纯形
                    [GF index]=sort(GF);%排序
                    V=V(:index);%排序
                %单纯形更新完成
            else
                V(:n+1) =Vr;
                GF(n+1) =GFr;
                 %替换后需要重新形成单纯形
                    [GF index]=sort(GF);%排序
                    V=V(:index);%排序
                 %单纯形更新完成
            end%延伸点判断
        else
            if GFr                V(:n+1) =Vr;%用Vr代替Vworst
                GF(n+1) =GFr;
                 %替换后需要重新形成单纯形
                    [GF index]=sort(GF);%排序
                    V=V(:index);%排序
                 %单纯形更新完成
            else%如果反射点不比最差点好
                if GFr>GFworst%如果反射点不比最差点好,则收缩,收缩因子为0.5,得到收缩点Vs(shink)
                    Vs=center+0.5*(Vworst

评论

共有 条评论