【数值优化基础 (自动驾驶)】—— 知识点(方便回顾)

笔记:机器人学中的数值优化基础
数值优化简介
1.优化问题

min f(x)
s.t.g(x)<=0 h(x)=0

假设:(1)目标函数有下界(2)下水平集不能无界

2.凸包问题:给定点集,求构成凸包的点

3.常见的凸集:超平面、半平面、球的表面、球、多项式、半正定锥

4.保持凸性的运算:

(1)两个凸集的交集
(2)两个凸集的和
(3)两个凸集的叉乘

5.hessian矩阵在函数光滑时是对称矩阵

6.梯度:使每一点下降最快的方向

7.区分Hessian矩阵与Jacobian矩阵,Hessian矩阵对应的函数是向量映射到标量,矩阵元素是二阶信息,而Jacobian矩阵对应的函数是向量映射到向量,矩阵元素是一阶信息

8.凸函数最重要的性质就是琴生不等式,能取到等号则是一般凸函数,不取等号则是强凸函数

9.凸函数<=>上方图是凸集

10.凸函数的下水平集是凸集

11.关心凸函数的原因

(1)凸性容易保持
(2)任何的局部最优解都是全局最优解
(3)解集是凸的
(4)凸函数在很多运算中能够被保留(求和、仿射变换、逐点max)

12.一阶条件 => 仅凸函数的最优性

13.二阶条件:满足 ∇ 2 f ( x ) ⪰ 0 \nabla^{2} f(x) \succeq 0 2f(x)0,一个光滑的函数是凸的。Hessian函数是光滑函数的一个很好的局部模型

13.强凸意味着hessian矩阵严格正定。有利于提高算法的收敛速率

14.次梯度的反方向不一定是下降方向

15.梯度单调性:任何凸函数的(次)梯度都是单调的

16.最速下降法就是以负梯度方向为迭代方向,当函数非光滑时,迭代点不存在梯度时,以次梯度集合内的取最小模长的负方向为迭代方向

17.迭代方向的步长选择:
(1)恒定步长:导致不停的震荡,始终无法收敛
(2)不断衰减的步长:可以保证收敛,但是随着步长越来越短,收敛越来越慢
(3)精确线搜索:求解时间损耗
(4)非精确线搜索:不再求解子优化问题,希望每次得到一个接近最优解的步长

18.条件数很大将导致最速下降法每次迭代震荡很厉害,因此当条件数很大时,不适用最速下降法

19.修正阻尼牛顿法:最小化二次逼近,如果函数是二次函数,那么牛顿法只需一步就能达到最优。

20.当函数是二次型时,近似没有起到效果,迭代的过程就是求解原函数最优解的过程,因此当然一次迭代就能得到最优解

21.将牛顿法与最速下降法相比,牛顿法需要的迭代次数很少就能直达最优解,但是由于需要求解hessian矩阵的逆,导致,每一步的迭代时间有所增加

22.评价数值优化方法的三个方面:(1)收敛速度(2)适用于不同功能的稳定性(3)每次迭代的计算量

23.牛顿法的适用条件是hessian矩阵正定,否则会出现上述两种情况,若半正定可能找不到最优解,若负定,将使迭代方向变成上升方向,因此我们必须保证迭代方向与负梯度方向成锐角

24.工程上的方法:构造一个足够接近hessian的正定矩阵M、通过因式分解而不是求逆来求解线性系统、线搜索不需要grad和Hessian

25.自动驾驶规划目标:算出一条满足约束的最优轨迹

最优:平滑、舒适、尽可能短(耗时少)
约束:轨迹连续性、无碰撞、交规、车辆动力学

26.一般求复杂函数在复杂约束下的最小值问题都采用迭代法:牛顿、最速下降、高斯牛顿

27.凸优化:求凸函数在凸空间的最小值问题

28.静态+动态避障约束空间都不是凸的

29.求解非凸问题的主要思路是找非凸问题中的凸结构

30.对于非凸函数和非凸空间:连续空间离散化后,离散约束空间的最优解,不断迭代得到最优解

31.采样点越少,容易收敛到局部最优。采样越多,容易发生维数灾难

32.为什么引入二次规划?

多项式求极值是二维空间的问题,而运动规划的优化问题是高维的。高维空间的优化问题是十分复杂的,我们如果将其建立为一个类似于我们熟悉的多项式求极值问题,我们当然希望选择对优化来说最理想的二次。如果问题的维度也高,次数也高,就很难求解了。

33.维度是指变量的个数,而次数是指多项式的阶次

34.二次规划在自动驾驶中有两个比较经典的应用:
(1)百度Apollo EM planner用QP求解局部最优解
(2)MPC控制器将有约束的MPC问题转化为QP问题

35.运动规划的是在凸空间么?

