目录
cvxopt库的简介
CVXOPT是一个基于Python编程语言的凸优化的免费软件包。它可以与交互式Python解释器一起使用,也可以通过执行Python脚本在命令行上使用,或者通过Python扩展模块集成到其他软件中。它的主要目的是通过构建Python的广泛标准库和Python作为一种高级编程语言的优势,使凸优化应用程序的软件开发变得简单。
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. 9. >>> B = matrix([ [1.0, 2.0], [3.0, 4.0] ]) 10. >>> print(B) 11. [ 1.00e+00 3.00e+00] 12. [ 2.00e+00 4.00e+00] 13. 14. 15. >>> print(matrix([ [A] ,[B] ])) 16. [ 1.00e+00 3.00e+00 5.00e+00 1.00e+00 3.00e+00] 17. [ 2.00e+00 4.00e+00 6.00e+00 2.00e+00 4.00e+00] 18. 19. 20. >>> from cvxopt import spmatrix 21. >>> D = spmatrix([1., 2.], [0, 1], [0, 1], (4,2)) 22. >>> print(D) 23. [ 1.00e+00 0 ] 24. [ 0 2.00e+00] 25. [ 0 0 ] 26. [ 0 0 ] 27. >>> print(matrix(D)) 28. [ 1.00e+00 0.00e+00] 29. [ 0.00e+00 2.00e+00] 30. [ 0.00e+00 0.00e+00] 31. [ 0.00e+00 0.00e+00] 32.
2、求解线性规划
可以通过求解器.lp()函数指定线性程序
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]