资源简介

pid单纯形法,东北大学,计算机控制课程设计

资源截图

代码片段和文件信息

clc;clear;close all;%清除变量、窗体、及工作区间
global rin yout timef

%*********第一步:单纯形替换法变量准备及设定***********
x0 = [1 0.8 0.8];%Kp,Ti,Td初始值
l = 1e-6;%单纯形棱长
r = 1;%反射系数Gama,通常取1
e = 2;%延伸系数,通常取2
n = 3;%n = 3表示问题为三维空间最优点求解
c = 0.5;%收缩系数,通常取0.5
Maxstep = 1000;%迭代最大次数
MarginErr = 5e-13;%误差限,一部西路
Bestv = zeros(1 3);%最优解
Bestf = 0;%最优解对应的函数值
[v f] =  Initialize(x0 n l);%调用初始化函数

%**第二步:单纯形反射,延伸,收缩,减小棱长得到最优点****
Deltarecord = [];%误差记录矩阵
frecord = [];%函数值记录矩阵
for i = 1 : Maxstep
    %调用FYSJ函数求的下一次迭代所需要的单纯形
    [Nextv Nextf Delta Meanf] = FYSJ(v f r e c n);
    Deltarecord = [Deltarecord Delta];%记录误差
    if (Delta < MarginErr)
        for i = 1 : 3
           Bestv(i) = sum(Nextv(: i)) / (n + 1);
        end
        Bestf = Targetf(Bestv);
        frecord = [frecord Bestf];%记录函数值
        break;
    else
        v = Nextv;
        f = Nextf;
        frecord = [frecord Meanf];%记录函数值
    end
end
%********第三步:做出误差收敛曲线,函数值变化曲线*******
figure;
%误差收敛曲线
[msize nsize] = size(Deltarecord);
t = 1 : nsize;
plot(t Deltarecord ‘b‘);
xlabel(‘时间‘);ylabel(‘误差‘);
title(‘误差收敛曲线‘);
figure;
%函数值变化曲线
[msize nsize] = size(frecord);
t = 1 : nsize;
plot(t frecord ‘b‘);
xlabel(‘时间‘);ylabel(‘函数值‘);
title(‘二次型性能指标收敛曲线‘);
%系统响应图
figure;
hold on;
plot(timef yout);
xlabel(‘时间‘);ylabel(‘输出‘);
title(‘整定后系统阶跃响应图‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1416  2012-11-19 17:14  piddanchn\danchunmain.asv

     文件       1614  2012-12-12 09:56  piddanchn\danchunmain.m

     文件        586  2012-11-01 11:51  piddanchn\Error.m

     文件       1905  2012-11-01 11:04  piddanchn\FYSJ.m

     文件        726  2012-11-01 10:41  piddanchn\Initialize.m

     文件        908  2012-11-19 17:29  piddanchn\Targetf.asv

     文件        910  2012-11-22 14:59  piddanchn\Targetf.m

     目录          0  2012-11-19 22:10  piddanchn

----------- ---------  ---------- -----  ----

                 8065                    8


评论

共有 条评论