显然特别不凸,因为中间有车挡着,相当于有洞。任何中空的或具有凹痕都不是凸集。如果能实现路径规划与速度规划解耦,可以通过动态规划算法在 l ( s ) l(s) l(s)空间内寻找几个凸集,在每个凸集内部,可以实现QP算法

36.梯度下降法工程上实现通常采用负梯度方向为优化方向,结合Armijo条件计算步长
x k + 1 = x k − τ ∇ f ( x k ) x^{k+1}=x^{k}-\tau \nabla f\left(x^{k}\right) xk+1=xkτf(xk)
Armijo Condition:
f ( x k ) − f ( x k + α d ) ≥ − c ⋅ α d T ∇ f ( x k ) f\left(x^{k}\right)-f\left(x^{k}+\alpha d\right) \geq-c \cdot \alpha d^{T} \nabla f\left(x^{k}\right) f(xk)f(xk+αd)cαdTf(xk)

37.牛顿法: x k + 1 = x k − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) x^{k+1}=x^{k}-\left[\nabla^{2} f\left(x^{k}\right)\right]^{-1} \nabla f\left(x^{k}\right) xk+1=xk[2f(xk)]1f(xk),牛顿法要求Hessian矩阵非奇异且正定,另外Hessian矩阵的获取和求逆计算可能会非常耗时

38.实际应用中Hessian矩阵正定通常难以保证,工程上当Hessian是半正定时,需要加入一个很小的单位阵就可以将Hessian矩阵改造为正定矩阵: M = ∇ 2 f ( x ) + ϵ I , ϵ = min ⁡ ( 1 , ∥ ∇ f ( x ) ∥ ∞ ) / 10 M=\nabla^{2} f(x)+\epsilon I, \epsilon=\min \left(1,\|\nabla f(x)\|_{\infty}\right) / 10 M=2f(x)+ϵI,ϵ=min(1,∥∇f(x))/10当梯度接近0,M也会逐渐接近真实的Hessian矩阵,另外,由于改造过后的Hessian矩阵是正定的,可以采用Cholesky分解的方式,来求解牛顿方向: M d = − ∇ f ( x ) , M = L L T M d=-\nabla f(x), \quad M=L L^{T} Md=f(x),M=LLT,从而避免耗时的求逆操作。

当Hessian矩阵是不定的时候,可以采用Bunch-Kaufman分解,即 M = L B L T = ∇ 2 f ( x ) M=L B L^{T}=\nabla^{2} f(x) M=LBLT=2f(x),其中B矩阵是一个块对角矩阵,都是由1X1和2X2的小块矩阵构成的,可以很容易地去修改这些小块矩阵的特征值,把他们改成正数。

39.拟牛顿方法:尽可能采用一阶信息还原出二阶信息,从而实现超出一阶方法的收敛速度,同时避免求解目标函数的二阶导数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL三个日志

undo log(回滚日志)&#xff1a;是 Innodb 存储引擎层生成的日志&#xff0c;实现了事务中的原子性&#xff0c;主要用于事务回滚和 MVCC。 redo log(重做日志)&#xff1a;是 Innodb 存储引擎层生成的日志&#xff0c;实现了事务中的持久性&#xff0c;主要用于掉电等故障恢复…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

Vulnhub-DIGITALWORLD.LOCAL: VENGEANCE渗透

文章目录 前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、smb下载线索三、制作字典四、爆破压缩包密码五、线索分析六、提权&#xff01;&#xff01;&#xff01; Vulnhub靶机&#xff1a;DIGITALWORLD.LOCAL: VENGEANCE ( digitalworld.local: VENGEANCE …

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

算法===二分查找

文章目录 概要定义代码Python小结 概要 二分&#xff0c;很常用&#xff0c;不管是日常生活&#xff0c;还是工作&#xff0c;学习&#xff1b;哪怕是使用计算机查下哪块占了硬盘空间&#xff0c;都用的上。 二分&#xff0c;太常用了。比如&#xff0c;我的电脑某一个盘慢了&…

tomcat启动闪退问题解决方法

文章目录 Tomcat启动闪退的常见问题及解决方法Tomcat是什么启动闪退的常见问题及解决方法1. 内存不足问题描述&#xff1a;案例分析&#xff1a;解决方法&#xff1a; 2. 端口冲突问题描述&#xff1a;解决方法&#xff1a; 3. 日志错误问题描述&#xff1a;解决方法&#xff1…

冰蓄冷系统基础知识

冰蓄冷是将水制成冰储存冷量&#xff0c;它是潜热蓄冷的一种方式。当压力保持不变时&#xff0c;物质在相变过程中保持恒定温度并吸收或释放热量&#xff0c;通常把这个温度称为相变温度(即溶解温度或凝固温度)&#xff0c;把吸收或释放的热量称相变潜热。在常压下&#xff0c;…

基于Python的LSTM网络实现单特征预测回归任务(TensorFlow)

