PID参数优化和前馈控制Word文件下载.docx
《PID参数优化和前馈控制Word文件下载.docx》由会员分享,可在线阅读,更多相关《PID参数优化和前馈控制Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
PI
PID
至于纯迟延系统PID控制器的参数选择方法在实验十二继续阐述,在此不再累赘。
例:
针对传递函数为的对象设计PI控制器,使系统最终能够稳定下来,且超调量小于5%,稳定时间小于500s。
解:
根据经验公式可以大致确定一组PI系数使系统能够稳定下来。
对应的程序如下。
得到kp=0.8333,Ti=80。
对应的控制器的传递函数为,在相应的控制器的作用下系统的输出曲线如下。
从图像中可以观察到,经验公式得到的控制器虽然能使系统稳定下来,但输出品质却无法令人满意。
因此需要优化控制器的参数,进行精确寻找。
1.2.2精确寻找
经验法得到的控制器参数仅仅能够使系统稳定下来,但系统的品质往往并不是特别令人满意,因此需要进一步寻找更精确的控制器参数。
尽管精确寻找的算法很多,但这些算法的方向都一样的,即是在粗略PID参数附近利用各种方法搜寻使目标函数取最小值的kp、Ti和Td。
因此这一步的关键在于目标函数的确定和搜寻方法的选择。
1.2.2.1目标函数
目标函数用来衡量搜寻当中控制器参数的满意程度,它对于系统辨识或PID参数优化问题极为重要,直接影响最终的辨识或优化效果。
但目前并没有成型的理论可以系统地阐述什么样的条件下选用什么样的目标函数,只能通过经验来确定。
对于PID参数优化问题,常用的目标函数有以下这么4个。
、、、
为了便于写程序,将其写成累加的形式分别为。
其中t=i*dt,e=r-y(i)。
e表示整个系统输入值和输出值得差。
目标函数即是建立一个衡量系统品质的标准。
目标函数的值越小,相应的系统输出的控制品质越好。
这四种目标函数的侧重点又各有所不同。
更注重于系统的准确性,对系统的快速性没有直接的要求。
一般来说,由筛选出来的控制器超调量最小,但稳定时间往往并不是特别理想。
是在的基础上加上了对快速性的考虑,由筛选出来的控制器往往比得到的控制器在快速性上更胜一筹。
而类似的、也是在系统品质上有所侧重。
经过不同的目标函数得到的控制器的各项品质多多少少是有所不同。
但不管怎样,通过选择合适的目标函数总能让我们找到符合要求的最优的PID控制器。
4种目标函数对应的程序如下。
Q=0;
ifeType==1%
fori=1:
lp
e=r-y(i);
Q=Q+e*e*dt;
end
end
ifeType==2%
Q=Q+i*dt*dt*abs(e);
ifeType==3%
Q=Q+i*dt*dt*e*e;
ifeType==4%
Q=Q+i*dt*i*dt*dt*e*e;
此外,为了保证控制品质满足响应的要求(如超调量小于5%)还要对各项品质加入上限和惩罚因子。
一但某项品质超过上限,则惩罚因子就开始起作用。
惩罚因子是一个很大的数,当这一项起作用后目标函数的值会显著增大。
惩罚因子的加入形式也是有讲究的。
直接在目标函数上加入一个很大的数是无法表示不同系统品质的“越限程度”。
因此需要在惩罚因子上乘上一个比例系数。
形似如,其中EMP是超调量的上限,MP是实际输出的超调量。
对超调量、稳定时间加入上限的程序如下。
1.2.2.2搜寻方法
搜寻方法有很多种,在此以穷举法、随机搜索、以及PSO算法为例详细介绍。
1.2.2.2.1穷举法
利用经验公式得到PID控制器的粗略参数后,在其附近能够确定各项参数的一个范围。
之后选择合适的步长,在这个范围内寻优。
每次得到一组控制器的参数后,可以得到一个目标函数的返回值。
要记录下使目标函数值最小的控制器参数作为最优解。
继续上例,利用穷举法寻找控制器的最优参数,程序如下。
%穷举法PID参数优化
clc;
clearall;
closeall;
[kp,Ti]=first;
kpmin=0.6*kp;
kpmax=3*kp;
Timin=Ti;
Timax=3*Ti;
step_kp=0.1*kp;
step_Ti=0.1*Ti;
e=10^10;
kp_b=kpmin;
Ti_b=Timin;
to=clock;
forkp_find=kpmin:
step_kp:
kpmax
forTi_find=Timin:
step_Ti:
Timax
[ec,ym,tm]=fangzhen(kp_find,Ti_find);
ifec<
e
e=ec;
kp_b=kp_find;
Ti_b=Ti_find;
y_f=ym;
time1=etime(clock,to)
kp_b
Ti_b
得到的kp=1.25,Ti=224,对应的控制器的传递函数为。
对应的系统输出曲线为。
1.2.2.2.2随机搜索
随机搜索也是一种搜寻PID参数的简单方法。
相比较穷举法那种不遗漏的筛选方法,随机搜索的方式会快很多。
随机法主要利用了概率论的思想。
假设每个点都可能是最优点,那么没必要搜索所有的点。
只要随机的搜取最够多的点即有很大可能找到想要的最优解,这样可大大缩短仿真时间。
随机搜索对应的程序如下。
%随机搜索
fori=1:
1000
kp_find=kpmin+(kpmax-kpmin)*rand();
Ti_find=Timin+(Timax-Timin)*rand();
利用随机搜索对PID参数进行优化得到的系统输出曲线如下。
1.2.2.2.3PSO算法
粒子群优化(PSO)属于群体智能算法,可以大大缩短优化时间。
PSO算法利用了生物学中的群体行为。
个体为了寻优,它的前进速度就应该由三个外力决定:
自己过去最好的、整个群体当前最好的以及自己现在的运动趋势。
由这些合力可以确定它的前进方向,使它不再盲目,因此不必要像穷举法那样将任何位置都走过,或者像随机法那样没有目的仅凭随机的寻找最优值。
PSO算法的流程如下。
继续上例,通过PSO算法寻找最优的PID控制器,程序如下。
%----------设定初始值
N=10;
%粒子个数
forii=1:
N
PSO(ii,1)=kpmin+(kpmax-kpmin)*rand();
%PSO(,1)表示kp
PSO(ii,2)=Timin+(Timax-Timin)*rand();
%PSO(,2)表示Ti
E(ii)=10^10;
%E表示各个点的误差
v(ii,1)=vmin+(vmax-vmin)*rand();
%v(ii,1)表示各个点当前的速度
v(ii,2)=vmin+(vmax-vmin)*rand();
%v(ii,2)表示各个点当前的速度
%----------最优
lishi_b=zeros(N,2);
%N*2的数组,记录了每个粒子各自的历史最优位置,lishi_b(n,1)表示第n个粒子的历史最优k,lishi_b(n,2)表示第n个粒子的历史最优T;
E_ago=zeros(1,N)+10^10;
%记录了N个粒子各自的历史最小误差
now_b=zeros(1,2);
%当前群体最优位置,now_b
(1)表示k,now_b
(2)表示T
%----------PSO的内循环
M=50;
%设定的代数
forjj=1:
50
forii=1:
[E(ii),ym,tm]=fangzhen(PSO(ii,1),PSO(ii,2));
ifE(ii)<
E_ago(ii)
E_ago(ii)=E(ii);
lishi_b(ii,1)=PSO(ii,1);
lishi_b(ii,2)=PSO(ii,2);
[E_now,lli]=min(E);
%寻找当前群体最优
now_b
(1)=PSO(lli,1);
now_b
(2)=PSO(lli,2);
ifE_now<
180
break;
v(ii,:
)=v(ii,:
)+1.4*rand()*(now_bPSO(ii,:
))+...
1.4*rand()*(lishi_b(ii,:
)-PSO(ii,:
));
%更新速度
ifv(ii,1)>
9/20%对速度限幅
v(ii,1)=9/20;
elseifv(ii,1)<
-9/20
v(ii,1)=-9/20;
ifv(ii,2)>
9/20
v(ii,2)=9/20;
elseifv(ii,2)<
v(ii,2)=-9/20;
PSO(ii,:
)=PSO(ii,:
)+v(ii,:
);
%更新位置
得到的kp=0.76371,Ti=148.3664,对应的控制器的传递函数为。
1.3对各种PID优化方法进行分析比较
优化方法
PI控制器参数(控制器传函为)
稳定时间ts
超调量Mp
衰减率fai
最终稳定值ys
优化时间
经验公式
Kp=0.8333,Ti=80
448
26.1816
0.923
0.99702
——
穷举法
Kp=1.25,Ti=224
384
4.5825
1
0.99264
0.36
随机搜索
Kp=1.1848,Ti=204.34
376
4.8536
0.99478
0.343
PSO算法
Kp=1.1795,Ti=224.67
392
3.0848
0.99177
0.353
从图表中可以发现,经过