智能驾驶规划控制理论学习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.mfbz.cn/a/429686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java数据结构与算法刷题-----LeetCode637. 二叉树的层平均值

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 广度优先2. 深度优先 解题思路&#xff1a;时间复杂度O(n)&am…

网络基础(二)

目录 再谈"协议" 序列化 JSON 网络版计算器 HTTP协议 认识URL urlencode和urldecode HTTP协议格式 telnet指令 stat函数 struct stat类型 stringstream类型 wget指令 HTTP的方法 HTTP的状态码 传输层 再谈端口号 端口号范围划分 认识知名端口号(W…

深度学习_16_权重衰退调整过拟合

所谓过拟合即模型复杂度较高&#xff0c;但用于训练数据集过于简单&#xff0c;最后导致模型将过多无用渣质作为学习对象 这个在上篇 深度学习_15_过拟合&欠拟合 已经详细介绍&#xff0c;以下便不再赘述。 上篇提到要想解决过拟合现象可以试着降低模型复杂度&#xff0c…

Python web框架fastapi中间件与CORS详细教学

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Fastapi 景天的主页&#xff1a;景天科技苑 文章目录 fastapi中间件与CORS1、中间件1.创建中间件方法2.中间件里面添加响应头…

抖音视频评论批量采集软件|视频下载工具

《轻松搞定&#xff01;视频评论批量采集软件&#xff0c;助您高效工作》 在短视频这个充满活力和创意的平台上&#xff0c;了解用户评论是了解市场和观众心声的重要途径之一。为了帮助您快速获取大量视频评论数据&#xff0c;我们推出了一款操作便捷、功能强大的软件&#xff…

第一弹:Flutter安装和配置

目标&#xff1a; 1&#xff09;配置Flutter开发环境 2&#xff09;创建第一个Flutter Demo项目 Flutter中文开发者网站&#xff1a; https://flutter.cn/ 一、配置Flutter开发环境 Flutter开发环境已经提供集成IDE开发环境&#xff0c;因此需要配置开发环境的时候&#xf…

【STM32】STM32学习笔记-读写内部FLASH 读取芯片ID(49)

00. 目录 文章目录 00. 目录01. FLASH概述02. 读写内部FLASH接线图03. 读写内部FLASH相关API04. 读写内部FLASH程序示例05. 读写芯片ID接线图06. 读写芯片ID程序示例07. 程序示例下载08. 附录 01. FLASH概述 STM32F10xxx内嵌的闪存存储器可以用于在线编程(ICP)或在程序中编程(…

Spark中读parquet文件是怎么实现的

背景 最近在整理了一下 spark对Parquet的写文件的过程&#xff0c;也是为了更好的理解和调优Spark相关的任务&#xff0c; 因为对于Spark来说&#xff0c;任何一个事情都不是独立的存在的&#xff0c;比如说parquet文件的rowgroup设置的大小对读写的影响&#xff0c;以及parqu…

数据删除

目录 数据删除 删除员工编号为 7369 的员工信息 删除若干个数据 删除公司中工资最高的员工 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据删除 删除数据就是指删除不再需要的数据 delete from 表名称 [where 删…

Java架构之路-架构应全面了解的技术栈和工作域

有时候我在想这么简单简单的东西&#xff0c;怎么那么难以贯通。比如作为一个架构师可能涉及的不单单是技术架构&#xff0c;还包含了项目管理&#xff0c;一套完整的技术架构也就那么几个技术栈&#xff0c;只要花点心思&#xff0c;不断的往里面憨实&#xff0c;总会学的会&a…

huggingface学习|controlnet实战:云服务器使用StableDiffusionControlNetPipeline生成图像

ControlNet核心基础知识 文章目录 一、环境配置和安装需要使用的库二、准备数据及相关模型三、参照样例编写代码&#xff08;一&#xff09;导入相关库&#xff08;二&#xff09;准备数据&#xff08;以知名画作《戴珍珠耳环的少女》为例&#xff09;&#xff08;三&#xff0…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏&#xff1a;http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…

制造业数字化赋能:1核心2关键3层面4方向

随着科技的飞速发展&#xff0c;制造业正站在数字化转型的风口浪尖。数字化转型不仅关乎企业效率与利润&#xff0c;更决定了制造业在全球竞争中的地位。那么&#xff0c;在这场波澜壮阔的数字化浪潮中&#xff0c;制造业如何抓住机遇&#xff0c;乘风破浪&#xff1f;本文将从…

Maven终端命令生成Spring-boot项目并输出“helloworld“

1. 生成项目 mvn archetype:generate填写groupId和artifactId&#xff0c;其余默认即可 2. 修改pom.xml文件 将如下内容放入pom.xml文件内 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artif…

计网面试题整理上

1. 计算机网络的各层协议及作用&#xff1f; 计算机网络体系可以大致分为一下三种&#xff0c;OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型&#xff1a;大而全&#xff0c;但是比较复杂、而且是先有了理论模型&#xff0c;没有实际应用。TCP/IP四层模型&#xff1a…

Git入门学习笔记

Git 是一个非常强大的分布式版本控制工具&#xff01; 在下载好Git之后&#xff0c;鼠标右击就可以显示 Git Bash 和 Git GUI&#xff0c;Git Bash 就像是在电脑上安装了一个小型的 Linux 系统&#xff01; 1. 打开 Git Bash 2. 设置用户信息&#xff08;这是非常重要的&…

使用GRU进行天气变化的时间序列预测

本文基于最适合入门的100个深度学习项目的学习记录&#xff0c;同时在Google clolab上面是实现&#xff0c;文末有资源连接 天气变化的时间序列的难点 天气变化的时间序列预测涉及到了一系列复杂的挑战&#xff0c;主要是因为天气系统的高度动态性和非线性特征。以下是几个主…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

突发,Anthropic推出突破性Claude 3系列模型,性能超越GPT-4

&#x1f989; AI新闻 &#x1f680; 突发&#xff0c;Anthropic推出突破性Claude 3系列模型 摘要&#xff1a;人工智能创业公司Anthropic宣布推出其Claude 3系列大型语言模型&#xff0c;该系列包括Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus三个子模型&#xff0c;旨…

第18章 Java I/O系统

第18章 Java I/O系统 18.1 File类 File类不仅仅指文件&#xff0c;还能代表一个目录下的一组文件。 18.1.1 目录列表器 public class Test {public static void main(String[] args) {File file new File("E:\\test");String[] strings file.list(new DirFilte…