【动手学运动规划】5.4 二次规划问题:QP优化

站在天堂看地狱,人生就像情景剧;站在地狱看天堂,为谁辛苦为谁忙。 —武林外传 白展堂

🏰代码及环境配置:请参考 环境配置和代码运行!


在运动规划算法中, QP优化是非常常见的优化问题形式, 本节我们将进行介绍.

5.4.1 QP优化定义

二次规划(Quadratic Programming)优化,是指优化问题的目标函数为二次函数, 且约束条件为线性的问题。定义如下:

minimize ⁡ 1 2 x T P x + q T x subject to  l ≤ A x ≤ u \begin{array}{ll}\operatorname{minimize} & \frac{1}{2} x^T P x+q^T x \\\text { subject to } & l \leq A x \leq u\end{array} minimize subject to 21xTPx+qTxlAxu

  • 决策变量是 x ∈ R n x \in \mathbf{R}^n xRn
  • 目标函数: 二次函数, 矩阵 P ∈ R n × n P \in \mathbf{R}^{n \times n} PRn×n并是一个对称矩阵, 向量 q ∈ R n q \in \mathbf{R}^n qRn
  • 线性约束: 矩阵 A ∈ R m × n A \in \mathbf{R}^{m \times n} ARm×n, 上下界向量 l , u l,u l,u确定.

5.4.2 QP优化的特点

首先我们介绍一下半正定矩阵定义:

A A A 是一个 n × n n \times n n×n 的实对称矩阵,如果对所有的非零实向量 x ∈ R n x \in \mathbb{R}^n xRn,都有 x T A x ≥ 0 x^T A x \geq 0 xTAx0,则称 A A A 为半正定矩阵。特别地,如果 x T A x > 0 x^T A x > 0 xTAx>0 对所有非零 x x x 都成立,则称 A A A 为正定矩阵。

在QP优化问题中, 当 P P P矩阵是半正定矩阵时, 该问题是一个凸二次规划问题. 对于凸优化问题, 极值点就是全局最优解, 具有求解快速的优点.

5.4.3 求解器

在工程中, 我们经常会调用现有的求解器来完成优化问题. 这样可以专注于构造合适的优化问题来解决运动规划问题, 而不是求解优化问题本身. 这很适合初学者快速上手相关运动规划算法.

有这样几种常见的QP优化求解器:

  • OSQP
  • qpOASES
  • OOQP

其中OSQP(Operator Splitting Quadratic Program)是一个在运动规划算法中被广泛运用的求解器。它基于交替乘子法(Alternating Direction Method of Multipliers, ADMM)求解QP问题, 我们将基于OSQP求解一个简单的例子.

5.4.4 例子

我们定义了这样一个QP问题, 目标函数是二次函数, 约束条件是3个线性约束:

m i n i m i z e f ( x ) = 2 x 1 2 + x 2 2 + x 1 x 2 + x 1 + x 2 subject to   1 ≤ x 1 + x 2 ≤ 1 0 ≤ x 1 ≤ 0.7 0 ≤ x 2 ≤ 0.7 \begin{align*} minimize \ f(x)=2x_1^2 &+x_2^2+x_1 x_2 +x_1+x_2 \\ \text { subject to } \ 1\leq x_1&+x_2\leq 1 \\ 0\leq &x_1\leq 0.7 \\ 0\leq &x_2\leq 0.7 \end{align*} minimize f(x)=2x12 subject to  1x100+x22+x1x2+x1+x2+x21x10.7x20.7

x = [ x 1 x 2 ] x=\left[\begin{array}{l}x_1 \\x_2\end{array}\right] x=[x1x2], 将问题整理成矩阵的形式:

minimize ⁡ f ( x ) = 1 2 x T [ 4 1 1 2 ] x + [ 1 1 ] T x subject to  [ 1 0 0 ] ≤ [ 1 1 1 0 0 1 ] x ≤ [ 1 0.7 0.7 ] \begin{array}{ll}\operatorname{minimize} & f(x)=\frac{1}{2} x^T\left[\begin{array}{ll}4 & 1 \\1 & 2\end{array}\right] x+\left[\begin{array}{l}1 \\1\end{array}\right]^T x \\\text { subject to } & {\left[\begin{array}{l}1 \\0 \\0\end{array}\right] \leq\left[\begin{array}{ll}1 & 1 \\1 & 0 \\0 & 1\end{array}\right] x \leq\left[\begin{array}{c}1 \\0.7 \\0.7\end{array}\right]}\end{array} minimize subject to f(x)=21xT[4112]x+[11]Tx 100 110101 x 10.70.7

将对应的矩阵整理到代码中, 就可以调用OSQP求解这个QP问题了

import osqp
import numpy as np
from scipy import sparse# Define problem data
P = sparse.csc_matrix([[4, 1], [1, 2]])
q = np.array([1, 1])
A = sparse.csc_matrix([[1, 1], [1, 0], [0, 1]])
l = np.array([1, 0, 0])
u = np.array([1, 0.7, 0.7])# Create an OSQP object
prob = osqp.OSQP()# Setup workspace and change alpha parameter
prob.setup(P, q, A, l, u, alpha=1.0)# Solve problem
res = prob.solve()
print(f"optimal x:{res.x}")
python tests/optimization/osqp_test.py

求解结果如下:

status:               solved
number of iterations: 50
optimal objective:    1.8800
run time:             3.42e-05s
optimal rho estimate: 1.36e+00optimal x:[0.30000019 0.69999981]

🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn

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

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

相关文章

