2021-08-31

2023-05-16

二次规划求解器OOQP的基础使用

  • 前言
  • 一、OOQP所包含参数的定义
  • 二、简单调用
    • 1.头文件
    • 2.参数设置
    • 3.进行求解
    • 4.取出计算结果
  • 总结


前言

OOQP作为一款强大的开源凸优化库,支持C++,Matlab调用,现在这里记录下其简单的使用。


一、OOQP所包含参数的定义

OOQP统一的二次规划问题的公式如下:

在这里插入图片描述其中Q是正半定矩阵,c为线性部分矩阵,A为等式约束矩阵,C为不等式约束矩阵.
在这里OOQP采用了一些数据结构来存储稀疏矩阵以及对称矩阵.
稀疏矩阵由三个数据结构表示 – 两个整数向量和一个双精度向量,它们的长度都相同。对于矩阵C,这些数据结构为irowC,jcolC和dC。稀疏矩阵 中的非零元素综述总数为nnzC。C 的第k个非零元素出现在第irowC[k]行和第jcolC[k]列,其值为dC[k]。注意的是:行和列从零开始编号。
对称矩阵也用三个向量来表示,在irowQ,jcolQ和dQ中指定矩阵下三角的元素。
上下界向量采用两个向量来表示,例如,如果x的下届的第k个元素有下界,ixlow[k]设置为1,xlow[k]为其下界值;否则,都设置为0。

详细的参数介绍为
在这里插入图片描述

二、简单调用

1.头文件

要使用OOQP,一般需要包含库里的如下头文件:
代码如下(示例):

#include "ooqp/QpGenData.h"
#include "ooqp/QpGenVars.h"
#include "ooqp/QpGenResiduals.h"
#include "ooqp/GondzioSolver.h"
#include "ooqp/QpGenSparseMa27.h"

2.参数设置

代码如下(示例):部分参数只是给出了大小,并没在此处给出,实际应用时根据需要设置

  const int nx = 6;
  double c[6];

  double xupp[6];
  char ixupp[6] = {1,1,1,1,1,1};

  double xlow[6];
  char ixlow[6] = {1,1,1,1,1,1};

  const int nnzQ = 21;
  int irowQ[21];
  int jcolQ[21];
  double dQ[21];

  int my         = 0;
  double * b     = 0;
  int nnzA       = 0;
  int * irowA    = 0;
  int * jcolA    = 0;
  double * dA    = 0;

  const int mz = 10;
  double clow[10];
  char iclow[10] = {1,1,1,1,1,1,1,1,1,1};

  double cupp[10];
  char icupp[10] = {1,1,1,1,1,1,1,1,1,1};

  const int nnzC = 18;
  int irowC[18] = {0,0,1,1,2,2,3,3,4,5,5,6,6,7,7,8,8,9};
  int jcolC[18] = {0,1,1,2,0,1,1,2,1,3,4,4,5,3,4,4,5,4};
  double dC[18];

3.进行求解

代码如下(示例):以下步骤按照官方给的流程来即可

  QpGenSparseMa27 * qp
    = new QpGenSparseMa27( nx, my, mz, nnzQ, nnzA, nnzC );

  QpGenData * prob = (QpGenData * ) qp->copyDataFromSparseTriple(
        c,      irowQ,  nnzQ,   jcolQ,  dQ,
        xlow,   ixlow,  xupp,   ixupp,
        irowA,  nnzA,   jcolA,  dA,     b,
        irowC,  nnzC,   jcolC,  dC,
        clow,   iclow,  cupp,   icupp );

  QpGenVars  * vars
    = (QpGenVars *) qp->makeVariables( prob );
  QpGenResiduals * resid
    = (QpGenResiduals *) qp->makeResiduals( prob );

  GondzioSolver * s1  = new GondzioSolver( qp, prob );

  s1->monitorSelf();
  int ierr = s1->solve(prob,vars, resid);
  }

4.取出计算结果

代码如下(示例):完成求解后需要取出计算结果使用,计算结果存储在vals中,并且ierr用来标志求解是否成功,为0则成功.可以通过如下步骤取出结果存储在,向量force中

  Eigen::VectorXd force;
  force.resize(6);
  
  if(ierr==0){
    std::cout<<"Qp is Ok"<<std::endl;

    double val[6];
    vars->x->copyIntoArray(val);
    for(int i=0; i<6; i++){
      force[i] = val[i];
    }
  }

