施加约束时问题不遵循DCP规则

时间:2019-08-12 12:53:11

标签: python optimization cvxpy convex-optimization

我想使用cvxpy查找具有某些给定不等式约束的数据集的中心点。

我试图做出一个约束,以使从最佳点(opt_point)到原点的距离大于一个常数,例如300。有两种方法可以做到这一点。

首先

constraints = [opt_point[0]**2 + opt_point[1]**2 >= 300]

这不起作用,我意识到可以解决<=不等式,但是不能解决>=。阅读一些页面后,我意识到quad_form函数是凸的,因此我尝试了:

constraints = [cp.quad_form(opt_point, P)>=300]

但是,任何一个都不能解决问题。

opt_point = cp.Variable(2);
cost = 0
for i in range(len(xPoints)):
    cost += cp.sum_squares(opt_point-data[i,:])
assert cost.is_convex()
P = cp.diag([1, 1])
constraints =  [cp.quad_form(opt_point, P)>>300]
prob = cp.Problem(cp.Minimize(cost),constraints)
prob.solve()
opt_point = opt_point.value;

您能否解释一下如何施加更多不平等约束而不产生以下错误?

  

问题不遵循DCP规则。但是,该问题确实遵循DGP规则。考虑使用gp=True调用此函数。

0 个答案:

没有答案