智能驾驶规划控制理论学习06-基于优化的规划方法之数值优化基础

目录

一、优化概念

1、一般优化问题

2、全局最优和局部最优        

二、无约束优化

1、无约束优化概述

 2、梯度方法        

通用框架

线性搜索 

 回溯搜索

3、梯度下降

基本思想

实现流程

​4、牛顿法

基本思想

实现流程

5、高斯牛顿法 

6、LM法(Levenberg-Marquardt Method) 

 三、二次规划

 1、凸函数与凸集合

2、凸优化问题 

3、二次规划

四、非线性规划问题 


一、优化概念

1、一般优化问题

        对于一般优化问题可以如下表述:

        式中 f(x) 是目标函数,x是想要求解的决策变量,S是可行域,subject中的内容是关于变量的约束条件,由等式约束或不等式约束构成。

        举一个简单的例子,如下图所示:

2、全局最优和局部最优        

        全局最优对应上图中的global minimum,是在整段函数上取得的最小值,而局部最优则对应的是在一个小的邻域中寻找最小值,与之相对应的有强局部最优和弱局部最优。强局部最优严格要求邻域内的其他点对应的函数值大于最小值,而弱局部最优要求邻域内的其他点对应的函数值大于等于最小值。

二、无约束优化

1、无约束优化概述

        无约束优化是优化问题中一类较为容易解决的问题,在无约束优化中我们只需要找到最小化的目标函数和其依赖的变量,对于这些变量的值没有任何限制。最简单的数学表达式如下:

        当函数f(x)是可微的,x是局部最优解的必要条件是当前x的梯度为0。

        用来解决无约束优化问题的梯度法有如下几种:

  • 梯度下降法
  • 牛顿法
  • 高斯牛顿法
  • Levenberg-Marquardt Method

 2、梯度方法        

通用框架

        对于一般的梯度方法可以用如下迭代公式:

x^{(k+1)}=x^{(k)}+\alpha ^{(k)}\Delta x^{(k)}

        式中x表示优化变量,x^{(k)}表示第k次迭代优化变量的取值,\Delta x^{(k)}表示第k次迭代下降的方向,\alpha ^{(k)} 表示关于下降方向的步长。

        我们期望每经过一步,函数值下降,f (x^{(k+1)}) < f(x^{(k)})

        重复迭代过程直到满足某个收敛的条件,关于收敛条件有如下三种常见的定义:

  • \left \| x^{(i+1)}-x^{(i)} \right \|<\varepsilon
  • \left \| x^{(i+1)}-x^{(i)} \right \|/\left \| x^{(i)} \right \|<\varepsilon
  • \left | f(x^{(i+1)})-f(x^{(i)}) \right | \leq \varepsilon

        在工程上我们往往会使用多种收敛条件的组合进行判断。

线性搜索 

        关于步长α可以通过线性搜索的方式取得,将该过程抽象为数学表达式如下:

\phi (\alpha )=f(x_{k}+\alpha p_{k}), \alpha >0

        式中 x_{k}表示第k次迭代优化变量的取值,p_{k}表示第k次迭代下降的方向,对于线性搜索p_{k}是一个已知量,步长α就是我们要求解的未知量。

        线性搜索可分为精确线性搜索和非精确线性搜索:

  • 精确线性搜索:\phi (\alpha ) = argmin_{\alpha >0}f(x_{k}+\alpha p_{k}),该函数表达的是要在给定下降方向上找到一个精确到α值使得函数值达到最小;

        在工程实际中,对于一个复杂的目标函数我们很难直到一个准确的方向,想要通过一个近似得到的方向获得精确的步长显示是不合理的。

  • 非精确线性搜索:不必严格寻找使得整体代价值最小的步长,只要代价值小于一定值就可以接受,如下图所示有两个满足条件的区间,相比较而言,非精确的线性搜索更加高效。

 回溯搜索

        图中横轴t表示步长,下降方向△x对于某一点是已知的,在起点对其做泰勒展开可以得到一条切线,将切线乘对应的α因子可以得到放缓的线条。

        对于回溯法,只要搜索得到的点在两条虚线之间就认为有效。具体的判断如下:

         \alpha \epsilon (0,0.5), \beta \epsilon (0,1), t:=1

        while f(x+t\triangle x) > f(x) + \alpha t\bigtriangledown f(x)^{T}\triangle x, t:=\beta t 

