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

 更新时间:2019年12月09日 10:56:41   投稿:yaominghui  
这篇文章主要介绍了Python二次规划和线性规划使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

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

目前发现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的paramiko模块实现远程控制和传输示例

    python的paramiko模块实现远程控制和传输示例

    本篇文章主要介绍了python的paramiko模块实现远程控制和传输示例,非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • Python类class参数self原理解析

    Python类class参数self原理解析

    这篇文章主要介绍了Python类class参数self原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 使用Python下的XSLT API进行web开发的简单教程

    使用Python下的XSLT API进行web开发的简单教程

    这篇文章主要介绍了使用Python下的XSLT API进行web开发的简单教程,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • 浅析python 字典嵌套

    浅析python 字典嵌套

    这篇文章主要介绍了python 字典嵌套的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • Python实现竖排打印传单手机号码易撕条

    Python实现竖排打印传单手机号码易撕条

    这篇文章主要介绍了Python实现竖排打印传单手机号码易撕条,代码非常简单,功能很实用,推荐给大家,有需要的小伙伴,参考下
    2015-03-03
  • 六个实用Pandas数据处理代码

    六个实用Pandas数据处理代码

    这篇文章主要介绍了六个实用Pandas数据处理代码,文章围绕主题相相关内容,具有一定的参考价价值,需要的小伙伴可以参考一下
    2022-05-05
  • Python使用GeoIP2实现地图定位

    Python使用GeoIP2实现地图定位

    GeoIP2是一种IP地址定位库,它允许开发人员根据IP地址查找有关位置和地理位置的信息,这篇文章主要为大家介绍了python如何使用GeoIP2实现地图定位,感兴趣的可以了解下
    2023-10-10
  • 使用Python实现文字转语音并播放功能

    使用Python实现文字转语音并播放功能

    这篇文章主要给大家介绍了使用Python实现文字转语音并播放功能,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • Python命令行参数argv和argparse该如何使用

    Python命令行参数argv和argparse该如何使用

    这篇文章主要介绍了Python命令行参数argv和argparse该如何使用,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python制作数据导入导出工具

    Python制作数据导入导出工具

    正好最近在学习python,于是打算用python实现了数据导入导出工具,由于是新手,所以写的有些不完善的地方还请见谅
    2015-07-07

最新评论