最优控制器设计

1、选择什么样的目标函数?

伺服系统的一般要求:超调量小、调节时间短、驱动包和,其他非线性

2、性能指标选择

  • 二次型指标

\begin{gathered} J=\frac{1}{2} \boldsymbol{x}^{\mathrm{T}}\left(t_{\mathrm{f}}\right) \boldsymbol{S} \boldsymbol{x}\left(t_{\mathrm{f}}\right)+\frac{1}{2} \int_{t_0}^{t_{\mathrm{f}}}\left[\boldsymbol{x}^{\mathrm{T}}(t) \boldsymbol{Q}(t) \boldsymbol{x}(t)+\boldsymbol{u}^{\mathrm{T}}(t) \boldsymbol{R}(t) \boldsymbol{u}(t)\right] \mathrm{d} t \\ \boldsymbol{u}^*(t)=-\boldsymbol{R}^{-1} \boldsymbol{B}^{\mathrm{T}} \boldsymbol{P}(t) \boldsymbol{x}(t) \\ \dot{\boldsymbol{P}}(t)=-\boldsymbol{P}(t) \boldsymbol{A}-\boldsymbol{A}^{\mathrm{T}} \boldsymbol{P}(t)+\boldsymbol{P}(t) \boldsymbol{B} \boldsymbol{R}^{-1} \boldsymbol{B}^{\mathrm{T}} \boldsymbol{P}(t)-\boldsymbol{Q} \\ \boldsymbol{P} \boldsymbol{A}+\boldsymbol{A}^{\mathrm{T}} \boldsymbol{P}-\boldsymbol{P} \boldsymbol{B} \boldsymbol{R}^{-1} \boldsymbol{B}^{\mathrm{T}} \boldsymbol{P}+\boldsymbol{Q}=\mathbf{0} \end{gathered}

- 局限性:人为选择加权矩阵,不客观的目标函数;已经经过多次化简,偏离了原始问题
- 积分型性能指标。

J_{\mathrm{ISE}}=\int_0^{\infty} e^2(t) \mathrm{d} t, \quad J_{\mathrm{ITAE}}=\int_0^{\infty} t|e(t)| \mathrm{d} t

  • 误差信号是时变指标,不能利用某一时刻的值作为整体的一个情况

3、如何将最优控制器设计问题转化为一般的最优化数值解问题

(1)例:假设受控对象为:

G(s)=\frac{1}{s(s+1)^4}

 

  • 现有的绝大部分PID控制器设计算法是针对一阶带有时间延迟受控对象模型的,上面模型难以设计控制器

  • 如何将该控制器设计问题转化为最优化问题?

(2)目标函数:

J_{\mathrm{FT}-\mathrm{ITAE}}=\int_0^{t_{\mathrm{f}}} t|e(t)| \mathrm{d} t

  • 该如何设计最优的PID控制器,能使得ITAE和ISE误差取得最小,哪个更好?

  • 如果超调量大怎么办?

  • 控制信号过大怎么办?

  • 如何选择tf?

  • 如何获得全局最优解?

4、ITAE指标下最优PID控制器设计

 

(1)先建立Simulink模型表示控制系统和ITAE积分输出

  • PID控制器模块,或者底层搭建PID控制器子模型

  • ITAE积分为单调递增的函数

  • 建立Simulink框图,描述控制与ITAE积分

(2)明确决策变量:Kp,Ki,Kd

(3)选定终止仿真时间tf,如tf=30;

(4)写出目标函数

function y=mw_optpidml(x)

assignin('base','Kp',x(1));

assignin('base','Ki',x(2));

assignin('base','Kd',x(3));

[t,xx,yy]=sim('xdy',[0,30]);

y=yy(end);

(5)求解最优化问题

x=fminsearch(@xdy,rand(3,1))

最后的控制器输出曲线

 误差曲线

 

 

5、ISE指标下的最优PID控制器设计

(1)将Simulink模型稍作修改,得出新的模型,在模型中重新定义误差信号的积分为:

 J_{\mathrm{FT-ISE}}=\int_0^{\infty} e^2(t) \mathrm{d} t

 

(2)目标函数和重新模型对应

function y=mw_optpidmla(x)

assignin('base','Kp',x(1));

assignin('base','Ki',x(2));

assignin('base','Kd',x(3));

[t,xx,yy]=sim('xdya',[0,30]);

y=yy(end);

(3)重新求解最优化问题

x=fminsearch(@xdya,x)

控制器输出曲线:

 误差跟踪:

 

6、ITAE与ISE最优PID控制器效果比较

ITAE性能指标在跟踪误差信号时,由于对时间有加权作用,所以当时间增大时,会尽快的稳定下来

ISE同等的处理各个时段的误差信号。

为什么文献中多研究ISE或者H2(2-范数)最有控制?

  • ISE易于数值求解,尤其在没有强大计算机仿真软件的前提下有优势,所以这方面的文献比较多

  • 利用下面的算法可以求出ISE的闭式解

    • Lyapunov方程求解

    • Astrom的频域递推算法

  • ITAE需要借助于仿真软件获取仿真结果

  • 计算量增大,但最优解更有意义

所以在实际伺服控制实验中,借助于强大的仿真平台,我们更应该考虑ITAE性能指标

7、如果超调量过大怎么办?

两种求解方法:

  • 引入有约束最优化求解函数,如fmincon

  • 用惩罚的方法限制大超调量出现

8、如果控制信号过大怎么办?

(1)PID控制器输出信号有时候很大(尤其是经过微分的信号),会损坏系统的硬件,解决办法

  • 限制控制信号,如H∞控制中的W2(s)加权函数,整个系统保持线性系统框架,但是过于保守

  • 引入驱动饱和环节对控制i新年好钳位

    • 引入非线性环节

    • 确保控制信号不超过允许的范围

    • 非线性对数值优化求解没有过大影响

 

9、如何选择tf

(1)典型的ITAE积分函数曲线

  • 单调递增

  • 迫使误差尽快收敛到0

(2)仿真结论:tf∈(tf,2tf)合适,对结果影响不大

  • 过大忽略了初始响应

  • 过小不能真正优化

(3)具体设计需要事后检验

10、如何得到全局最优解

(1)传统优化方法的局限性

  • 初始搜索点选择对结果有影响

  • 容易陷入局部最优解

(2)全局最优解的方法

  • 精华算法如遗传算法、粒子群优化算法等

  • 全局最优解优化工具箱(遗传算法和直接搜索)

  • 第三方工具箱(到MathWorks网站下载),如GAOT,PS0t

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真的是小恐龙吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值