Linux: ASoC 声卡硬件参数的设置过程简析

文章目录 1. 前言2. ASoC 声卡设备硬件参数2.1 将 DAI、Machine 平台的硬件参数添加到声卡2.2 打开 PCM 流时将声卡硬件参数配置到 PCM 流2.3 应用程序对 PCM 流参数进行修改调整 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失&am…

ansible使用学习

一、查询手册 1、官网 ansible官网地址:https://docs.ansible.com 模块查看路径:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin 2、命令 ansible-doc -s command二、相关脚本 1、服务…

jmap使用

常用命令 jmap -heap PID jmap -histo PID | head -20 jmap -dump:formatb,fileheap_dump.hprof PID jmap 是 Java 开发工具包(JDK)提供的一个命令行工具,用于生成 Java 进程的内存映射信息。它可以帮助开发者分析 Java 堆内存的使用情况…

RabbitMQ 如何设置限流?

RabbitMQ 的限流(流量控制)主要依赖于 QoS(Quality of Service) 机制,即 prefetch count 参数。这个参数控制每个消费者一次最多能获取多少条未确认的消息,从而避免某个消费者被大量消息压垮。 1. RabbitMQ…

第四十八章:黄山之行:与小一的奇妙冒险

自从小泽泽满月酒过后,小冷一家的生活又恢复了往日的温馨与忙碌。小泽泽在家人的悉心照料下茁壮成长,而小冷和小颖也在工作与家庭之间努力平衡着。2024 年 11 月,秋意正浓,山林间五彩斑斓,空气中弥漫着清爽的气息。小冷…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强,智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备,能够实时采集用户的腰部健康数据,如姿势、运动…

2025.2.8 寒假综合训练赛2题解

A. 博弈 Link:P1290 欧几里德的游戏 博弈类的题目,首先考虑找找有什么性质,从而找到“必胜态”和“必败态”。 其中,面对“必胜态”不一定取胜(看个人操作的好坏),但面对“必败态”一定输&am…

docker离线安装及部署各类中间件(x86系统架构)

前言:此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本:docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面,这里放在…

Spring Boot 中的日志配置

文章目录 Spring Boot 中日志配置的源码分析1. Spring Boot 日志框架的选择与自动配置2. 日志自动配置与默认行为3. 日志系统的核心组件:Logger 和 LoggerFactory4. 日志配置文件的解析配置日志级别配置日志输出格式和目标 5. 日志级别的控制自定义日志级别 6. 自定…

从零到一:我的元宵灯谜小程序诞生记

缘起:一碗汤圆引发的灵感 去年元宵节,我正捧着热腾腾的汤圆刷朋友圈,满屏都是"转发锦鲤求灯谜答案"的动态。看着大家对着手机手忙脚乱地切换浏览器查答案,我突然拍案而起:为什么不做一个能即时猜灯谜的微信…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程,css3中的属性进展都不一样,浏览器厂商在标准尚未明确的情况下提前支持会有风险,浏览器厂商对新属性的支持情况也不同,所有会加厂商前缀加以区分。如果某个属性…

2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板

题目来源:攻防世界 Confusion1 目录 一、打开靶机,整理信息 二、解题思路 step 1:查看网页源码信息 step 2:模板注入 step 3:构造payload,验证漏洞 step 4:已确认为SSTI漏洞中的Jinjia2…

c++初始

目录 一数据类型 1. 2.sizeof 3.布尔 4.字符串类型 二.数据输入与输出 1.输出 2.输入 三.运算 1.加减乘除取模,,--都一样 2.逻辑非与或,与C语言一样 3.比较运算符,与C语言一样 4.三目运算符(与C语言一样&a…

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件,它们执行的是基本的逻辑运算。通过这些基本运算,可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门(AND)、或门(OR)、非门(NOT)、异或门…

HC32功能复用说明

目录 引脚有哪些功能如何选择功能代码 引脚有哪些功能 数据手册中,每一个引脚功能有至多64个,对应列Func0~Func63 其中,Func0 ~Func31在《表 2-1 引脚功能表》中列出 Func32~Func63在《表 2-2 Func32~63 表》中列出。 Func32~Func63中的功…

数据库管理-第293期 奇怪的sys.user$授权+(20250210)

数据库管理293期 2025-02-10 数据库管理-第293期 奇怪的sys.user$授权(20250210)1 清空shared pool2 SR反馈总结 数据库管理-第293期 奇怪的sys.user$授权(20250210) 作者:胖头鱼的鱼缸(尹海文&#xff09…

AutoMQ 如何实现没有写性能劣化的极致冷读效率

前言 追赶读(Catch-up Read,冷读)是消息和流系统常见和重要的场景。 削峰填谷:对于消息来说,消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住,让下游在容量范围内消费…

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面

本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…

DeepSeek大模型的发展的十问十答

DeepSeek大模型是由杭州深度求索人工智能基础技术研究有限公司开发的一款基于Transformer架构的大型语言模型,具体介绍如下: 1. 架构基础 Transformer架构:DeepSeek大模型基于Transformer架构,该架构由Google在2017年提出&#xf…

Avnet RFSoC基于maltab得5G 毫米波 开发工具箱

使用 MATLAB 连接到 AMD Zynq™ RFSoC 评估板。使用 RF 附加卡执行 OTA 测试。使用 HDL Coder 部署算法 版本要求: 大于 2023b 需要以下支持包之一: 适用于 Xilinx 基于 Zynq 的无线电(R2023b 及更早版本)的通信工具箱支持包适…