线性最优状态调节器及其LQR的MATLAB实现

本文介绍了线性二次型问题的基础概念,包括最优状态调节、最优输出调节和最优跟踪问题,并详细阐述了有限时间和无限时间状态调节器的设计方法及其MATLAB仿真示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性二次型问题

  • 线性二次型问题:系统为线性系统,性能指标为状态变量与控制变量的二次型函数,这类系统的最优控制问题。

  • 主要内容:最优状态调节、最优输出调节和最优跟踪,其中,最优输出调节问题和最优跟踪问题可以化为最优状态调节问题。

  • 特点:
    1)应用广泛,可应用于工作在小信号条件下的非线性系统;
    2)控制规律是状态变量的线性函数。
    3)具有良好的频域特性,可实现极点最优配置

一、线性二次型问题

问题描述:线性时变系统的动态方程为
x ˙ \dot{x} x˙(𝒕)=𝑨(𝒕)𝒙(𝒕)+𝑩(𝒕)𝒖(𝒕) 𝒙( t 0 t_0 t0)= x 0 x_0 x0
𝒚(𝒕)=𝑪(𝒕)𝒙(𝒕) 其中,𝒙(𝑡)n维, 𝒖(𝑡)m维, y(𝑡)l维
假设控制向量𝒖(𝑡)不受约束 ,用𝒚_𝑙 (𝑡)表示期望输出,
则误差向量为𝒆(𝑡)= y l y_l yl(𝑡)−𝒚(t)
指标泛函: J = 1 2 e T ( t f ) S e ( t f ) + 1 2 ∫ t 0 t f [ e T ( t ) Q ( t ) + u T ( t ) R ( t ) u ( t ) ]   d t J=\frac {1} {2}e^T(t_f)Se(t_f)+ \frac {1} {2}\int_{t_0}^{t_f} {[e^T(t)Q(t)+u^T(t)R(t)u(t)]} \,{\rm d}t J=21eT(tf)Se(tf)+21t0tf[eT(t)Q(t)+uT(t)R(t)u(t)]dt
t 0 t_0 t0 t f t_f tf固定,求最优控制𝒖^∗ (𝒕),使性能指标有最小值。
此问题称线性二次型性能指标的最优控制问题

线性二次型问题的本质:
用不大的控制,来保持较小的误差,以达到能量和误差综合最优的目的。
线性二次型问题的三种重要情形:
x ˙ \dot{x} x˙(𝒕)=𝑨(𝒕)𝒙(𝒕)+𝑩(𝒕)𝒖(𝒕)
𝒚(𝒕)=𝑪(𝒕)𝒙(𝒕)
𝒆(𝒕)= y l y_l yl (𝒕)−𝒚(𝒕)

1.状态调节器问题 𝑪(𝒕)=𝑰 y l y_l yl(𝒕)=𝟎 𝒚(𝒕)=𝒙(𝒕)=−𝒆(𝒕)
J = 1 2 x T ( t f ) F x ( t f ) + 1 2 ∫ t 0 t f [ x T ( t ) Q ( t ) x ( t ) + u T ( t ) R ( t ) u ( t ) ]   d t J=\frac {1} {2}x^T(t_f)Fx(t_f)+ \frac {1} {2}\int_{t_0}^{t_f} {[x^T(t)Q(t)x(t)+u^T(t)R(t)u(t)]} \,{\rm d}t J=21xT(tf)Fx(tf)+21t0tf[xT(t)Q(t)x(t)+uT(t)R(t)u(t)]dt
当系统受扰偏离平衡状态时,要求系统产生控制向量,使指标极小,即,使𝒙(𝒕)始终保持在平衡点附近。

2.输出调节器问题 y l y_l yl(𝒕)=𝟎 𝒚(𝒕)=−𝒆(𝒕)
J = 1 2 y T ( t f ) F y ( t f ) + 1 2 ∫ t 0 t f [ y T ( t ) Q ( t ) y ( t ) + u T ( t ) R ( t ) u ( t ) ]   d t J=\frac {1} {2}y^T(t_f)Fy(t_f)+ \frac {1} {2}\int_{t_0}^{t_f} {[y^T(t)Q(t)y(t)+u^T(t)R(t)u(t)]} \,{\rm d}t J=21yT(tf)Fy(tf)+21t0tf[yT(t)Q(t)y(t)+uT(t)R(t)u(t)]dt
当系统受扰偏离平衡状态时,要求系统产生控制向量,使指标极小,即,使系统输出𝒚(𝒕)始终保持在平衡点附近。

