论文简述

原论文:http://maeresearch.ucsd.edu/groups/skelton/publications/weiwei_ilqg_CDC43.pdf
本文工作把一个非线性最优控制问题,在每次迭代中都在局部归化为控制理论里面研究很成熟的Linear Quadratic Gaussian(LQG)问题,然后迭代地去求解更好的控制序列,直到收敛。

与强化学习的区别在于强化学习中不直接知道系统的dynamics,而最优控制的问题可以知道系统的dynamics。控制理论是强化理论的重要基础,相比于更为玄学的强化学习,控制理论的理论分析更细致,能够更好的帮助我们理解强化学习。

公式理解

任意找一个控制序列 {u‾(k)}\{\overline{u}(k)\}{u(k)},然后按照这个控制做一次推导,得到轨迹 {x‾(k)}\{\overline{x}(k)\}{x(k)} 。在这个轨迹附近,将系统的动力学特性线性化、将损失函数二次化,并考虑如何在 {u‾(k)}\{\overline{u}(k)\}{u(k)}和 {x‾(k)}\{\overline{x}(k)\}{x(k)}附近找到扰动δu=u−u‾\delta u=u-\overline{u}δu=u−u 和δx=x−x‾\delta x=x-\overline{x}δx=x−x使得新的控制比之前的更好。迭代地做更新直到收敛即得到最优控制序列。

算法的每一次迭代都在轨迹 {x‾(k),u‾(k)}\{\overline{x}(k), \overline{u}(k)\}{x(k),u(k)}附近先找到控制序列 u=u‾+δuu=\overline{u}+\delta uu=u+δu ,然后根据动力学规律找到新的轨迹 x=x‾+δxx=\overline{x}+\delta xx=x+δx,反复迭代直到收敛

具体步骤:
首先可以将系统的动力学特性线性化并且将损失函数二次化,有
δxk+1=Akδxk+Bkδuk+Ck(δuk)ξkCk(δuk)≜[c1,k+C1,kδuk⋯cp,k+Cp,kδuk]cost⁡k=qk+δxk⊤qk+12δxk⊤Qkδxk+δuk⊤rk+12δuk⊤Rkδuk\begin{aligned} \delta \mathbf{x}_{k+1}=& A_{k} \delta \mathbf{x}_{k}+B_{k} \delta \mathbf{u}_{k}+\mathcal{C}_{k}\left(\delta \mathbf{u}_{k}\right) \boldsymbol{\xi}_{k} \\ \mathcal{C}_{k}\left(\delta \mathbf{u}_{k}\right) \triangleq &\left[\mathbf{c}_{1, k}+C_{1, k} \delta \mathbf{u}_{k} \cdots \mathbf{c}_{p, k}+C_{p, k} \delta \mathbf{u}_{k}\right] \\ \operatorname{cost}_{k}=& q_{k}+\delta \mathbf{x}_{k}^{\top} \mathbf{q}_{k}+\frac{1}{2} \delta \mathbf{x}_{k}^{\top} Q_{k} \delta \mathbf{x}_{k} \\ &+\delta \mathbf{u}_{k}^{\top} \mathbf{r}_{k}+\frac{1}{2} \delta \mathbf{u}_{k}^{\top} R_{k} \delta \mathbf{u}_{k} \end{aligned}δxk+1​=Ck​(δuk​)≜costk​=​Ak​δxk​+Bk​δuk​+Ck​(δuk​)ξk​[c1,k​+C1,k​δuk​⋯cp,k​+Cp,k​δuk​]qk​+δxk⊤​qk​+21​δxk⊤​Qk​δxk​+δuk⊤​rk​+21​δuk⊤​Rk​δuk​​

其中 AkA_{k}Ak​ 和 BkB_{k}Bk​ 可以由已知的动力学规律在轨迹 {x‾(k)}\{\overline{x}(k)\}{x(k)} 附近求导得到,各种Q和R都可以对于损失函数在现有轨迹附近求导得到, [公式] 是由上述列向量拼成的,反映的是控制引起的噪声。即,认为各种A、B、C、Q、R已知

假设有state value function写成如下形式

vk(δx)=sk+δx⊤sk+12δx⊤Skδxv_{k}(\delta \mathbf{x})=s_{k}+\delta \mathbf{x}^{\top} \mathbf{s}_{k}+\frac{1}{2} \delta \mathbf{x}^{\top} S_{k} \delta \mathbf{x}vk​(δx)=sk​+δx⊤sk​+21​δx⊤Sk​δx

应用Bellman方程

vk(δx)=v_{k}(\delta \mathbf{x})=vk​(δx)= immediate cost +E[vk+1(next state )]+\mathrm{E}\left[v_{k+1}(\text { next state })\right]+E[vk+1​( next state )]

可以求得到

