我比较了许多二次规划(QP)求解器,如cvxopt、qpoases和osqp,发现 osqp 对我的应用程序工作得更快更好。
现在,我想最小化具有等式和不等式约束的不定二次函数,这些约束可能会因各种因素而被违反。所以我想使用 l1 惩罚方法来惩罚违反约束的行为。
我修改了一个示例,以违反约束。
import osqp
import scipy.sparse as sparse
import numpy as np
# Define problem data
P = sparse.csc_matrix([[4., 1.], [1., 2.]])
q = np.array([1., 1.])
A = sparse.csc_matrix([[1., 0.], [0., 1.], [1., 0.], [0., 1.]])
l = np.array([0., 0., 0.2, 1.1])
u = np.array([1., 1., 0.2, 1.1])
# Create an OSQP object
prob = osqp.OSQP()
# Setup workspace and change alpha parameter
prob.setup(P, q, A, l, u, alpha=1.0)
# Solve problem
res = prob.solve()
print res.x
显然,这是一个不可行的问题,所以我们需要改变目标函数来惩罚错误。所以,我需要帮助来制定可以使用 osqp 的 python 接口解决的问题。
或者,请让我知道是否有任何其他 python 接口可用于解决这种约束冲突问题。