3.跟踪问题 y l ≠ 0 y_l\neq0 yl=0 e ( t ) = y l ( t ) − y ( t ) e(t)=y_l(t)-y(t) e(t)=yl(t)y(t)
J = 1 2 e T ( t f ) F e ( t f ) + 1 2 ∫ t 0 t f [ e T ( t ) Q ( t ) e ( t ) + u T ( t ) R ( t ) u ( t ) ]   d t J=\frac {1} {2}e^T(t_f)Fe(t_f)+ \frac {1} {2}\int_{t_0}^{t_f} {[e^T(t)Q(t)e(t)+u^T(t)R(t)u(t)]} \,{\rm d}t J=21eT(tf)Fe(tf)+21t0tf[eT(t)Q(t)e(t)+uT(t)R(t)u(t)]dt
使系统实际输出𝒚(𝒕)始终跟随𝒚_𝒍 (𝒕) 变化

二、状态调节器问题

应用举例:电网电压控制;温度控制;压力控制等。
目的:保持系统状态在平衡状态附近;(通常取“零状态”为平衡状态)

  • 有限时间状态调节器
    问题描述:设线性时变系统的状态方程为:
    x ˙ \dot{x} x˙(𝒕)=𝑨(𝒕)𝒙(𝒕)+𝑩(𝒕)𝒖(𝒕),𝒙( t 0 t_0 t0)= x 0 x_0 x0
    假设控制向量𝒖(𝒕)不受约束 ,求最优控制 u ∗ u^* u (𝒕),使系统的二次型性能指标取极小值:
    J = 1 2 e T ( t f ) F x ( t f ) + 1 2 ∫ t 0 t f [ e T ( t ) Q ( t ) x ( t ) + u ( t ) T R ( t ) u ( t ) ]   d t J=\frac {1} {2}e^T(t_f)Fx(t_f)+ \frac {1} {2}\int_{t_0}^{t_f} {[e^T(t)Q(t)x(t)+u(t)^TR(t)u(t)]} \,{\rm d}t J=21eT(tf)Fx(tf)+21t0tf[eT(t)Q(t)x(t)+u(t)TR(t)u(t)]dt
    权矩阵:𝑭= F T ≥ 0 F^T\geq0 FT0; 𝑸(𝒕)= Q T ( t ) ≥ 0 Q^T(t)\geq0 QT(t)0;𝑹(𝒕)= R T R^T RT (𝒕)>𝟎, t f t_f tf固定且 t f t_f tf≠∞。
    物理意义:以较小的控制能量为代价,使状态保持在零值附近。
    黎卡提方程
    − P ˙ ( t ) = P ( t ) A ( t ) + A T ( t ) P ( t ) − P ( t ) B ( t ) R − 1 ( t ) B T ( t ) P ( t ) + Q ( t ) -\dot{P}(t)=P(t)A(t)+A^T(t)P(t)-P(t)B(t)R^{-1}(t)B^T(t)P(t)+Q(t) P˙(t)=P(t)A(t)+AT(t)P(t)P(t)B(t)R1(t)BT(t)P(t)+Q(t)
    边界条件 P ( t f ) = F P(t_f)=F P(tf)=F
    最优轨线 x ∗ x^* x (𝒕)是满足下列线性向量微分方程的解:
    − x ˙ ( t ) = [ A ( t ) − B ( t ) R − 1 ( t ) B T ( t ) P ( t ) ] x ( t ) , x ( t 0 ) = x 0 -\dot{x}(t)=[A(t)-B(t)R^{-1}(t)B^T(t)P(t)]x(t),x(t_0)=x_0 x˙(t)=[A(t)B(t)R1(t)BT(t)P(t)]x(t),x(t0)=x0
    u ∗ ( t ) = − K ( t ) x = − R − 1 ( t ) B T ( t ) P ( t ) x ( t ) u^*(t)=-K(t)x=-R^{-1}(t)B^T(t)P(t)x(t) u(t)=K(t)x=R1(t)BT(t)P(t)x(t)

  • 无限时间状态调节器

    • 问题描述:设线性时变系统的状态方程为:
      x ˙ \dot{x} x˙(𝒕)=𝑨(𝒕)𝒙(𝒕)+𝑩(𝒕)𝒖(𝒕) x ( t 0 ) = x 0 , t f = ∞ x(t_0)=x_0,t_f=\infty x(t0)=x0,tf= 假设控制向量𝒖(𝒕)不受约束 ,求最优控制u^* (𝒕) ,使系统的性能指标取极小值:
      J = 1 2 ∫ t 0 ∞ [ x T ( t ) Q ( t ) x ( t ) + u ( t ) T R ( t ) u ( t ) ]   d t J=\frac {1} {2}\int_{t_0}^{\infty} {[x^T(t)Q(t)x(t)+u(t)^TR(t)u(t)]} \,{\rm d}t J=21t0[xT(t)Q(t)x(t)+u(t)TR(t)u(t)]dt
      定理:对于无限时间时变状态调节器问题,若{𝑨(𝒕),𝑩(𝒕)}完全可控,则存在唯一的最优控制: u ∗ ( t ) = − R − 1 ( t ) B T ( t ) P ˉ ( t ) x u^*(t)=-R^{-1}(t)B^T(t)\bar{P}(t)x u(t)=R1(t)BT(t)Pˉ(t)x
      最优性能指标为: J ∗ ( t ) = 1 2 x ( t 0 ) T P ˉ ( t 0 ) x ( t 0 ) J^*(t)=\frac {1} {2}x(t_0)^T\bar{P}(t_0)x(t_0) J(t)=21x(t0)TPˉ(t0)x(t0)
      P ˉ ( t ) = lim ⁡ t f → ∞ P ( t ) \bar{P}(t)=\lim_{t_f \to \infty}P(t) Pˉ(t)=limtfP(t),是对称的,非负的。
      𝑷(𝒕)是如下黎卡提方程的唯一解,且𝐏( t f t_f tf)=𝟎:
      − P ˙ ( t ) = P ( t ) A ( t ) + A T ( t ) P ( t ) − P ( t ) B ( t ) R − 1 ( t ) B T ( t ) P ( t ) + Q ( t ) -\dot{P}(t)=P(t)A(t)+A^T(t)P(t)-P(t)B(t)R^{-1}(t)B^T(t)P(t)+Q(t) P˙(t)=P(t)A(t)+AT(t)P(t)P(t)B(t)R1(t)BT(t)P(t)+Q(t)
      关于定理需要注意的问题:
      1.要求系统完全能控。(保证最优解的存在)
      2.F=0,人们所关心的总是系统在有限时间内的响应,不考虑终点指标;
      3. P ˉ ( t ) \bar{P}(t) Pˉ(t)是时变的矩阵,最优控制律是时变的。
  • 问题描述:设线性定常系统的状态方程为:
    x ˙ \dot{x} x˙(𝒕)=𝑨𝒙(𝒕)+𝑩𝒖(𝒕) x ( t 0 ) = x 0 , t f = ∞ x(t_0)=x_0,t_f=\infty x(t0)=x0,tf=假设控制向量𝒖(𝒕)不受约束 ,求最优控制u^* (𝒕) ,使系统的性能指标取极小值:
    J = 1 2 ∫ 0 ∞ [ x T ( t ) Q x ( t ) + u ( t ) T R u ( t ) ]   d t J=\frac {1} {2}\int_{0}^{\infty} {[x^T(t)Qx(t)+u(t)^TRu(t)]} \,{\rm d}t J=210[xT(t)Qx(t)+u(t)TRu(t)]dt
    𝑸——非负定对称阵;𝑹——正定对称阵
    定理:对于无限时间定常状态调节器问题,若对于任意矩阵𝑫有 D D T = Q DD^T=Q DDT=Q P ˉ \bar{P} Pˉ是如下黎卡提矩阵代数方程的解:
    P ˉ A + A T P ˉ − P ˉ B R − 1 B T P ˉ + Q = 0 \bar{P}A+A^T\bar{P}-\bar{P}BR^{-1}B^T\bar{P}+Q=0 PˉA+ATPˉPˉBR1BTPˉ+Q=0
    则, {𝑨,𝑫}完全可观的充要条件是: P ˉ \bar{P} Pˉ是正定对称矩阵

