Py之cvxopt:cvxopt庫的簡介、安裝、使用方法之詳細攻略
阿新 • • 發佈:2020-12-11
技術標籤:Python_Libraries
Py之cvxopt:cvxopt庫的簡介、安裝、使用方法之詳細攻略
目錄
cvxopt庫的簡介
CVXOPT是一個基於Python程式語言的凸優化的免費軟體包。它可以與互動式Python直譯器一起使用,也可以通過執行Python指令碼在命令列上使用,或者通過Python擴充套件模組整合到其他軟體中。它的主要目的是通過構建Python的廣泛標準庫和Python作為一種高階程式語言的優勢,使凸優化應用程式的軟體開發變得簡單。
cvxopt庫的安裝
pip install cvxopt
cvxopt庫的使用方法
1、建立矩陣
CVXOPT有單獨的稠密和稀疏矩陣物件。這個例子演示了建立密集和稀疏矩陣的不同方法。使用matrix()函式建立一個密集矩陣;它可以通過列表(或迭代器)建立:
>>> from cvxopt import matrix >>> A = matrix([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], (2,3)) >>> print(A) [ 1.00e+00 3.00e+00 5.00e+00] [ 2.00e+00 4.00e+00 6.00e+00] >>> A.size (2, 3) >>> B = matrix([ [1.0, 2.0], [3.0, 4.0] ]) >>> print(B) [ 1.00e+00 3.00e+00] [ 2.00e+00 4.00e+00] >>> print(matrix([ [A] ,[B] ])) [ 1.00e+00 3.00e+00 5.00e+00 1.00e+00 3.00e+00] [ 2.00e+00 4.00e+00 6.00e+00 2.00e+00 4.00e+00] >>> from cvxopt import spmatrix >>> D = spmatrix([1., 2.], [0, 1], [0, 1], (4,2)) >>> print(D) [ 1.00e+00 0 ] [ 0 2.00e+00] [ 0 0 ] [ 0 0 ] >>> print(matrix(D)) [ 1.00e+00 0.00e+00] [ 0.00e+00 2.00e+00] [ 0.00e+00 0.00e+00] [ 0.00e+00 0.00e+00]
2、求解線性規劃
可以通過求解器.lp()函式指定線性程式
>>> from cvxopt import matrix, solvers >>> A = matrix([ [-1.0, -1.0, 0.0, 1.0], [1.0, -1.0, -1.0, -2.0] ]) >>> b = matrix([ 1.0, -2.0, 0.0, 4.0 ]) >>> c = matrix([ 2.0, 1.0 ]) >>> sol=solvers.lp(c,A,b) pcost dcost gap pres dres k/t 0: 2.6471e+00 -7.0588e-01 2e+01 8e-01 2e+00 1e+00 1: 3.0726e+00 2.8437e+00 1e+00 1e-01 2e-01 3e-01 2: 2.4891e+00 2.4808e+00 1e-01 1e-02 2e-02 5e-02 3: 2.4999e+00 2.4998e+00 1e-03 1e-04 2e-04 5e-04 4: 2.5000e+00 2.5000e+00 1e-05 1e-06 2e-06 5e-06 5: 2.5000e+00 2.5000e+00 1e-07 1e-08 2e-08 5e-08 >>> print(sol['x']) [ 5.00e-01] [ 1.50e+00]