vk(δx)=qk+sk+1+12∑ici⊤Sk+1ci+δx⊤(qk+Ak⊤sk+1)+12δx⊤(Qk+Ak⊤Sk+1Ak)δx+π⊤(g+Gδx)+12π⊤Hπ\begin{aligned} v_{k}(\delta \mathbf{x})=& q_{k}+s_{k+1}+\frac{1}{2} \sum_{i} \mathbf{c}_{i}^{\top} S_{k+1} \mathbf{c}_{i} \\ &+\delta \mathbf{x}^{\top}\left(\mathbf{q}_{k}+A_{k}^{\top} \mathbf{s}_{k+1}\right) \\ &+\frac{1}{2} \delta \mathbf{x}^{\top}\left(Q_{k}+A_{k}^{\top} S_{k+1} A_{k}\right) \delta \mathbf{x} \\ &+\pi^{\top}(\mathbf{g}+G \delta \mathbf{x})+\frac{1}{2} \pi^{\top} H \pi \end{aligned}vk​(δx)=​qk​+sk+1​+21​i∑​ci⊤​Sk+1​ci​+δx⊤(qk​+Ak⊤​sk+1​)+21​δx⊤(Qk​+Ak⊤​Sk+1​Ak​)δx+π⊤(g+Gδx)+21​π⊤Hπ​

假设具有形如δu=πk(δx)=Ik+Lkδx\delta u=\pi_{k}(\delta x)=I_{k}+L_{k} \delta xδu=πk​(δx)=Ik​+Lk​δx的闭环控制形式,可以得到最优控制(具体讨论见附注)

1k=−H−1g,Lk=−H−1G\mathbf{1}_{k}=-H^{-1} \mathbf{g}, \quad L_{k}=-H^{-1} G1k​=−H−1g,Lk​=−H−1G

并且可以求得到state value function
vk(δx)=qk+sk+1+12∑ici⊤Sk+1ci+δx⊤(qk+Ak⊤sk+1)+12δx⊤(Qk+Ak⊤Sk+1Ak)δx+1k⊤g+12Ik⊤Hlk+δx⊤(G⊤1k+Lk⊤g+Lk⊤Hlk)+12δx⊤(Lk⊤HLk+Lk⊤G+G⊤Lk)\begin{aligned} v_{k}(\delta \mathbf{x})=& q_{k}+s_{k+1}+\frac{1}{2} \sum_{i} \mathbf{c}_{i}^{\top} S_{k+1} \mathbf{c}_{i} \\ &+\delta \mathbf{x}^{\top}\left(\mathbf{q}_{k}+A_{k}^{\top} \mathbf{s}_{k+1}\right) \\ &+\frac{1}{2} \delta \mathbf{x}^{\top}\left(Q_{k}+A_{k}^{\top} S_{k+1} A_{k}\right) \delta \mathbf{x} \\ &+\mathbf{1}_{k}^{\top} \mathbf{g}+\frac{1}{2} \mathbf{I}_{k}^{\top} H \mathbf{l}_{k}+\delta \mathbf{x}^{\top}\left(G^{\top} \mathbf{1}_{k}+L_{k}^{\top} \mathbf{g}+L_{k}^{\top} H \mathbf{l}_{k}\right) \\ &+\frac{1}{2} \delta \mathbf{x}^{\top}\left(L_{k}^{\top} H L_{k}+L_{k}^{\top} G+G^{\top} L_{k}\right) \end{aligned}vk​(δx)=​qk​+sk+1​+21​i∑​ci⊤​Sk+1​ci​+δx⊤(qk​+Ak⊤​sk+1​)+21​δx⊤(Qk​+Ak⊤​Sk+1​Ak​)δx+1k⊤​g+21​Ik⊤​Hlk​+δx⊤(G⊤1k​+Lk⊤​g+Lk⊤​Hlk​)+21​δx⊤(Lk⊤​HLk​+Lk⊤​G+G⊤Lk​)​

进行比对可以得到

其中

算法流程

找到一条初始的轨迹  {x‾(k),u‾(k)}\{\overline{x}(k), \overline{u}(k)\}{x(k),u(k)} ,然后反复进行如下迭代:

  1. 做动态规划找到更好的控制序列:按照 k=K,K−1,⋯,1k=K, K-1, \cdots, 1k=K,K−1,⋯,1的顺序迭代,计算新的控制规律参数δuk=Ik+Lkδxk\delta u_{k}=I_{k}+L_{k} \delta x_{k}δuk​=Ik​+Lk​δxk​和 vk(δx)=sk+skTδx+12δxTSkδxv_{k}(\delta x)=s_{k}+s_{k}^{T} \delta x+\frac{1}{2} \delta x^{T} S_{k} \delta xvk​(δx)=sk​+skT​δx+21​δxTSk​δx ;
  2. 更新新的轨迹:按照 k=1,2,⋯,Kk=1, 2, \cdots, Kk=1,2,⋯,K的顺序迭代,根据上步计算到的控制规律和 δxk+1=Akδxk+Bkδuk\delta x_{k+1}=A_{k} \delta x_{k}+B_{k} \delta u_{k}δxk+1​=Ak​δxk​+Bk​δuk​ 计算新的轨迹;

