Python二次規(guī)劃和線性規(guī)劃使用實例
這篇文章主要介紹了Python二次規(guī)劃和線性規(guī)劃使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
對于二次規(guī)劃(quadratic programming)和線性規(guī)劃(Linear Programming)問題
MATLAB里是有quadprog函數(shù)可以直接用來解決二次規(guī)劃問題的,linprog函數(shù)來解決線性規(guī)劃問題。Python中也有很多庫用來解決,對于二次規(guī)劃有CVXOPT, CVXPY, Gurobi, MOSEK, qpOASES 和 quadprog; 對于線性規(guī)劃有Gurobi,PuLP, cvxopt。
目前發(fā)現(xiàn)quadprog進行pip install quadprog不成功,而cvxopt成功了,就先說cvxopt的使用。
安裝
conda install -c conda-forge cvxopt
安裝非常順利
使用
cvxopt有自己的matrix格式,因此使用前得包裝一下
對于二次規(guī)劃:
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],))
對于線性規(guī)劃:
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
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python rolling regression. 使用 Python 實現(xiàn)滾動回歸操作
這篇文章主要介紹了python rolling regression. 使用 Python 實現(xiàn)滾動回歸操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
初步介紹Python中的pydoc模塊和distutils模塊
這篇文章主要介紹了Python中的pydoc模塊和distutils模塊,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04
Python 內(nèi)置函數(shù)globals()和locals()對比詳解
這篇文章主要介紹了Python globals()和locals()對比詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
python將圖片文件轉(zhuǎn)換成base64編碼的方法
這篇文章主要介紹了python將圖片文件轉(zhuǎn)換成base64編碼的方法,涉及Python操作base64編碼的技巧,需要的朋友可以參考下2015-03-03
Jupyter notebook無法導(dǎo)入第三方模塊的解決方式
這篇文章主要介紹了Jupyter notebook無法導(dǎo)入第三方模塊的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python OpenCV 使用滑動條來調(diào)整函數(shù)參數(shù)的方法
這篇文章主要介紹了Python OpenCV 使用滑動條來調(diào)整函數(shù)參數(shù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07

