Python二次规划和线性规划使用实例


Posted in Python onDecember 09, 2019

这篇文章主要介绍了Python二次规划和线性规划使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

对于二次规划(quadratic programming)和线性规划(Linear Programming)问题

MATLAB里是有quadprog函数可以直接用来解决二次规划问题的,linprog函数来解决线性规划问题。Python中也有很多库用来解决,对于二次规划有CVXOPT, CVXPY, Gurobi, MOSEK, qpOASES 和 quadprog; 对于线性规划有Gurobi,PuLP, cvxopt。

目前发现quadprog进行pip install quadprog不成功,而cvxopt成功了,就先说cvxopt的使用。

安装

conda install -c conda-forge cvxopt

安装非常顺利

使用

cvxopt有自己的matrix格式,因此使用前得包装一下

对于二次规划:

def cvxopt_solve_qp(P, q, G=None, h=None, A=None, b=None):
  P = .5 * (P + P.T) # make sure P is symmetric
  args = [cvxopt.matrix(P), cvxopt.matrix(q)]
  if G is not None:
    args.extend([cvxopt.matrix(G), cvxopt.matrix(h)])
    if A is not None:
      args.extend([cvxopt.matrix(A), cvxopt.matrix(b)])
  sol = cvxopt.solvers.qp(*args)
  if 'optimal' not in sol['status']:
    return None
  return np.array(sol['x']).reshape((P.shape[1],))

对于线性规划:

def cvxopt_solve_lp(f, A, b):
  #args = [cvxopt.matrix(f), cvxopt.matrix(A), cvxopt.matrix(b)]
  #cvxopt.solvers.lp(*args)
  sol = cvxopt.solvers.lp(cvxopt.matrix(f), cvxopt.matrix(A), cvxopt.matrix(b))
  return np.array(sol['x']).reshape((f.shape[0],))

参考:

Quadratic Programming in Python

Linear Programming in Python with CVXOPT

cvxopt.org

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
spyder常用快捷键(分享)
Jul 19 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python redis存入字典序列化存储教程
Jul 16 Python
python 字符串格式化的示例
Sep 21 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python 实现IP子网计算
Feb 18 Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 #Python
如何将 awk 脚本移植到 Python
Dec 09 #Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 #Python
基于YUV 数据格式详解及python实现方式
Dec 09 #Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 #Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 #Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 #Python
You might like
php中将网址转换为超链接的函数
2011/09/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
在javascript中关于节点内容加强
2013/04/11 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
python复制文件代码实现
2013/12/23 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
python爬取51job中hr的邮箱
2016/05/14 Python
python基本语法练习实例
2017/09/19 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
自我反省检讨书
2014/01/23 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
Golang 对es的操作实例
2022/04/20 Golang