总结

至此,OOQP的简单使用结束,主要是说明了参数的含义,注意在使用时各个参数的维度一定要正确,其他的按照步骤流程来即可.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-08-31 的相关文章

  • 2021-11-17:virtualbox6+Ubuntu18.04,虚拟机与主机间ping不通问题解决方案

    虚拟机可以ping通主机 xff0c 但是主机ping不通虚拟机的解决方案 1 先要查看虚拟机以及主机防火墙是否都关闭 xff0c 虚拟机防火墙关闭方法 xff1a a sudo apt get install ufw 安装 b sudo
  • 恒温箱课程设计(2021.4.12)

    第一步 方案选择 淘宝闲鱼csdn 主要难点在于 xff1a 小控大是难点 xff0c 对执行器和驱动的选择 最终 电磁和固态继电器都不行 xff0c 要可控相位的继电器 xff0c 太贵了 只能固态了 xff0c if控制 xff0c 效
  • 2021-02-07 SONiC SAI结构2 1D Bridge

    SONiC SAI结构2 1D Bridge 以太网交换流水线结构 SONiC SAI对交换机 路由器的报文处理流程建立了标准化的行为模型 即使不同的交换芯片内部实现报文处理的方式各不相同 xff0c 由于行为模型是报文处理过程的抽象描述
  • uC/OS-III源码下载(版本2009-2021)

    uC OS III源码下载 xff08 新版网站 xff09 下载方式一 官网 xff08 即GitHub方式 xff09 二 CSDN 下载方式 一 官网 xff08 即GitHub方式 xff09 链接 uCOS3官网 点击CODEBA
  • 2021-09-27

    虚拟环境中用pip下载安装包却安装到base环境解决方案 原因解决方案 遇到的问题 xff1a windows环境下进入虚拟环境 xff0c 使用pip install指令安装包时发现没有安装到虚拟环境下 xff0c 而是安装到了base环
  • MySQL数据库面试题(2021最新版)

    文章目录 1 数据库基础知识为什么要使用数据库什么是SQL 什么是MySQL 数据库三大范式是什么MySQL有关权限的表都有哪几个MySQL的binlog有有几种录入格式 xff1f 分别有什么区别 xff1f 2 引擎MySQL存储引擎M
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进
  • 2021-03-08

    解决大疆无人机电池电压不平衡出现电池错误提示无法起飞 一个简单的笨办法 xff0c 处理某块电芯偏低 xff0c 而另一块明显偏高 xff0c 经平衡和数据修正后 xff0c 在使用中反复 xff0c 说明各电芯之间容量发生物理不可逆的容量
  • 2021-09-14

    eclipse maven run 错误 xff1a Fatal error compiling 无效的标记 release maven compiler plugin 3 8 1 中使用release便签eclipse 使用 Run gt
  • 2021电赛F题数字识别和巡线部分

    文章之前12月发了一次 xff0c 但是我后来申请的免毕设后 xff0c 用到了一些文字 xff0c 所以删了这篇文章 xff0c 但是还是查重了 xff0c 于是我把一些程序讲解先删了 xff0c 等毕设结束后再编辑加上 这次电赛我没有准
  • 2021-01-20

    中文字库液晶模块12864示例程序范例 xff1a 液晶屏型号 xff1a JLX12864G 086 PC 3S 接口 xff1a 串行 中文字库 xff1a 带中文字库IC JLX GB2312 竖置横排 驱动IC UC1701X 与S
  • 10 个 GitHub 上最火的程序员简历项目,2021 金三银四必备!

    大家好 xff0c 我是你们的 猫哥 xff0c 一个不喜欢吃鱼 又不喜欢喵 的超级猫 前言 猫哥是一个常年混迹在 GitHub 上的猫星人 xff0c 所以发现了不少好的前端开源项目 常用技巧 xff0c 在此分享给大家 公众号 xff1
  • 3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(3)marlin 2.0.9.2 截至发稿时间2021年12月16日

    Marlin 3D Printer Firmware 头描述详见其他两个文件头描述 Copyright c 2020 MarlinFirmware https github com MarlinFirmware Marlin Based o
  • 2021-03-16

    hullib Rtc 获取时间之后必须获取日期他才会有时间 HAL RTC GetTime amp hrtc amp sTime RTC FORMAT BIN HAL RTC GetDate amp hrtc amp sDate RTC F
  • UCOSIII从官网(2021)下载

    官网地址 xff1a https www silabs com developers micrium 注意 xff1a 在进入下载前 可能 要注册一个账号 xff0c 如果可以直接下载的话不用注册也可以 xff0c 如果有小伙伴需要注册账号
  • 个人简历2021

    标题 个人简历 日期 2021 09 27 23 42 57 标签 简历 分类 工作 职业发展 说下我的个人简历吧 xff0c 希望大家能够了解我 xff0c 一起在技术这条路上一直走下去 个人信息 姓名性别年龄现居地址邮箱陈作立男29上海
  • VsCode+LaTexWorkshop外置PDF预览配置(2021.3.3)

    随着插件版本的升级有些配置命令发生了改变 xff0c 这里只是做个简单记录 xff0c 写的比较粗糙 后面有闲工夫再来做做美工 VsCode一侧配置 34 latex workshop view pdf viewer 34 34 exter
  • 2021校招_大华

    大华面试 xff1a 一面和二面 一面 xff1a 首先自我介绍 1 序列化的使用方式以及情景 2 Springboot的启动过程 3 Mysq中lB 43 树和B树索引区别 xff0c 聚簇索引和非聚簇索引区别 4 Spring中bean
  • 队列的链式存储--- 2021.10.27

    上一讲链接 xff1a 队列的基本概念 2021 10 8 队列的链式存储 xff1a 什么叫队列的链式存储呢 xff1f 我们在上一讲都知道队列的结构特点 xff0c 那么我们可不可以通过链表来实现队列 xff0c 从而实现了队列的链式存
  • ES6 Symbol

    概览 const mySymbol Symbol mySymbol console log mySymbol Symbol mySymbol console log mySymbol Symbol mySymbol false consol