定理:对于无限时间定常状态调节器问题,若{𝑨(𝒕),𝑩(𝒕)}完全可控, {𝑨,𝑫}完全可观, D D T = Q DD^T=Q DDT=Q, 𝑫任意,则存在唯一的最优控制 u ∗ ( t ) = − R − 1 B T P ˉ x u^*(t)=-R^{-1}B^T\bar{P}x u(t)=R1BTPˉx
最优性能指标为: 𝑱^∗=𝟏/𝟐 〖𝒙_𝟎〗^𝑻 𝑷 ̅ (𝒕_𝟎)𝒙_𝟎,
P ˉ \bar{P} Pˉ是正定对称矩阵,是黎卡提矩阵代数方程 P ˉ A + A T P ˉ − P ˉ B R − 1 B T P ˉ + Q = 0 \bar{P}A+A^T\bar{P}-\bar{P}BR^{-1}B^T\bar{P}+Q=0 PˉA+ATPˉPˉBR1BTPˉ+Q=0唯一的解。
最优轨线 x ∗ ( t ) x^*(t) x(t)是方程 x ˙ = ( A − B R − 1 B T P ˉ ) x \dot{x}=(A-BR^{-1}B^T\bar{P})x x˙=(ABR1BTPˉ)x的解。

三、 MATLAB仿真

  • 有限时间状态调节器

    x ˙ = [ 0 1 0 0 ] x + [ 0 1 ] u \dot{x}=\begin{bmatrix} 0 & 1 \\ 0 & 0 \\ \end{bmatrix}x+\begin{bmatrix} 0 \\ 1 \\ \end{bmatrix}u x˙=[0010]x+[01]u,初始条件 x 1 ( 0 ) = 1 , x 2 ( 0 ) = 0 x_1(0)=1,x_2(0)=0 x1(0)=1,x2(0)=0
    性能指标 J = 1 2 ∫ 0 t f [ x 1 2 ( t ) + u 2 ( t ) ] d t J=\frac {1} {2}\int_{0}^{t_f}[x{^2_1}(t)+u^2(t)]dt J=210tf[x12(t)+u2(t)]dt
    u ∗ ( t ) = − P 12 ( t ) x 1 ( t ) − P 12 ( t ) x 2 ( t ) = − x 1 ( t ) − 2 x 2 ( t ) u^*(t)=-P_{12}(t)x_1(t)-P_{12}(t)x_2(t)=-x_1(t)-\sqrt{2}x_2(t) u(t)=P12(t)x1(t)P12(t)x2(t)=x1(t)2 x2(t)
