Can use the abs value function as an inequality constraint

(dazzy .L) #1

can i use the absolute value function as an inequality constraint
abs(x)<=eps

i’m getting the error : Disciplined convex programming error:
Illegal operation: {invalid} - {real affine}

(Mark L. Stone) #2

If x and eps are both CVX variables, affine expressions, or constants, then abs(x)<=eps should be accepted by CVX…

Please show a reproducible example. Perhaps you have an NaN somewhere in the line in which you got an error.

(dazzy .L) #3

x is a cvx variable , eps is a constant

(Mark L. Stone) #4

Show a complete reproducible example.

(dazzy .L) #5

%% CVX routine

w=ones(1,T-t0-1);
for j=1:nbr_iterations
cvx_begin 
variables p(n) z(T-t0-1) p_hat(n)
minimize (w*z)
s=1;
for i=t0+1:T
    r=[y(i-1) y(i-2) u(i-1)];
     abs(y(i)-r*p)<=eps
     s=s+1;
end
for s=1:T-t0-1
    norm(p-p_hat,inf)<=z(s);
end
cvx_end
for i=1:T-t0-1
w(i)=1/(delta+z(i));
end
end
(dazzy .L) #6

eps is just a constant

(Mark L. Stone) #7

That is not a reproducible example, and it is not what you originally claimed.

You haven;t shown what y is. Apparently, (y(i)-r*p is something invalid at least one time though its loop. But I can’t tell you which of many possible things is wrong because you haven’t provided a reproducible example. This should be easy to debug.

It appears that the only thing which changes across the nbr_iterations outer iterations is the value of w used in the objective function, which seems like it should not affect the acceptance of a later constraint statement. But then again, sometimes CVX prints out an error message which is not very indicative of what the actual problem is. So if a CVX problem is not solved, then z will be NaN,which makes w used in the next CVX problem ‘NaN`’, which will cause that next problem to produce an error message.