Dear all,
When I add a equality constraint about “T_F” to "subject to " in cvx I got this error
错误使用 cvxprob/newcnstr (line 192)
Disciplined convex programming error:
Invalid constraint: {real affine} == {convex}
My code show as follow
cvx_begin
variable qo(2,J) nonnegative;
variable z(K,J) nonnegative;
variable T_F(1,J+1) nonnegative;
variable T_H(1,J) nonnegative;
variable o(1,J) nonnegative;
t_u = a .* D_n .* pow_p(z,-1);
t_c = c .* D_n ./ f_kmj;
expression e;
e = sum(o) + T_F(J+1) ;
minimize(e)
subject to
T_F(1,end) == norm(qo(:,1)-QS(:,n)) / V_Mean;
for j=1:J
if j ~= J
T_F(1,j) == norm(qo(:,j+1)-qo(:,j)) / V_Mean;
else
T_F(1,j) == norm(QE(:,n)-qo(:,j)) / V_Mean;
end
end
o >= max(t_c + t_u );
T_H(1,:) >= max(t_u );
for j=1:J
o(j) >= T_H(1,j) + T_F(1,j);
end
Next I tranform the euqality constrains to a assignment before “subject to”, where the code show as follow:
cvx_begin
variable qo(2,J) nonnegative;
variable z(K,J) nonnegative;
variable T_F(1,J+1) nonnegative;
variable T_H(1,J) nonnegative;
variable o(1,J) nonnegative;
t_u = a .* D_n .* pow_p(z,-1);
t_c = c .* D_n ./ f_kmj;
expression e;
e = sum(o) + T_F(J+1) ;
minimize(e)
T_F(1,end) = norm(qo(:,1)-QS(:,n)) / V_Mean;
for j=1:J
if j ~= J
T_F(1,j) = norm(qo(:,j+1)-qo(:,j)) / V_Mean;
else
T_F(1,j) = norm(QE(:,n)-qo(:,j)) / V_Mean;
end
end
subject to
T_F(1,end) = norm(qo(:,1)-QS(:,n)) / V_Mean;
for j=1:J
if j ~= J
T_F(1,j) = norm(qo(:,j+1)-qo(:,j)) / V_Mean;
else
T_F(1,j) = norm(QE(:,n)-qo(:,j)) / V_Mean;
end
end
0<=qo<=M;
o >= max(t_c + t_u );
T_H(1,:) >= max(t_u );
for j=1:J
o(j) >= T_H(1,j) + T_F(1,j);
end
I got this error "
错误使用 cvx_end (line 70)
The following cvx variable(s) have been cleared or overwritten:
T_F
This is often an indication that an equality constraint was
written with one equals ‘=’ instead of two ‘==’. The model
must be rewritten before cvx can proceed."
How can I correct the error?