A=[0 1;0 0];
B=[0;1];
C=eye(2); %单位阵函数
D=[0;0];
Q=diag([1 0]); %对角阵函数
R=1;
K=lqr(A,B,Q,R); %二次型状态调节器设计
initial(ss(A-B*K,B,C,D),[1,0]) %由初始状态引起的零输入响应

在这里插入图片描述

  • 无限时间状态调节器

  1. 已知系统状态方程表达式为:
    x ˙ = [ 0 1 0 0 0 1 − 3 − 5 − 5 ] x + [ 0 0 1 ] u \dot{x}=\begin{bmatrix} 0 & 1& 0 \\ 0 & 0 & 1\\ -3 & -5 & -5\\ \end{bmatrix}x+\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}u x˙=003105015x+001u, y = [ 1 0 0 ] y=\begin{bmatrix} 1 & 0& 0 \\ \end{bmatrix} y=[100]
    系统二次型性能指标为: J = ∫ 0 ∞ [ x T ( t ) Q x ( t ) + u ( t ) T R u ( t ) ]   d t J=\int_{0}^{\infty} {[x^T(t)Qx(t)+u(t)^TRu(t)]} \,{\rm d}t J=0[xT(t)Qx(t)+u(t)TRu(t)]dt
    Q = [ 100 0 0 0 1 0 0 0 1 ] Q=\begin{bmatrix} 100 & 0& 0 \\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix} Q=10000010001 R = [ 1 ] R=\begin{bmatrix} 1\\ \end{bmatrix} R=[1]