3、梯度下降

基本思想

        在高等数学中我们学过梯度方向是一个函数值增长最快的方向,对应上图中的steepest ascent,而想要让代价函数的下降值最快则要沿着负梯度方向,梯度下降正是依赖于这种思想。

        对于上图的二维函数,使用迭代框架,从起始点x0开始,每一步都朝着负梯度方向前进。

实现流程

 4、牛顿法

基本思想

        相比于梯度下降这种一阶的方法(只用到了梯度的信息),牛顿法是一个二阶的方法。用一维函数来简述牛顿法的步骤:

        第一步是在当前点进行二阶的泰勒展开;通过第二步是通过泰勒展开的方式对原函数进行近似,我们想利用二次函数的最优质找到合适的下降方向因此通过将第二步中得到的函数对\delta进行求导即可到达第三步中的梯度函数;通过移项等方式得到最终第四步\delta的表达式。

实现流程

        牛顿法的伪代码实现与梯度下降方式基本一致,只是牛顿法的前提是函数二阶可导,而梯度下降法只要一阶可导。

5、高斯牛顿法 

        高斯牛顿法是牛顿法的优化,它的最小化成本函数基于最小二乘的思想:

f(x)=\sum_{i=1}^{m}(f_{i}(x))^{2}

        将累计求和的形式转换成向量的形式:

min\left \| F(x) \right \|^{2}, F(x)=\begin{pmatrix} f_{1}(x)\\ \vdots \\ f_{m}(x) \end{pmatrix}

        对F(x)向量进行一阶展开,得到:

F(x+\delta )=F(x)+J_{F}(x)\delta 

        再将展开得到的式子代入:

min\left \| F(x)+J_{F}(x\delta ) \right \|^{2}

        将平方项展开后对\delta进行求导记得可到高斯牛顿的搜索方向:

\delta = -(J^{T}J)^{-1}J^{T}F

        将高斯牛顿得到的结果与牛顿法得到的结果\delta = -(H_{f}(x))^{-1}\bigtriangledown f(x)进行对比,高斯牛电脑中J是表示F(x)函数的梯度,J^{T}J等效于牛顿法中的H_{f}(x),而后面的J^{T}F等效于牛顿法中的梯度。之所要有这样替代的操作,是因为当优化变量非常多时,在每一步迭代用牛顿法计算H_{f}(x)是非常耗时的操作。

        具体伪代码的实现流程如下:

6、LM法(Levenberg-Marquardt Method) 

         LM法是高斯牛顿法的优化,在高斯牛顿法中可能会出现J^{T}J是一个奇异矩阵或存在病态条件,此时下降方向的稳定性较差,导致算法出现发散。

        LM法通过引入参数\lambda在梯度下降法和高斯牛顿法之间做动态地调整,公式如下:

(J^{T}J+\lambda diag(J^{T}J))\delta _{lm}=Jf 

 三、二次规划

 1、凸函数与凸集合

         凸函数在数学上的精确定义如下:

         在某个向量空间的凸子集中,有任意两个向量x,y有:

f(tx+(1-t)y)\leq tf(x)+(1-t)f(y), for 0\leq t\leq 1

        简单来说,就是f函数的值在连接f(x)和f(y)的线段下方;

        对于凸集合,有如下定义:

        对于一个集合C,若对于任意x,y∈C,有tx+(1-t)y\varepsilon C, for all 0\leq t\leq 1

        简单来说,对于凸集合内的任意两点,链接该对点的直线段上的每一个点也在这个集合内。如下图左侧就是一个凸集合,右侧就不是凸集合。

