Python-cvxopt庫的使用(2)(解決QP問題)

對於python cvxopt 庫,這個庫用於求解線性和二次規劃。本節介紹如何求解線性規劃問題。
形如以下的問題:
在這裏插入圖片描述
我們將其寫成標準形式:
在這裏插入圖片描述
注意,約束條件需要化爲:
在這裏插入圖片描述
對應寫出P,q,G,h,A,b矩陣。

P=2 * matrix([[2., 0.5],[0.5,1.]])
q=matrix([1.,1.])
G=matrix([[-1.,0.],[0.,-1.]])
h=matrix([0.,0.])
A=matrix([1.,1.],(1,2))
b=matrix(1.)

要注意,這裏的matrix是cvx庫的matrix寫法,要求是按列從左到右書寫。另外,要嚴格按照標準形式的方式寫出對應矩陣。

接下來調用標準的求解器solver.lp計算:

solvers.options['show_progress'] = True
sol = solvers.qp(P,q,G,h,A,b)
print(sol['x'])
print(sol['primal objective'])

結果如下:

     pcost       dcost       gap    pres   dres
 0:  1.8889e+00  7.7778e-01  1e+00  2e-16  2e+00
 1:  1.8769e+00  1.8320e+00  4e-02  1e-16  6e-02
 2:  1.8750e+00  1.8739e+00  1e-03  1e-16  5e-04
 3:  1.8750e+00  1.8750e+00  1e-05  0e+00  5e-06
 4:  1.8750e+00  1.8750e+00  1e-07  2e-16  5e-08
Optimal solution found.
[ 2.50e-01]
[ 7.50e-01]
1.8750000000000182
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章