I have an atomic constraint of the form

abs(w - w_prev) >= some_threshold

It is supposed to get every value equal to or above my threshold.

I am working on a minimization problem in CVXPY where w is my solver variable.

I tried reformulating my constraint into a positive and a negative part

cvx.pos(w-w_prev.as_matrix())[w_prev.as_matrix() >= 0.0] >= 0.001


cvx.neg(w-w_prev.as_matrix())[w_prev.as_matrix() > 0.0]  >= -0.001 

If I would wrap it into a norm() it would work for a scalar function, but I can't get my head around how(if) this can be turned into a concave constraint so I can use it in my context.

  • 1
    $\begingroup$ Your constraint is fundamentally non-convex and thus can't be expressed in DCP. For example, take $| w-1 | \geq 2$ For this constraint, $w=-1$ and $w=3$ are feasible, but $w=(-1+3)/2=1$ is not feasible. $\endgroup$ – Brian Borchers Mar 27 '19 at 18:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.