2、凸优化问题 

        对于上述优化处理,若满足f_{0},f_{1},\cdots ,f_{m}都是凸函数,那么这种规划就是凸优化。

        凸优化有以下几个优点:

  • 可行集是凸集合;
  • 凸函数的局部最优解必定是全局最优解
  • 在理论和工程实际中,相比较其他优化方法,凸优化是比较好处理的。因此在自动驾驶规划领域,我们很多时候也会把问题建模成凸优化问题。

        下面简单介绍几种在凸优化领域方法的定义:

  • LP:linear program(线性规划)
  • QP: quadratic program(二次规划)
  • SOCP: second-order cone program(二阶锥规划)
  • SDP: semidefinite program(半定规划)
  • CP: cone program(锥规划)

        本节我们主要关注二次规划问题。

3、二次规划

          本节不重点二次规划原理和具体实现流程,主要将在工程实际中如何处理类似的二次规划问题。        

        QSOP求解器是一个数值优化包,用于求解形式为凸的二次规划。

         具体到代码层面来说:

四、非线性规划问题 

        此处的非线性主要指的是目标函数和约束都是非凸的。

        求解非线性规划问题有:

  • 顺序二次规划(SQP)
  • 内点法(IPM)

        同样在工程上也有直接处理非线性规划问题的处理器——Ipop,该处理器基于内点法,主要思想是:

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

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

相关文章

实践航拍小目标检测,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

高级货,极大提高效率,个人非常喜欢

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; FileConverter中文版是一款免费软件&#xff0c;具有强大的功能。它支持多种文件格式的转换&#xff0c;包括视频、音频、文档等。您可以批量转换文件…

bert 相似度任务训练简单版本,faiss 寻找相似 topk

目录 任务 代码 train.py predit.py faiss 最相似的 topk 数 任务 使用 bert-base-chinese 训练相似度任务&#xff0c;参考&#xff1a;微调BERT模型实现相似性判断 - 知乎 参考他上面代码&#xff0c;他使用的是 BertForNextSentencePrediction 模型&#xff0c;Bert…

Tomcat概念、安装及相关文件介绍

目录 一、web技术 1、C/S架构与B/S架构 1.1 http协议与C/S架构 1.2 http协议与B/S架构 2、前端三大核心技术 2.1 HTML&#xff08;Hypertext Markup Language&#xff09; 2.2 css&#xff08;Cascading Style Sheets&#xff09; 2.3 JavaScript 3、同步和异步 4、…

Node.js与Webpack笔记(一)

这里使用的16.19.0版本&#xff0c;官网和github没找到&#xff0c;去黑马2023年课程里找 篇幅较大会卡&#xff0c;此篇幅不写Webpack部分&#xff0c;留着下一篇 初识 1.什么是Node.js? Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff…

【Linux】Linux原生异步IO:AIO

1、IO模型 1.1 简述 相信大家在搜索的时候,都会看到下面这张图,IO的使用场景:同步、异步、阻塞、非阻塞,可以组合成四种情况: 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可…

向微队列添加任务的四种方式

向微队列添加任务的四种方式 关于微任务&#xff0c;微队列&#xff0c;事件循环&#xff0c;可参考&#xff1a;深入&#xff1a;微任务与 Javascript 运行时环境 - Web API 接口参考 | MDN (mozilla.org) 先说答案, 四种方法&#xff1a; Promise.resolve().then();Mutation…

【Web前端入门学习】——HTML

目录 HTML简介HTML文件结构常用文本标签标题标签段落标签有序列表和无序列表表格标签 HTML属性a标签—超链接标签图片标签 HTML区块块元素与行内元素 HTML表单 HTML简介 HTML全称是Hypertext Markup Language超文本标记语言。 HTML的作用&#xff1a; 为网页提供结构&#xff…

数据库管理-第158期 Oracle Vector DB AI-09(20240304)

数据库管理158期 2024-03-04 数据库管理-第158期 Oracle Vector DB & AI-09&#xff08;20240304&#xff09;1 创建示例表2 添加过滤条件的向量近似查询示例1示例2示例3示例4示例5示例6示例7 总结 数据库管理-第158期 Oracle Vector DB & AI-09&#xff08;20240304&a…

C#插入排序算法

