python 求解二次规划(quadprog)
二次规划
在MATLAB中,quadprog是具有线性约束的二次目标函数的求解器。
quadprog 求由下式指定的问题的最小值
H、A 和 Aeq 是矩阵,f、b、beq、lb、ub 和 x 是向量。
其具体用法为:
x = quadprog(H,f)
x = quadprog(H,f,A,b)
x = quadprog(H,f,A,b,Aeq,beq)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub)
x =quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
x =quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
x = quadprog(problem)
[x,fval] = quadprog()
[x,fval,exitflag,output] = quadprog()
[x,fval,exitflag,output,lambda] = quadprog(___)
当解决一个具有线性约束的二次规划问题时:
要求解此问题,首先输入系数矩阵。
使用MATLAB语句为:
H = [1 -1; -1 2];
f = [-2; -6];
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
[x,fval,exitflag,output,lambda] = ...quadprog(H,f,A,b);
x,fval %打印结果
当使用python进行二次型求解时,采用qpsolvers库中的solve_qp函数进行求解:
pip install cvxopt==1.2.6 cvxpy==1.1.11 Cython==0.29.22 ecos==2.0.7.post1 numpy osqp==0.6.2.post0 qdldl==0.1.5.post0 qpsolvers==1.7.0 quadprog==0.1.8 scipy scs==2.1.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
from numpy import array
from qpsolvers import solve_qpH=array([[1.,-1.],[-1.,2.]])
f=array([[-2.],[-6.]]).reshape((2,))
L=array([[1.,1.],[-1.,2.],[2.,1.]])
k=array([[2.],[2.],[3.]]).reshape((3,))x = solve_qp(H, f, L,k)
print("QP solution: x = {}".format(x))
QP solution: x = [0.66666667 1.33333333]
也可参考这位大佬的博客
(https://blog.csdn.net/u013421629/article/details/108358409)
import numpy as np
import cvxoptdef quadprog(H, f, L=None, k=None, Aeq=None, beq=None, lb=None, ub=None):"""Input: Numpy arrays, the format follows MATLAB quadprog function: https://www.mathworks.com/help/optim/ug/quadprog.htmlOutput: Numpy array of the solution"""n_var = H.shape[1]P = cvxopt.matrix(H, tc='d')q = cvxopt.matrix(f, tc='d')if L is not None or k is not None:assert(k is not None and L is not None)if lb is not None:L = np.vstack([L, -np.eye(n_var)])k = np.vstack([k, -lb])if ub is not None:L = np.vstack([L, np.eye(n_var)])k = np.vstack([k, ub])L = cvxopt.matrix(L, tc='d')k = cvxopt.matrix(k, tc='d')if Aeq is not None or beq is not None:assert(Aeq is not None and beq is not None)Aeq = cvxopt.matrix(Aeq, tc='d')beq = cvxopt.matrix(beq, tc='d')sol = cvxopt.solvers.qp(P, q, L, k, Aeq, beq)return np.array(sol['x'])if __name__ == '__main__':H=np.array([[1,-1],[-1,2]])print(H)f=np.array([[-2],[-6]])print(f)L=np.array([[1,1],[-1,2],[2,1]])print(L)k=np.array([[2],[2],[3]])print(k)res=quadprog(H, f, L,k)print(res)
python 求解二次规划(quadprog)相关推荐
- Python求解二次规划模型
在学习司守奎老师编写的Pyhon数学实验与建模.学到第6.6求解二次规划模型的时候,忽然觉得很多地方又看不懂了,之前学的一些都忘记了,所以又赶紧查资料弥补一下知识.放在这里,给后面学习的小伙伴提供一些 ...
- python求解二次规划_Python二次规划和线性规划使用实例
这篇文章主要介绍了Python二次规划和线性规划使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于二次规划(quadratic progr ...
- 数学建模:非线性规划的 Python 求解
目录 一般形式 Python 求解 1. scipy.optimize.minimize 函数 调用方式: 参数: 返回: 例 1 例 2 2. cvxopt.solvers 模块求解二次规划 标准型 ...
- 用Python求解数学规划问题
一.线性规划简介 线性规划(Linear Programming 简记为LP)是数学规划的一个重要分支. 规划问题分类 线性规划: 在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题: 整数 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python代码物理_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- 最大公约数python语言算法_使用Python求解最大公约数的实现方法
这篇文章主要介绍了使用Python求解最大公约数的实现方法,包括用Python表示欧几里得算法和Stein算法的求解原理. 1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的 ...
- 利用python求解节点介数和边介数
利用python求解节点介数和边介数 利用networkx里面的函数betweenness_centrality(G)来求解节点介数和函数edge_betweenness_centrality(G)来 ...
- python最大公约数计算_使用Python求解最大公约数的实现方法
1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数.其计算原理依赖于下面的定理: 定理: gcd(a, b) = gcd(b, a mod b) 证明: a可以表示 ...
- mysql求回购率_用户行为分析——回购率、复购率(SQL、Python求解)
有一个多月没有用Python了,有些生疏o(╥﹏╥)o.通过秦路老师的一道题目,分别使用sql和python求解,顺便复习下python点,重点关注[复购率].[回购率]的解法 ☞秦路老师视频讲解(使 ...
最新文章
- Python单元测试去哪儿了?
- python编写测试系统_纯 python 编写的一套 dubbo 测试平台
- $.ajax data怎么处理_不会吧,不会吧,不愧是Ajax,jQuery Ajax啊
- “最害怕过周末”、“希望每天都干活”、“水电费又白交了”
- oracle表空间处理操作
- C++的简单文本IO
- JAVA NIO基础知识
- (2)css语法和使用方式
- C基础——fopen() 的 mode参数
- linux内核装载vfs过程
- 算法:Jump Game
- postgresql 数据库迁移
- manjaro主目录设置英文
- 树莓派安装opencv3.4.3时缺少boostdesc等文件及一些常见的报错
- date函数详细用法
- 苹果电脑和windows电脑怎么选择?开发应该用什么电脑?视频剪辑用什么电脑?电脑推荐
- 通过浏览器访问服务器
- python常用关键字意思_Python 关键字列表及示例
- Am335x 平台上GSM 3G/4G modem的一些硬件和软件的杂事
- 超级终端之手机连接篇