Iterative Linear Quadratic Gaussian(iLQG)相关推荐

  1. 释义:Linear temporal logic (LTL)浅析

    文章目录 前言 正文 小结 参考文献 前言 创作开始时间:2021年3月22日07:55:11 如题.简要解释一下LTL线性时间逻辑. 正文 主要参考: wiki词条:Linear_temporal_ ...

  2. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(2)——单页双曲面、双页双曲面、椭圆锥面、椭圆柱面

    35.2.1 数学推导 单页双曲面.双页双曲面.椭圆锥面.椭圆柱面. 这四个二次曲面方程共同形式: 但是,注意到,这些曲面都是开放曲面.在画图时,需要限制曲面的范围(以免曲面覆盖整个画面). 我们在这 ...

  3. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(3)——椭球抛物面

    35.3 椭球抛物面 35.3.1 数学推导 椭球抛物面的方程如下: 所以,其一:我们需要对两个实根进行排序(先处理小的) 另外,由于,是开放曲面,也就是,光线有可能撞击到曲面的正反两面,所以,对于撞 ...

  4. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(1)——椭球面

    二次曲面包括:球面.椭圆球面.单页双曲面.双页双曲面.椭圆锥面.椭圆柱面.椭圆抛物面.双曲抛物面等等. 注意到:只有球面和椭球面是封闭面,其他的都是开放面. 二次曲面是有方程的(我们已经学过的多边形. ...

  5. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(4)——双曲抛物面(马鞍面)

    35.4 双曲抛物面(马鞍面) 35.4.1 数学推导 双曲抛物面的方程如下: 35.4.2 看C++代码实现 -------------------------------------------- ...

  6. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(5)——汇总

    二次曲面来张合照: hitable *list[9];list[0] = new sphere(vec3(0.0,-100.5,-1), 100, new lambertian(vec3(0.8, 0 ...

  7. Quadratic equation(二次剩余)2019牛客多校第九场

    链接:https://ac.nowcoder.com/acm/contest/889/B 来源:牛客网 题目描述 Amy asks Mr. B problem B. Please help Mr. B ...

  8. Linear Algebra - Determinant(几何意义)

    二阶行列式的几何意义 二阶行列式 \(D = \begin{vmatrix}a_1&a_2\\b_1&b_2\end{vmatrix} = a_1b_2 - a_2b_1\) 的几何意 ...

  9. 2019 牛客多校第9场 B Quadratic equation(二次剩余)

    题意: x + y = b(mod p) x * y = c(mod p) 题目给出b,c ,p = 1e9 + 7,求解x y 要求(0≤x≤y<p),若没有可行解,输出-1 -1 题解: x ...

  10. 欠驱动机器人学-麻省理工学院开放课程-MIT 6.832: Underactuated Robotics(译)

    课程链接:http://underactuated.csail.mit.edu/Spring2019/ http://underactuated.csail.mit.edu/underactuated ...

最新文章

  1. oracle text db2,从Oracle 到DB2(一)
  2. 10 个小技巧:快速用 Python 进行数据分析
  3. 将VMware Workstation 12 Pro的虚拟网卡修改为自己希望的IP网段
  4. URLDecoder: Illegal hex characters in escape (%) pattern ...
  5. 小汤学编程之JavaEE学习day08——Maven
  6. frobenius范数_非负矩阵之Perron-Frobenius定理
  7. 的ppt_PPT模板中国风PPT模板
  8. VC++2012编程演练数据结构《36》磁盘文件进行排序
  9. 继承与data member之单一继承
  10. (转)美国证监会SEC发布调查报告,认定ICO为证券投资邀约
  11. python写小说阅读器_用python实现自己的小说阅读器
  12. webrtc 共享屏幕延时测试
  13. 延迟微分方程(matlab求解)
  14. 湘潭大学计算机专业科目,湘潭大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  15. Java面试宝典(2021版)
  16. 迅雷冻结3亿链克,停止国际版支持,这个区块链项目基本凉了
  17. 【rdma_cm】rdma_cm API
  18. 建网站(为什么租服务器和购买域名)
  19. Spring Boot HATEOAS的基本使用
  20. 【FLASH】写MSP430片内flash|FLASH 读写等操作 学习

热门文章

  1. 肯德基 服务器响应异常,肯德基链接服务器异常
  2. 获取计算机主机mac地址的命令有,Mac系统获取远程电脑MAC地址的两种简单方法
  3. HTML--video中的自动播放autoplay以及循环播放loop+更多多媒体标签
  4. 人们有时对机率存在的错误的认识
  5. C# 001 Windows7 WiFi共享大师 共享精灵 自制无广告精简版本
  6. HTC Vive开发笔记之手柄震动
  7. 计算机开机显示器不亮,电脑开机显示器不亮,小编教你电脑显示器不亮怎么解决...
  8. 运行时错误‘53’:文件未找到:MathPage.WLL
  9. AI插画设计,用AI制作一个只可爱的短腿柯基插画
  10. vue按钮字体大小设置_vue添加文字怎么设置时长