A=[0 1 0;0 0 1;-3 -5 -5];
B=[0;0;1];
C=[1 0 0];
D=0;
Q=[100 0 0;0 1 0;0 0 1];
R=1;
K=lqr(A,B,Q,R);
Ac=A-B*K;
Bc=B*K;
Cc=C;
Dc=D;
e=eig(Ac)

在这里插入图片描述
2.

已知系统状态方程表达式为:
x ˙ = [ 0 1 0 0 0 0 0 − 2 − 3 ] x + [ 0 0 1 ] u \dot{x}=\begin{bmatrix} 0 & 1& 0 \\ 0 & 0 & 0\\ 0 & -2 & -3\\ \end{bmatrix}x+\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}u x˙=000102003x+001u, y = [ 1 0 0 ] y=\begin{bmatrix} 1 & 0& 0 \\ \end{bmatrix} y=[100]
采用输出反馈控制律𝒖(𝒕)=−𝑲𝒚(𝒕),系统二次型性能指标为:
J = ∫ 0 ∞ [ y T ( t ) Q y ( t ) + u ( t ) T R u ( t ) ]   d t J=\int_{0}^{\infty} {[y^T(t)Qy(t)+u(t)^TRu(t)]} \,{\rm d}t J=0[yT(t)Qy(t)+u(t)TRu(t)]dt
Q = [ 100 ] Q=\begin{bmatrix} 100\\ \end{bmatrix} Q=[100], R = [ 1 ] R=\begin{bmatrix} 1\\ \end{bmatrix} R=[1];试求最优控制的反馈增益矩阵𝑲使性能指标达到最小值。

A=[0 1 0;0 0 1;0 -2 -3];
 B=[0;0;1]; C=[1 0 0]; D=0;
 Q=diag([100]);
 R=1;
 [K,P,r]=lqry(A,B,C,D,Q,R)
 t=0:0.1:10;
figure(1);step(A-B*K,B,C,D,1,t)
figure(2);step(A,B,C,D,1,t)

在这里插入图片描述
在这里插入图片描述

React Hooks 是 React 16.8 中新增的特性,它可以让你在函数组件中使用 state、生命周期钩子等 React 特性。使用 Hooks 可以让你写出更简洁、可复用且易于测试的代码。 React Hooks 提供了一系列的 Hook 函数,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect 和 useDebugValue。每个 Hook 都有特定的用途,可以帮助你处理不同的问题。 下面是 React Hooks 的一些常用 Hook 函数: 1. useState useState 是最常用的 Hook 之一,它可以让你在函数组件中使用 state。useState 接受一个初始状态值,并返回一个数组,数组的第一个值是当前 state 值,第二个值是更新 state 值的函数。 ``` const [count, setCount] = useState(0); ``` 2. useEffect useEffect 可以让你在组件渲染后执行一些副作用操作,比如订阅事件、异步请求数据等。useEffect 接受两个参数,第一个参数是一个回调函数,第二个参数是一个数组,用于控制 useEffect 的执行时机。 ``` useEffect(() => { // 这里可以执行副作用操作 }, [dependencies]); ``` 3. useContext useContext 可以让你在组件树中获取 context 的值。它接受一个 context 对象,并返回该 context 的当前值。 ``` const value = useContext(MyContext); ``` 4. useRef useRef 可以让你在组件之间共享一个可变的引用。它返回一个对象,该对象的 current 属性可以存储任何值,并在组件的生命周期中保持不变。 ``` const ref = useRef(initialValue); ref.current = value; ``` 5. useCallback useCallback 可以让你缓存一个函数,以避免在每次渲染时都创建一个新的函数实例。它接受一个回调函数和一个依赖数组,并返回一个 memoized 的回调函数。 ``` const memoizedCallback = useCallback(() => { // 这里是回调函数的逻辑 }, [dependencies]); ``` 6. useMemo useMemo 可以让你缓存一个计算结果,以避免在每次渲染时都重新计算。它接受一个计算函数和一个依赖数组,并返回一个 memoized 的计算结果。 ``` const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); ``` 以上就是 React Hooks 的一些常用 Hook 函数,它们可以帮助你更好地处理组件状态、副作用、上下文和性能优化等问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值