运筹系列22:动态最优化问题

动态最优化问题常常被纳入最优控制的范畴,求解方法主要是变分法、动态规划方法。最近比较火的强化学习,基于的问题就是动态最优化问题。

1. 从静态最优化问题开始

在求解最优化问题时,如果使用了目标函数的导数,则称为解析法,否则称之为直接法。
首先看解析法。对于函数极值,一阶矩阵=0和二阶矩阵正定(或负定)即可。一阶矩阵=0常用牛顿迭代法去求,其核心是将曲线当做直线找0点,需要用到一阶导的导数,即二阶导;实际过程中常常用差分来代替二阶导;也可以用二分法逐步逼近一阶导函数的零点。
然后看直接法,只适用于单峰的方法。一般方式就是逐步缩小探索空间。详细可参考https://blog.csdn.net/hemeinvyiqiluoben/article/details/79830597
关于带约束的问题,有两类方法,一种是将约束加到目标函数上去进行求解,比如拉格朗日法、罚函数(内点、外点法);还有一种是在约束范围内进行逐步探索,比如求解线性规划的单纯形法,求解整数规划的分支定界、割平面法等。
动态最优化问题最常见于控制系统中,常常采用一阶微分方程组来描述系统的运动规律。这里定义一下数学符号,常用 x x x表示状态, u u u表示控制, J J J表示性能指标,是状态轨线(状态的变分)和容许轨线(控制的变分)的一个泛函。
处理动态最优化主要有两种方法,一种是动态规划方法,一种就是这里要介绍的基于变分法的最优控制理论。动态规划方法常用于离散时间问题,对于连续时间问题求解动态规划需要用到偏微分方程,因此常常改用变分法。

2 变分法:欧拉方程