随机推荐

  • Python开发Windows桌面应用程序(二)简单应用程序实现

    前言 上编blog说到用Python开发Windows桌面应用程序的环境搭建 xff0c 下面就说说如何实现一个简单的远程日志读取的功能 界面绘制 打开界面绘制工具 xff0c 选中项目后 xff0c 右键找到External Tools
  • Java SpringBoot集成微信告警推送服务

    一 申请微信告警模板 登录微信公众号平台 xff0c 在服务里面找到模板消息 我们点击从模板库中添加一个模板消息 可以通过关键字搜索告警模板 xff0c 点击详情可以查看该模板的详情与示例 xff0c 判断该模板是否试用与我们 最后找到合适
  • 物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等

    1 前言 最近对物联网产品自组网技术选型 xff0c 找到合适的组网技术 xff0c 让产品自行组网并完成数据的传输 2 参数对比 3 优缺点描述 3 1 蓝牙 优点 xff1a xff08 1 xff09 低功率 xff0c 便于电池供电
  • C# 实现国密SM3加解密封装

    1 Portable BouncyCastle 引入 右键解决方案的引用 xff0c 选择管理NuGet程序包 在浏览的搜索框中搜索 xff1a Portable BouncyCastle 选择第一个 xff0c 在右侧点击安装即可完成程序
  • Python 基于OpenCV+face_recognition实现人脸捕捉与人脸识别(照片对比)

    1 安装包依赖 与上篇通过摄像头动态识别人脸一样 xff0c 先下载好opencv python face recognition xff0c 这里因为使用的是照片对比的方式 xff0c 特意使用tkinter画了一个简单的GUI方便操作
  • Ubuntu 下NGINX 的简单使用

    1 NGINX的安装与卸载 1 1 安装NGINX apt get install nginx 1 2 NGINX操作命令 service nginx start 启动 service nginx reload 重新加载配置文件 servi
  • SpringBoot 集成Shell命令实现系统日志查询并通过API返回给前端

    1 目的 在做物联网项目中 xff0c 为了方便产品测试人员以及第三方产品集成商能通过系统快速获取设备原始数据 xff0c 因此考虑在物联网终端管理平台增加读取物联网通讯服务记录的终端日志的功能 我的想法是直接通过Java操作Linux服务
  • SPSS软件实操——ARIMA时间序列预测模型

    相关文章链接 时间序列预测 ARIMA模型 https blog csdn net beiye article details 123317316 spm 61 1001 2014 3001 5501 案例 xff1a 基于ARIMA模型对
  • SpringBoot使用阿里云邮件服务实现账户分享

    1 阿里云邮件集成 详情参见 xff1a Java SpringBoot集成阿里云短信与邮件服务 阿里云短信jar包 大鱼 gt 的博客 CSDN博客 2 使用Html模板实现邮件内容样式 2 1 引入pom lt dependency g
  • OSM学习之路(一):OSM介绍

    背景 xff1a 公司作为车联网行业 xff0c 少不了与地图打交道 xff0c 之前一直依赖谷歌 xff0c 百度等三方地图供应商来处理地图方面问题 但是随着客户量越来越大 xff0c 谷歌的吃相变得越来越难看 自7月16日起 xff0c
  • C语言单链表和结构体的结合

    链表与结构体的结合 xff0c 可以很好的方便输入输出 xff0c 以后使用链表时只需要将结构体的信息稍作修改就可以使用 xff0c 非常方便 xff01 xff01 xff01 下面是写学生学号和姓名的结构体与链表的结合create函数
  • struct和class的区别

    总结 xff0c 主要有这么几点不同 xff1a 1 struct 是值类型 xff0c class 是对象类型 2 struct 不能被继承 xff0c class 可以被继承 3 struct 默认的访问权限是public 而class
  • c++中模板类的成员函数的声明与定义应该放在头文件里

    今天尝试自己实现vector数据结构底层 xff0c 在定义vector模板类的时候 xff0c 还想像往常一样把类分为 h文件和 cpp文件 xff0c 把成员函数的声明放在 h文件中 xff0c 把具体实现放在 cpp文件中 xff0c
  • Byte 高位/低位简介绍(大端格式/小端格式)

    一个byte由8个二进制位构成1个字节 即1Byte 61 8Bit 其中左边是高位 xff0c 右边是低位 high four 61 byte amp 0xf0 gt gt 4 0xf0 61 11110000 low four 61 b
  • Python3+Requests库带验证码登陆学校教务系统的尝试。

    毕业快两年了 xff0c 上班空闲摸鱼的时候无意中打开了学校的教务系统 发现浏览器还记着我的学号和登陆密码 果然是很多东西你自己都忘了 xff0c 浏览器的云端都帮你记着 xff0c 输入验证码之后居然登陆进去了 学校的教务系统还是一如既往
  • RK3568开发笔记-socketCan编程

    目录 前言 一 socket can创建 xff1f 二 系统can节点设置 三 can过滤器设置 四 can数据发送 五 can数据接收 总结 前言 CAN是ControllerArea Network xff08 控制器局域网 xff0
  • vs2015基于UDP协议的简单通信例程

    vs2015基于UDP协议的简单通信例程 关键字 xff1a socket套接字 udp通信 注意 xff1a 1 UDP发送和接受数据分别使用sendto 和recvfrom 函数 xff0c 注意函数的用法 xff1b 2 在vs201
  • memcpy与结构体

    前言 最近小学期做通信的实验 xff0c 很有意思 通讯是用了老师统一规定的结构体 xff0c 但是苦于结构体与要传输时字符串数组的转换 xff0c 思索了很久没有结果 启发 在zigbee协议栈已经看到 xff0c 传输结构体时 xff0
  • (一)SAS初识

    1 SAS常用工作窗口 结果 xff08 Result xff09 窗口 管理SAS程序的输出结果 xff1b 日志 xff08 Log xff09 窗口 记录程序的运行情况 xff1b SAS资源管理器 xff08 Explore xff
  • 2021-08-31

    二次规划求解器OOQP的基础使用 前言一 OOQP所包含参数的定义二 简单调用1 头文件2 参数设置3 进行求解4 取出计算结果 总结 前言 OOQP作为一款强大的开源凸优化库 支持C 43 43 Matlab调用 现在这里记录下其简单的使