基于单纯形法的PID参数优化设计Word文件下载.docx
- 文档编号:21524793
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:100.74KB
基于单纯形法的PID参数优化设计Word文件下载.docx
《基于单纯形法的PID参数优化设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单纯形法的PID参数优化设计Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
和振荡周期
时,也可以用经验整定公式来确定PID控制器的参数,例如:
以上两种传统方法都是根据大量的实验计算或实际工程经验所得到的数据整理汇总所得到的公式而得来的,在实际的工程应用中有很大的弊端。
1.2.3单纯形法
单纯形是美国数学家G.B.丹齐克于1947年首先提出来的。
它的理论根据是:
线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。
单纯形法的基本思想是:
先找出一个基本可行解,对它进行鉴别,看是否是最优解;
若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;
若仍不是,则再转换,按此重复进行。
因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。
如果问题无最优解也可用此法判别。
单纯形法具有初值敏感性。
在初始条件选择不当的情况下,单纯形法无法寻找到合适的参数,控制目标无法满足要求。
同时单纯形法难以解决多值函数最优化问题。
在多参数寻优(如串级系统)问题中,容易造成寻优失败或时间过长。
1.2.4粒子群优化算法
粒子群优化(ParticleSwarmOptimization-PSO)算法是近年来发展起来的一种新的进化算法(EvolutionaryAlgorithm-EA)。
PSO算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质。
但是它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover)和“变异”(Mutation)操作。
它通过追随当前搜索到的最优值来寻找全局最优。
1.2.5差分进化算法
差分进化(DE)算法是一种采用浮点矢量编码的在连续空间中进行随机搜索的优化算法。
在差分进化算法中,首先由父代个体间的差分矢量构成变异算子;
接着按一定的概率,父代个体与变异个体之间进行交叉操作,生成一个试验个体;
然后在父代个体和试验个体之间根据适应度的大小进行选择操作,适应度大的保存到下一代群体中去。
1.2.6神经网络法
常规的PID参数优化方法中,直接基于目标函数的单纯形法等优化方法是最常用的方法,这是因为在工业控制中很多被控对象的模型难以用精确的数学模型描述,即使在某一工况下,被控对象可以用数学模型描述,但在运行过程中,对象的特性一旦发生变化,这一确定的模型便不再适用。
而神经网络的引人则在一定程度上解决和改善了这一问题。
在基于神经网络的PID参数优化方法中,神经网络一般与被控对象并列,作为一个神经网络的辨识器。
在网络经过学习后,神经网络辨识器的输出便可以很好地跟踪被控对象的输出。
由于神经网络辨识器具有确定的结构,学习之后,其连接权及各节点的闹值都有确定的数值。
这时,该神经网络辨识器的结构就可以作为被控对象结构的一个近似。
用神经网络辨识器输出与输人的传递函数模型来近似地代替被控对象的模型,进而用梯度下降法,拟牛顿法优化出PID参数。
1.3本论文主要工作
本论文的主要工作是研究利用单纯形法对二阶系统的PID控制器参数进行优化,并且使用Matlab对控制系统进行仿真。
首先,对单纯形法进行了介绍,包括单纯形的概念,单纯形算法的基本原理;
其次,以二阶系统为模型,利用单纯形法对其PID控制器参数进行优化,最后利用Matlab对优化后控制系统进行仿真研究。
二、单纯形算法
2.1单纯形算法简介
最优化方法按照搜索机制的不同,具体可以分为两类:
一类是解析算法,一类是直接法。
解析法是最优化问题的经典算法,但是必须求解目标函数的导数。
这时,就应该放弃求梯度的方法,而采用直接法。
直接法主要是在迭代过程中直接比较目标函数值的大小,再根据一定的收敛终止条件,获得最优解。
它的基本思想及迭代过程,直观易懂,易于为工程技术人员接受,但是它并未利用目标函数的性质及其解析性质,故收敛速度较慢。
适合用于处理低维问题。
单纯形是美国数学家家G.B.丹齐克于1947年首先提出来的。
单纯形法的基本过程是:
2.2单纯形基本思想
单纯形寻优算法的基本思想是:
对于非线性模型中的n个待估参数,以n+1个顶点构成最简单的图形,并对n+1个顶点的目标函数值进行比较,从结果来判断其变化的大致趋势,并作为下一步实验的参考,再利用一定的换点原则,使单纯形想最优点区域推进。
从这一点来说,单纯形算法也是一种实验最优化算法,纯粹从实验的角度来寻找最优目标。
在每次迭代时,利用已有的单纯形去寻找一个函数值更小的点,如果得到这样的一个更好的店,则用这个新点作为一个顶点构造新的单纯形。
否则的话,将已有单纯形缩小重复迭代。
2.3单纯形算法流程
Step1:
选取一组初始单纯形顶点
以及投影系数
、放大系数
和收缩系数
。
Step2:
计算各个顶点的目标函数值,找出目标函数最大值点
和最小值点
Step3:
计算投影中心点
,根据投影系数
确定投影点
Step4:
如果
,利用
代替
并形成一个新的单纯形,返回step2。
Step5:
放大单纯形。
令
,如果
,则放大成功,用
并形成一个新的单纯形,如果
,则放大失败,仍然
用代替
返回step2,继续投影过程。
Step6:
收缩单纯形。
如果对于除
外的所有点,都有
以及
,则用
并对单纯形缩小:
仍然缩小单纯形,但不改变先前的背投影点
;
来代替原来的被投影点
,再继续进行投影过程;
,则该收缩过程失败,此时用
来代替所有的
,然后继续进行投影过程。
Step7:
如果定点的相对误差满足给定的精度要求,则停止迭代,当前单纯性的形心即为最优点。
2.4单纯形算法的优缺点
单纯形算法的优点是不用求待求函数的一次倒数矩阵和海森矩阵,不用进行复杂的矩阵运算,占用内存小,计算工作量小,对初值的要求不严格,对于大型复杂的函数求机制,不会出现收敛性能不稳定的现象。
但是非线性规划单纯形算法也有很多的缺点,如单纯形算法的迭代次数太多,收敛速度缓慢,在迭代过程中有时会出现单纯形退化现象等,这些缺点严重影响了飞仙线性规划单纯形算法的使用。
单纯形法并没有很好地理论性质,即使收敛,收敛也是线性的。
但它具有简单使用的有点,计算表明单纯形方法十分可靠,特别低,它能处理函数值变化剧烈的函数。
本算法上机占用内存很少,对变量不多且精度要求不高的问题此法很方便,但当变量个数多于十个以上,此法就显得不十分有效。
三、二阶系统PID控制器参数整定过程
3.1连续对象离散化
由于工业领域中的被控对象一般为一阶或二阶环节,因此,在本文里我们拟定受控对象的传递函数为如下:
其中采样时间为1s。
利用零阶保持器法将
化成
如下:
由于
,控制量
与
之间的差分方程在程序可以如下实现:
3.2PID控制器离散化
理想模拟PID控制器的传递函数为:
采用后向差分将上式离散化,得:
增量式PID的后向差分方程为:
3.3性能指标
采用如下二次型性能指标函数:
其中
为常数,取值范围为
利用单纯形法不断计算目标函数值,从而得到最优的PID控制器的参数。
3.4实验结果分析
对象原阶跃响应图如下:
在程序中PID参数初始值选择为:
kp=1,ki=0.8,kd=0.8;
通过在MATLAB中调用程序整定PID控制器参数后,系统的阶跃响应图如下;
由系统阶跃响应图可以看出,通过整定后系统的静态指标和动态指标都达到了要求,这说明采用单纯形法整定PID参数是正确的、可行的。
在单纯形法程序中,选择各个顶点与单纯形的中心点的函数值的差值的平方和作为误差,误差限
,整定过程中误差收敛曲线如下:
从误差收敛曲线可以看出,单纯形虽然最终误差收敛到接近于0,但是中间却出现比较大的峰值变化,这说明在峰值变化出,单纯形法陷入了不利的条件,这是由于单纯形法对初值的敏感性所产生的。
性能指标
的收敛曲线如下:
从二次型性能指标的收敛曲线可以看出,在单纯形法的迭代过程中,目标函数值是一直减小的,这说明单纯形法收敛速度虽然慢,但是目标函数值是在降低的,解是在向最优解靠近的。
所以用单纯形法整定PID参数是可行的。
四、总结
PID控制器结构简单,容易实现,且鲁棒性好,因此广泛应用于各种控制领域,并取得了良好的控制效果。
单纯形算法是比较简单的算法之一,它过程简单易懂,在不需要考虑目标函数值性质的情况下就能找到问题的最优解。
本文将单纯形算法和PID控制结合起来应用于二阶系统的整定过程,利用单纯形算法来整定PID控制中的三个参数(Kp,Ki,Kd),取得了满意的效果。
单纯形算法算法运用于PID的参数整定,就可以克服常规PID整定方法的缺点,使要整定的参数精确收敛,从而使控制效果最优。
参考文献
[1]张磊,于单纯形法PID控制器的最优设计[J].信息与控制2004,33(3):
55-60.
[2]刘晓谦,王勇,穆顺勇.基于单纯形法的PID控制器参数优化设计[J].2004,21(11):
163-168.
[3]李勇,段正澄,胡伦骥.基于粒子群优化算法的液压伺服控制系统PID参数优化[D].华中科技大学.湖北武汉2007.
[4]周刘喜,张兴华,李纬.基于差分进化算法的PID优化设计[D].南京工业大学自动化学院,江苏南京2000.
[5]郭鹏,韩濮.基于神经网络的PID参数优化方法研究.华北电力大学动力系保定[D],2003.
程序附件:
clc;
clear;
closeall;
%清除变量、窗体、及工作区间
globalrinyouttimef
%*********第一步:
单纯形替换法变量准备及设定***********
x0=[10.80.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=[];
%函数值记录矩阵
fori=1:
Maxstep
%调用FYSJ函数求的下一次迭代所需要的单纯形
[Nextv,Nextf,Delta,Meanf]=FYSJ(v,f,r,e,c,n);
Deltarecord=[DeltarecordDelta];
%记录误差
if(Delta<
MarginErr)
fori=1:
3
Bestv(i)=sum(Nextv(:
i))/(n+1);
end
Bestf=Targetf(Bestv);
frecord=[frecordBestf];
%记录函数值
break;
else
v=Nextv;
f=Nextf;
frecord=[frecordMeanf];
end
%********第三步:
做出误差收敛曲线,函数值变化曲线*******
figure;
%误差收敛曲线
[msize,nsize]=size(Deltarecord);
t=1:
nsize;
plot(t,Deltarecord,'
b'
);
xlabel('
时间'
ylabel('
误差'
title('
误差收敛曲线'
%函数值变化曲线
[msize,nsize]=size(frecord);
plot(t,frecord,'
函数值'
二次型性能指标收敛曲线'
%系统响应图
holdon;
plot(timef,yout);
输出'
整定后系统阶跃响应图'
%%
%此函数用来建立系统模型,并求解目标函数
%Kpidi的三个参数分别为Kp,Ti,Td的值
%J为当前目标函数值
functionJ=Targetf(Kpidi)
ts=1;
%采样时间为1s
num=[0.0480.048*0.967];
den=[1-1.9050.905];
%采用零阶保持器离散化传递函数矩阵
rin=1.0;
%输入为阶跃输入
u_1=0.0;
u_2=0.0;
y_1=0.0;
y_2=0.0;
x=[0,0,0]'
;
error_1=0;
P=500;
%采样点数
fork=1:
1:
P
timef(k)=k*ts;
r(k)=rin;
u(k)=Kpidi
(1)*x
(1)+Kpidi
(2)*x
(2)+Kpidi(3)*x(3);
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(1)*u_1+num
(2)*u_2;
error(k)=r(k)-yout(k);
u_2=u_1;
u_1=u(k);
y_2=y_1;
y_1=yout(k);
x
(1)=error(k);
%误差值
x
(2)=(error(k)-error_1)/ts;
%误差变化量
x(3)=x(3)+error(k)*ts;
%误差积分
error_1=error(k);
J=0;
%目标函数J公式实现
fori=1:
P
J=J+error(i)^2+0.5*u(i)^2;
%此函数用来完成单纯形替换法变量准备及设定
%其中x0为Kp,Ti,Td初始值
%n为空间维度
%v为单纯形的n+1个顶点
%f为单纯形的n+1个顶点的函数值
function[v,f]=Initialize(x0,n,l)
p=l*(sqrt(n+1)+n-1)/(sqrt
(2)*n);
%z矩阵参数p
q=l*(sqrt(n+1)-1)/(sqrt
(2)*n);
%z矩阵参数q
z=zeros(n+1,n);
%初始化z矩阵
fori=2:
(n+1)
forj=1:
n
if((i-1)==j)
z(i,j)=p;
z(i,j)=q;
%初始化v1...vn,也是单纯形的n+1个顶点
v=zeros(n+1,n);
v(1,:
)=x0;
v(i,:
)=x0+z(i,:
%初始化顶点函数值矩阵
f=zeros(n+1,1);
f(i)=Targetf(v(i,:
));
%%%
%本函数根据单纯性求解最优点的法则求解最优点
%v,f为得到的初始单纯性
%Nextv为下一个单纯形
%Nextf为下一个单纯形函数值
%Delta为本次单纯形的误差
function[Nextv,Nextf,Delta,Meanf]=FYSJ(v,f,r,e,c,n)
[fh,h]=max(f);
%找出f中值最大的元素和其位置
[fl,l]=min(f);
v0=zeros(1,n);
%去掉最坏顶点后的(n-1)空间中单纯形的中心点
v0(i)=(sum(v(:
i))-v(h,i))/n;
vr=zeros(1,n);
vr=v0+r*(v0-v(h,:
%通过v0反射vGama
fr=Targetf(vr);
%%%开始判断,oh,mygod,it'
sreallyterrible%%%
if(fr<
fl)
%%%第一模块%%%
%如果fr<
fl,则继续延伸
ve=v0+e*(vr-v0);
fe=Targetf(ve);
if(fe<
=fl)
%如果fe<
fl
v(h,:
)=ve;
f(h)=fe;
[Delta,Meanf]=Error(v,f);
)=vr;
f(h)=fr;
else
%%%第二模块%%%
if(i==h)
continue;
if(fr<
f(i))
%%%第三模块%%%
if(fr>
fh)
vc=v0+c*(v(h,:
)-v0);
fc=Targetf(vc);
f(h)=Targetf(vr);
if(fc<
=fh)
)=vc;
f(h)=fc;
)=0.5*(v(i,:
)+v(l,:
Nextv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单纯 PID 参数 优化 设计