2013-11-25 131 views

回答

5

这是你鹅愚蠢的问题,但由于附近可能有比较懒惰的人,(用编号参数可读性)走这条线的MATLAB代码:

x = quadprog(C1, C2, C3, C4, C5, C6, C7, C8, ...) 

在Python相当于将是:

import numpy 
import cvxopt 
n = C1.shape[1] # This is for readability only  

P = C1 
q = C2 
G = numpy.vstack([C3, -numpy.eye(n), numpy.eye(n)]) 
h = numpy.hstack([C4, -C7, C8]) 
A = C5 
b = C6 

sol = cvxopt.solvers.qp(cvxopt.matrix(P), cvxopt.matrix(q), cvxopt.matrix(G), cvxopt.matrix(h), cvxopt.matrix(A), cvxopt.matrix(b)) 
x = sol['x'] 

假设你一直在使用numpy.arrays。如果您一直在使用基质,请检查this doc以找到G和h的此配方:

G = numpy.bmat('C3, -numpy.eye(n), numpy.eye(n)') 
h = numpy.bmat('C4, -C7, C8')