二次型最优控制
考虑到系统如果以状态空间方程的形式给出,其性能指标为:
其中F,Q,R是有设计者事先选定。线性二次最优控制问题简称LQ(Linear Quadractic)问题,就是寻找一个控制,使得系统沿着由指定初态
出发的相应轨迹
,其性能指标J取得最小值。
LQ问题分为有限时间LQ问题和无限时间LQ问题。在有限时间LQ问题中,终端时刻是固定的,且为有限值;而在无限时间LQ问题中,
。
此外,从工程应用角度,还可以把LQ最优控制问题分为调节问题和跟踪问题,而调节问题又分为状态调节问题和输出调节问题。所谓状态调节问题,就是设计最优控制,使在其作用下把系统由初始状态
驱动到平衡状态
,同时性能指标J取得最小值。而跟踪问题,则要求在使系统的输出
跟踪已知的或未知的参考信号
的同时,使某个相应的二次型性能指标J为极小。
无限时间LQ状态调节
无限时间LQ状态调节问题中的性能指标为:
其中{A,B}为能控的,为能观的。
无限时间最优调节器系统的结构图如下:
对于无限时间LQ状态调节问题,为其最优控制的充分必要条件是其具有形式:
而最优性能指标为:
其中P为下述Riccati矩阵代数的解。
应该指出的是,这种设计所得到的闭环控制系统是渐进稳定的。
在MATLAB中,提供了lqr函数用于求无限时间LQ状态调节问题,函数的调用格式为:
[K,P,e]=lqr(sys,Q,R,N); % 计算联系时间系统的最优反馈增益矩阵
% K为最优反馈增益矩阵
% P为对应的Riccati方程的解
% e为对应的闭环系统的极点
% Q为状态权重矩阵
% R为输入权重矩阵
% N为状态,输入交叉权重矩阵
其性能指标为:
默认时N=0。
例如:
假设系统状态空间表达式为:
采用输入反馈,系统的性能指标为:
取
试设计LQ最优控制器,计算最优状态反馈矩阵,并绘制闭环系统的阶跃响应曲线。
MATLAB代码如下:
clear all;clc;
A=[0 1 0;0 0 1;-1 -4 -6];
B=[0 0 1]';
C=[1 0 0];
D=0;
sys=ss(A,B,C,D);
Q=diag([1,1,1]);
R=1;
[K P e]=lqr(sys,Q,R);
Ac=A-B*K;
Bc=B;
Cc=C;
Dc=D;
sysC=ss(Ac,Bc,Cc,Dc);
step(sysC);
xlabel('time(s)');
ylabel('response')
title('step response');
grid on
程序运行结果如下:
最后,欢迎大家有问题给我留言。
非常感谢小伙伴们的-点赞-收藏-加关注。