首页
学习
活动
专区
圈层
工具
发布

最优控制理论笔记总结(29)——离散最优控制仿真举例(含Matlab与Simulink建模)

  前面对离散最优控制做了相关介绍,算法的具体笔记可参看如下链接:

最优控制理论笔记总结(25)——连续系统的离散化、离散最优控制问题数学表达

最优控制理论笔记总结(26)——离散欧拉方程与离散横截条件表达式推导

最优控制理论笔记总结(27)——离散最小值原理

最优控制理论笔记总结(28)——离散LQR算法(在线、离线)

  本次笔记利用Matlab和Simulink对离散最优控制进行算法学习和仿真。

1、Matlab求解:

  设系统状态方程为:

  其中,初始状态为:

  给定最优指标为:

  求上述系统的控制序列 u*(i) ,使性能指标取极小值。

  从上面的题目中可以看到,最优控制指标为二次型,所以该问题就是在求使得离散线性LQR性能指标为最小的反馈控制量。

  在Matlab中,我们可以利用命令“dlqr”来求解反馈控制增益 K ,即:

[K,P,E] = dlqr(A,B,Q,R)

其中,K 是反馈增益向量;P 是黎卡提方程的解; E 是闭环系统特征值。

  此外,也可以直接根据前面所说的反馈增益的表达式进行求解:

K = (R+B'*P*B)^(-1)*B'*P*A

  但无论哪种形式都要注意:该反馈为负反馈,所以:

u = -K*x

具体算法如下:

A = [2 1 ;0 1] ;B = [0 ;1] ;Q = [1 0 ; 0 1] ;R = 1 ;[K,P,E]=dlqr(A,B,Q,R)

  上面代码中:

A 是系统矩阵;

B 是控制矩阵;

Q 是状态代价矩阵;

R 是控制代价矩阵;

  求解可得:

K = [2.64047680301092 2.24007933551814]P = [28.6595100893592 16.4702318476905;    16.4702318476905 11.4751952593634]

  除此之外,黎卡提方程的求解还可以利用基于 Schur 变换的 Riccati 方程求解函数 dare 命令:

V = B*inv(R)*B' ;P = dare(A,V,Q)

2、Simulink仿真

  下面利用simulink建模检测算法效果。根据状态空间方程建模如下:

其中,K1和K2就是前面利用Matlab求解得到的反馈增益值。

观察其控制量和状态量分别为:

对应性能指标随时间变化曲线为:

  如果将某个反馈增益做微小改动,例如将 K2 从 2.2401 改为 2.3 ,对性能指标进行对比,如图所示:

稳态的局部图为:

  可以看到,任意微小的增益变化,都会导致最终稳态性能指标比用命令求解得到的性能指标更大。所以该算法确实达到了目标:使性能指标为最小值。

本阶段全套笔记:

【最优控制理论与仿真】

公众号内还有:

【经典控制理论】全套笔记

【现代控制理论】全套笔记

【非线性控制理论】全套笔记

【车辆动力学】全套笔记

下阶段全套笔记:

【模型预测控制理论与仿真】

期待您的关注、留言、讨论!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oq81yI9Z2-wKrUIpxhfPdArw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

领券