插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤如下 首先咱们假设数组长度为n&#xff0c;从第二个元素开始&#xff0c;将当前元素存储在临时变量temp中。 从当前元素的前一…

iOS 17.0 UIGraphicsBeginImageContextWithOptions 崩溃处理

在升级到iOS17后你会发现&#xff0c;之前版本运行的很好&#xff0c;这个版本突然会出现一个运行闪退。报错日志为*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410 跟踪到具体的报错位置如下所示&a…

第4章 HSA运行时

HSA运行时是一种精简的用户模式应用程序编程接口API&#xff0c;它提供了主机将计算内核启动到可用HSA代理程序所必须的接口。它可以分为两类&#xff1a;核心和扩展。HSA核心运行时API旨在支持HSA系统平台体系结构规范所需的操作&#xff0c;并且必须得到任何符合HSA的系统的支…

Java多线程导入Excel示例

在导入Excel的时候&#xff0c;如果文件比较大&#xff0c;行数很多&#xff0c;一行行读往往速度比较慢&#xff0c;为了加快导入速度&#xff0c;我们可以采用多线程的方式 话不多说直接上代码 首先是Controller import com.sakura.base.service.ExcelService; import com.s…

智慧城市中的数字孪生:数字孪生技术助力智慧城市提高公共服务水平

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、智慧交通管理 2、智慧能源管理 3、智慧环保管理 4、智慧公共安全 四、数字孪生技术助力智慧城市提高公共服务水平的价值 五、挑战与前景 六、结论 一、引言 随着信息技术的飞速发展&…

【LeetCode】升级打怪之路 Day 13:优先级队列的应用

今日题目&#xff1a; 23. 合并 K 个升序链表 | LeetCode378. 有序矩阵中第 K 小的元素 | LeetCode373. 查找和最小的 K 对数字 | LeetCode703. 数据流中的第 K 大元素 | LeetCode347. 前 K 个高频元素 | LeetCode 目录 Problem 1&#xff1a;合并多个有序链表 【classic】LC 2…

【蓝牙协议栈】【BR/EDR】【AVDTP】音视频分布传输协议

1. AVDTP概念 AVDTP即 AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL(音视频分配传输协议),主要负责 A/V stream的协商、建立及传输程序,还指定了设备之前传输A/V stream的消息格式. AVDTP的传输机制和消息格式是以 RTP为基础的。RTP由 RTP Data Transfer Protocol (RTP)和…

【软考高项】【计算专题】- 5 - 进度类 - 横道图/甘特图

一、知识点 1、基本定义 甘特图(Gantt chart )又称为横道图、条状图(Bar chart)&#xff0c;通过条状图来显示项目各活动的进 度情况。以提出者亨利劳伦斯甘特( Henry Laurence Gantt)先生的名字命名。 目前许多文档工具都可以画甘特图。 &#xff08;1&#xff09;我的举例 …

07. Nginx进阶-Nginx负载均衡

简介 负载均衡 什么是负载均衡&#xff1f; 负载均衡&#xff0c;英文名称为Load Balance&#xff0c;其含义就是指将负载&#xff08;工作任务&#xff09;进行平衡、分摊到多个操作单元上进行运行。 Nginx负载均衡 什么是Nginx负载均衡&#xff1f; Nginx负载均衡可以大…

计算机网络-典型网络组网架构

前面基本网络知识已经能够满足中小企业的需要了&#xff0c;今天来看下一些基本网络组网架构。 首先网络是分层架构&#xff0c;从接入层到汇聚层再到核心层&#xff0c;然后接入运营商出口。内部包括有线网络、无线网络&#xff0c;出口一般可以使用路由器或者防火墙进行安全防…

StarRocks实战——vivo基于 StarRocks 构建实时大数据平台

目录 前言 一、数据挑战 1.1 时效性挑战&#xff0c;业务分析决策需加速 1.2 访问量挑战&#xff0c;性能与稳定性亟待提高&#xff0c;支撑业务稳定运行 1.3 计算场景挑战&#xff0c;难以满足业务复杂查询需求 1.4. 运维挑战&#xff0c;用户查询体验需优化 二、OLA…