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 相关文章推荐
python中wx将图标显示在右下角的脚本代码
Mar 08 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python版名片管理系统
Nov 30 Python
Flask-WTF表单的使用方法
Jul 12 Python
python求绝对值的三种方法小结
Dec 04 Python
python爬虫基础知识点整理
Jun 02 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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批量生成缩略图的代码
2008/07/19 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
基于PHP文件操作的详解
2013/06/05 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
php随机抽奖实例分析
2015/03/04 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
详解Python 正则表达式模块
2018/11/05 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python实现猜数字游戏
2020/03/25 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
应届生自荐信
2014/06/30 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
2015年推普周活动总结
2015/03/27 职场文书
九不准学习心得体会
2016/01/23 职场文书