I am new to CVX and i tried the following optimization problem:
I cut out most of the code to keep only the wrong part. I wrote the formula in the picture
%% -----------------------------calculate subect 2 left
for m=1:M
sb2_left(m) = sum(Gamma(m,: ) .* (cauy(m,:).^2));
end
%% -----------------------------calculate subect 2 right
for m=1:M
sb2_right(m) = V(m)^2;
end
%% -----------------------------subject------------------------------
subject to
for m=1:M
sb2_left(m) <= sb2_right(m);
end
for m=1:M
0 <= V(m) <=1;
end
cvx_end
i got the following error message for line 20 in my code, sb2_left(m) <= sb2_right(m) ;: Disciplined convex programming error: Invalid constraint: {convex} <= {convex}
What’s wrong?
can anyone help me with this problem?
Thanks for your reply. I read the FAQ based on your suggestion, I think my constraint is not in line with the DCP ruleset. This problem has been proved to be quasi-convex, so to solve some of the feasibility issues. My purpose is to reproduce the original author’s results, how can I modify the constraint expression, can you give me some advice?
I have read it but I don’t find a solution for the problem I have.
subject to
for iUserIndex = 1 : NumberOfUsers
zeros(1 , NumberOfAPs) <= Mu_New <= ones(1 , NumberOfAPs);
New_Eita >= zeros(NumberOfUsers , NumberOfAPs);
sum(New_Eita.^2 .* ALL_Users_Gamma_k) <= Mu_New.^2;
end
Matlab gives me this error
Error using cvxprob/newcnstr (line 192)
Disciplined convex programming error:
Invalid constraint: {convex} <= {convex}
Actually, this is not my optimization problem. I am just trying to implement the same problem that mentioned above and I got the same error !!
If Mu_New. only appears as shown (and not otherwise in non-squared form), then you can use something along the lines of (this may not be quite right, because you don’t seem to have paid much attention to the indexing, and in any event have not shown us your complete code, including variable declarations):
unfortunately, it appears in non-squared form in other constraints.
sorry for bothering you but I have just started working on optimization and I have one more question that may helps. if its is a slack variable the definition will be changed or it will be the same as other variables ?!.
if its is a slack variable the definition will be changed or it will be the same as other variables ?!.
Is what definition changed? A slack variable is declared the same as any other variable. You can include the nonnegative keyword as part of the declaration, or add a constraint to constrain it to be nonnegative.