目录 一、数据集 二、任务目标 三、代码实现 1、从本地路径中读取数据文件 2、数据归一化 3、创建配置类&#xff0c;将LSTM的各个超参数声明为变量&#xff0c;便于后续使用 4、创建时间序列数据 5、划分数据集 6、定义LSTM网络 &#xff08;1&#xff09;创建顺序模…

一、初识VUE

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Vue Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c…

MySQL常见问题解决和自动化安装脚本

常见问题 MySQL密码正确但无法登录的情况 这种情况一般都是因为缓存&#xff0c;使用mysql -u root -p123456直到成功登陆为止&#xff0c;并且进入之后重新修改密码&#xff0c;多次重复修改密码的命令并且再一次清除缓存后退出。 ALTER USER rootlocalhost IDENTIFIED WIT…

JRE与JDK:内在关联与核心区别探析

标题&#xff1a;JRE与JDK&#xff1a;内在关联与核心区别探析 引言 在软件开发领域&#xff0c;Java以其独特的跨平台特性和丰富的开源生态赢得了广泛的赞誉和应用。而在Java技术栈中&#xff0c;Java Runtime Environment (JRE) 和 Java Development Kit (JDK) 是两个不可或…

C++之operator

1、operator operator是C关键字之一, 称为重载运算符&#xff08;也称“重载操作符”&#xff09;。所谓重载&#xff0c;就是赋予新的含义。函数重载&#xff08;Function Overloading&#xff09;可以让一个函数名有多种功能&#xff0c;在不同情况下进行不同的操作。运算符重…

基于Unity+Vue通信交互的WebGL项目实践

unity-webgl 是无法直接向vue项目进行通信的&#xff0c;需要一个中间者 jslib 文件 jslib当作中间者&#xff0c;unity与它通信&#xff0c;前端也与它通信&#xff0c;在此基础上三者之间进行了通信对接 看过很多例子&#xff1a;介绍的都不是很详细&#xff0c;不如自己写&…

【MATLAB源码-第199期】基于MATLAB的深度学习(CNN)数字、模拟调制识别仿真,输出识别率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于深度学习的调制识别系统利用复杂的数学模型和算法来识别和分类从不同来源接收到的无线信号的调制类型。这种技术的应用广泛&#xff0c;特别是在无线通信、电子战、频谱监测和认知无线电等领域中具有重要价值。调制识别系…

算法导论 总结索引 | 第三部分 第十二章:二叉搜索树

1、搜索树数据结构 支持 许多动态集合操作&#xff0c;包括 SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT 和 DELETE 等。使用搜索树 既可以作为一个字典 又可以作为一个优先队列 2、二叉搜索树上的基本操作 所花费的时间 与这棵树的高度成正比。对于有n个结点的…

汽车热辐射、热传导、热对流模拟加速老化太阳光模拟器系统

汽车整车结构复杂&#xff0c;材料种类繁多&#xff0c;在使用过程中会面临各种严酷气候环境的考验&#xff0c;不可避免会出现零部件材料老化、腐蚀等不良现象&#xff0c;从而影响汽车的外观、功能&#xff0c;甚至产生安全隐患。因此&#xff0c;分析汽车零部件材料老化腐蚀…

深入剖析Tomcat(五) 剖析Servlet容器并实现一个简易Context与Wrapper容器

上一章介绍了Tomcat的默认连接器&#xff0c;后续程序都会使用默认连接器。前面有讲过Catalina容器的两大块内容就是连接器与Servlet容器。不同于第二章的自定义丐版Servlet容器&#xff0c;这一章就来探讨下Catalina中的真正的Servlet容器究竟长啥样。 四种容器 在Catalina中…

音视频入门基础:像素格式专题(1)——RGB简介

一、像素格式简介 像素格式&#xff08;pixel format&#xff09;指像素色彩按分量的大小和排列。这种格式以每个像素所使用的总位数以及用于存储像素色彩的红、绿、蓝和 alpha 分量的位数指定。在音视频领域&#xff0c;常用的像素格式包括RGB格式和YUV格式&#xff0c;本文…

mysql添加远程登录账户

为了远程连接&#xff0c;您必须使MySQL将端口3306绑定到my.cnf中计算机的IP地址。然后&#xff0c;您必须同时在localhost和&#xff05;通配符中创建用户&#xff0c;并在所有DB上授予权限。 修改my.cnf&#xff0c;如果不存在这行则添加&#xff0c;可以输入0.0.0.0 bind-ad…

Java面试题:并发编程中,什么是死锁,如何避免它?

什么是死锁&#xff1f; 死锁是指在多线程环境中&#xff0c;由于资源分配不当或进程运行顺序不合理&#xff0c;导致涉及的线程都处于等待状态&#xff0c;无法继续执行的一种状况。在Java中&#xff0c;死锁通常发生在多个线程互相等待对方持有的锁&#xff0c;但没有任何一…