Py之cvxopt:cvxopt库的简介、安装、使用方法之详细攻略

举报
一个处女座的程序猿 发表于 2021/03/28 00:01:45 2021/03/28
【摘要】 Py之cvxopt:cvxopt库的简介、安装、使用方法之详细攻略         目录 cvxopt库的简介 cvxopt库的安装 cvxopt库的使用方法 1、创建矩阵 2、求解线性规划       cvxopt库的简介        CVXOPT是一个基于Python编程语言的凸优化的免费软件包。它可以与交互式Python解释器一起使用,...

Py之cvxopt:cvxopt库的简介、安装、使用方法之详细攻略

 

 

 

 

目录

cvxopt库的简介

cvxopt库的安装

cvxopt库的使用方法

1、创建矩阵

2、求解线性规划


 

 

 

cvxopt库的简介

       CVXOPT是一个基于Python编程语言的凸优化的免费软件包。它可以与交互式Python解释器一起使用,也可以通过执行Python脚本在命令行上使用,或者通过Python扩展模块集成到其他软件中。它的主要目的是通过构建Python的广泛标准库和Python作为一种高级编程语言的优势,使凸优化应用程序的软件开发变得简单。

官网http://cvxopt.org/

 

 

cvxopt库的安装

pip install cvxopt

 

 

 

cvxopt库的使用方法

1、创建矩阵

CVXOPT有单独的稠密和稀疏矩阵对象。这个例子演示了创建密集和稀疏矩阵的不同方法。使用matrix()函数创建一个密集矩阵;它可以通过列表(或迭代器)创建:


  
  1. >>> from cvxopt import matrix
  2. >>> A = matrix([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], (2,3))
  3. >>> print(A)
  4. [ 1.00e+00 3.00e+00 5.00e+00]
  5. [ 2.00e+00 4.00e+00 6.00e+00]
  6. >>> A.size
  7. (2, 3)
  8. >>> B = matrix([ [1.0, 2.0], [3.0, 4.0] ])
  9. >>> print(B)
  10. [ 1.00e+00 3.00e+00]
  11. [ 2.00e+00 4.00e+00]
  12. >>> print(matrix([ [A] ,[B] ]))
  13. [ 1.00e+00 3.00e+00 5.00e+00 1.00e+00 3.00e+00]
  14. [ 2.00e+00 4.00e+00 6.00e+00 2.00e+00 4.00e+00]
  15. >>> from cvxopt import spmatrix
  16. >>> D = spmatrix([1., 2.], [0, 1], [0, 1], (4,2))
  17. >>> print(D)
  18. [ 1.00e+00 0 ]
  19. [ 0 2.00e+00]
  20. [ 0 0 ]
  21. [ 0 0 ]
  22. >>> print(matrix(D))
  23. [ 1.00e+00 0.00e+00]
  24. [ 0.00e+00 2.00e+00]
  25. [ 0.00e+00 0.00e+00]
  26. [ 0.00e+00 0.00e+00]

 

2、求解线性规划

可以通过求解器.lp()函数指定线性程序

begin{array}{ll} mbox{minimize}   &  2x_1 + x_2  mbox{subject to} &   -x_1  + x_2 leq 1  & x_1  + x_2 geq 2  & x_2 geq 0  & x_1 -2x_2 leq 4 end{array}


  
  1. >>> from cvxopt import matrix, solvers
  2. >>> A = matrix([ [-1.0, -1.0, 0.0, 1.0], [1.0, -1.0, -1.0, -2.0] ])
  3. >>> b = matrix([ 1.0, -2.0, 0.0, 4.0 ])
  4. >>> c = matrix([ 2.0, 1.0 ])
  5. >>> sol=solvers.lp(c,A,b)
  6. pcost dcost gap pres dres k/t
  7. 0: 2.6471e+00 -7.0588e-01 2e+01 8e-01 2e+00 1e+00
  8. 1: 3.0726e+00 2.8437e+00 1e+00 1e-01 2e-01 3e-01
  9. 2: 2.4891e+00 2.4808e+00 1e-01 1e-02 2e-02 5e-02
  10. 3: 2.4999e+00 2.4998e+00 1e-03 1e-04 2e-04 5e-04
  11. 4: 2.5000e+00 2.5000e+00 1e-05 1e-06 2e-06 5e-06
  12. 5: 2.5000e+00 2.5000e+00 1e-07 1e-08 2e-08 5e-08
  13. >>> print(sol['x'])
  14. [ 5.00e-01]
  15. [ 1.50e+00]

 

 

 

 

 

 

 

 

 

 

 

 

文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:yunyaniu.blog.csdn.net/article/details/111026294

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。