Python二次规划和线性规划使用实例
这篇文章主要介绍了Python二次规划和线性规划使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
对于二次规划(quadraticprogramming)和线性规划(LinearProgramming)问题
MATLAB里是有quadprog函数可以直接用来解决二次规划问题的,linprog函数来解决线性规划问题。Python中也有很多库用来解决,对于二次规划有CVXOPT,CVXPY,Gurobi,MOSEK,qpOASES和quadprog;对于线性规划有Gurobi,PuLP,cvxopt。
目前发现quadprog进行pipinstallquadprog不成功,而cvxopt成功了,就先说cvxopt的使用。
安装
condainstall-cconda-forgecvxopt
安装非常顺利
使用
cvxopt有自己的matrix格式,因此使用前得包装一下
对于二次规划:
defcvxopt_solve_qp(P,q,G=None,h=None,A=None,b=None): P=.5*(P+P.T)#makesurePissymmetric args=[cvxopt.matrix(P),cvxopt.matrix(q)] ifGisnotNone: args.extend([cvxopt.matrix(G),cvxopt.matrix(h)]) ifAisnotNone: args.extend([cvxopt.matrix(A),cvxopt.matrix(b)]) sol=cvxopt.solvers.qp(*args) if'optimal'notinsol['status']: returnNone returnnp.array(sol['x']).reshape((P.shape[1],))
对于线性规划:
defcvxopt_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)) returnnp.array(sol['x']).reshape((f.shape[0],))
参考:
QuadraticProgramminginPython
LinearProgramminginPythonwithCVXOPT
cvxopt.org
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。