一个经典的变分问题可以表示为: min ⁡ J [ y ] = ∫ 0 T F [ t , y ( t ) , y ′ ( t ) ] d t \min J[y]=\int_0^TF[t,y(t),y'(t)]dt minJ[y]=0TF[t,y(t),y(t)]dt,s.t. y ( 0 ) = 0 y(0) = 0 y(0)=0; y ( T ) = Z y(T)=Z y(T)=Z。这个问题和经典积分问题的主要差别在于处理的是 J J J关于 y y y的变分,而不是 x x x的微分。变分问题的一个最重要结论是欧拉方程:
F y ′ y ′ y ′ ′ ( t ) + F y y ′ y ′ ( t ) + F t y ′ = F y F_{y'y'}y''(t)+F_{yy'}y'(t)+F_{ty'}=F_{y} Fyyy(t)+Fyyy(t)+Fty=Fy
这么重要的公式,我们来推导一下:

J [ y ∗ ] = min ⁡ J [ y ] J[y^*] = \min J[y] J[y]=minJ[y],扰动函数为 p ( t ) p(t) p(t),扰动变量为 ϵ \epsilon ϵ
J ( ϵ ) = ∫ 0 T F [ t , y ∗ + ϵ p ( t ) , y ′ ∗ ( t ) + ϵ p ′ ( t ) ] d t J(\epsilon)=\int_0^TF[t,y^*+\epsilon p(t),y'^*(t)+\epsilon p'(t)]dt J(ϵ)=0TF[t,y+ϵp(t),y(t)+ϵp(t)]dt
d J d ϵ = ∫ 0 T F y p ( t ) d t + ∫ 0 T F y ′ p ′ ( t ) d t \frac{dJ}{d\epsilon} =\int_0^TF_yp(t)dt+\int_0^TF_{y'}p'(t)dt dϵdJ=0TFyp(t)dt+0TFyp(t)dt
= ∫ 0 T F y p ( t ) d t + F y ′ p ( t ) ∣ 0 T − ∫ 0 T p ( t ) d F y ′ d t d t =\int_0^TF_yp(t)dt+F_{y'}p(t)|^T_0-\int_0^Tp(t)\frac{dF_{y'}}{dt}dt =0TFyp(t)dt+Fyp(t)0T0Tp(t)dtdFydt
= ∫ 0 T p ( t ) [ F y − d F y ′ d t ] d t =\int_0^Tp(t)[F_y-\frac{dF_{y'}}{dt}]dt =0Tp(t)[FydtdFy]dt

由于 p ( t ) p(t) p(t)是任意扰动,因此有 F y − d F y ′ d t = 0 F_y-\frac{dF_{y'}}{dt}=0 FydtdFy=0。记住后面 d F y ′ d t \frac{dF_{y'}}{dt} dtdFy求导需要用全导数公式,展开为3项偏导数的和。
作为推广的欧拉-泊松方程: F y − d F y ′ d t + . . . + ( − 1 ) n d n ( F y ( n ) ) d t n = 0 F_y-\frac{dF_{y'}}{dt}+...+(-1)^n\frac{d^n(F_{y^{(n)}})}{dt^n}=0 FydtdFy+...+(1)ndtndn(Fy(n))=0

下面举个例子:
J [ y ] = ∫ 0 2 ( 12 t y + y ′ 2 ) d t J[y]=\int^2_0(12ty+y'^2)dt J[y]=02(12ty+y2)dt
边界条件为 y ( 0 ) = 0 , y ( 2 ) = 8 y(0)=0,y(2)=8 y(0)=0,y(2)=8
求解
F = 12 t y + y ′ 2 F=12ty+y'^2 F=12ty+y2 F y = 12 t F_y=12t Fy=12t F y ′ = 2 y ′ F_{y'}=2y' Fy=2y
d F y ′ d t = ∂ F y ′ ∂ t + ∂ F y ′ ∂ y ∂ y ∂ t + ∂ F y ′ ∂ y ′ ∂ y ′ ∂ t = 0 + 0 ∗ y ′ + 2 ∗ y ′ ′ ( t ) = 12 t \frac{dF_{y'}}{dt}=\frac{\partial F_{y'}}{\partial t}+\frac{\partial F_{y'}}{\partial y}\frac{\partial y}{\partial t}+\frac{\partial F_{y'}}{\partial y'}\frac{\partial y'}{\partial t}=0+0*y'+2*y''(t)=12t dtdFy=tFy+yFyty+yFyty=0+0y+2y(t)=12t
y ′ ′ ( t ) = 6 t y''(t)=6t y(t)=6t y ( t ) = t 3 + c 1 t + c 2 y(t)=t^3+c_1t+c_2 y(t)=t3+c1t+c2,加上边界条件,得到 y ( t ) = t 3 y(t)=t^3 y(t)=t3

3. 最优控制:最大值原理

在最优控制理论中,我们将 y y y x x x代替, y ′ y' y u u u代替, x x x u u u之间的关系用一个微分式表达 d x / d t = f [ t , x ( t ) , u ( t ) ] dx/dt=f[t,x(t),u(t)] dx/dt=f[t,x(t),u(t)],可以看做是状态转移方程。这样,我们的关注点从最优状态轨线变为了最优控制轨线。问题变为:
max ⁡ J = ∫ 0 T F ( t , y , u ) d t \max J=\int^T_0F(t,y,u)dt maxJ=0TF(t,y,u)dt
y ′ = f ( t , y , u ) y'=f(t,y,u) y=f(t,y,u)(相当于状态转移方程)
y ( 0 ) = A y(0)=A y(0)=A(可有可无,终点的状态也是可有可无)

定义汉密尔顿函数 H ( t , y , u , λ ) = F ( t , y , u ) + λ ( t ) f ( t , y , u ) H(t,y,u,\lambda)=F(t,y,u)+\lambda(t)f(t,y,u) H(t,y,u,λ)=F(t,y,u)+λ(t)f(t,y,u),其中 λ \lambda λ称为共积函数。这个表达式和静态最优化问题中的拉格朗日函数非常像。最优控制理论中的最重要结论称为最大值原理(状态转移方程类似于等式约束条件,而最大值原理相当于静态最优化问题中的KKT条件):
H ( t , y , u ∗ , λ ) ≥ H ( t , y , u , λ ) H(t,y,u^*,\lambda)\ge H(t,y,u,\lambda) H(t,y,u,λ)H(t,y,u,λ)(相当于定常方程,注意H一阶的时候极值在端点取到)
y ′ = ∂ H ∂ λ y'=\frac{\partial H}{\partial \lambda} y=λH y y y运动方程,相当于原始可行)
λ ′ = − ∂ H ∂ y \lambda'=-\frac{\partial H}{\partial y} λ=yH λ \lambda λ运动方程,相当于对偶可行)
λ ( T ) = 0 \lambda(T)=0 λ(T)=0(T固定时的横截条件)
如果是一个水平终结线( y T y_T yT固定),那么横截条件变为 H T = 0 H_T=0 HT=0
如果是一个截断水平终结线( y T y_T yT固定, T ≤ T max ⁡ T\le T_{\max} TTmax),那么横截条件变为 H T ≥ 0 H_T\ge 0 HT0 H T ( T − T max ⁡ ) = 0 H_T(T-T_{\max})=0 HT(TTmax)=0(类似于互补剩余)

最大值原理的证明非常复杂,这里仅仅表述一下它的直观意义:
将状态转移方程添加到目标函数中,得到 V = ∫ 0 T F d t + ∫ 0 T λ [ f − y ′ ] d t = ∫ 0 T ( H + y λ ′ ) d t − ( λ y ) ∣ 0 T V=\int^T_0Fdt+\int^T_0\lambda[f-y'] dt=\int^T_0(H+y\lambda')dt-(\lambda y)|^T_0 V=0TFdt+0Tλ[fy]dt=0T(H+yλ)dt(λy)0T
V对 u u u求偏导可以得到定常方程。
V对 y y y求偏导可以得到对偶可行方程。
V对 y T y_T yT或是 T T T求偏导可以得到横截条件。

下面举个例子:
max ⁡ J [ y , u ] = ∫ 0 2 − ( 1 + u 2 ) 1 / 2 d t \max J[y,u]=\int^2_0-(1+u^2)^{1/2}dt maxJ[y,u]=02(1+u2)1/2dt
y ′ = u y'=u y=u
边界条件为 y ( 0 ) = A y(0)=A y(0)=A
求解
H = − ( 1 + u 2 ) 1 / 2 + λ u H=-(1+u^2)^{1/2}+\lambda u H=(1+u2)1/2+λu
∂ 2 H ∂ u 2 = − ( 1 + u 2 ) − 3 / 2 &lt; 0 \frac{\partial^2 H}{\partial u^2}=-(1+u^2)^{-3/2}&lt;0 u22H=(1+u2)3/2<0,因此可以求最大化问题。
∂ H ∂ u = 0 \frac{\partial H}{\partial u}=0 uH=0得到 u = λ ( 1 − λ 2 ) − 1 / 2 u={\lambda}(1-\lambda^2)^{-1/2} u=λ(1λ2)1/2
λ ′ = − ∂ H ∂ y = 0 \lambda&#x27;=-\frac{\partial H}{\partial y}=0 λ=yH=0 λ ( T ) = 0 \lambda(T)=0 λ(T)=0,得到 λ \lambda λ u u u都是常数0, y y y等于常数 A A A
即什么控制都不做,路径 y y y一直保持初始状态不变。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值