# HELP! How to implement it? I want to let ta_3=0, when cvx variables q_f=0. (tp is propogation delay.)

``````        cvx_begin
variables q_f(N,AP)
expression ta_4(UE,AP)
expression tbh1(UE,N)
ta_3 = 0;
for m = 1:UE
for j = 1:N
for k = 1:AP
if map_UE_AP(m,k)~=0
ta_4(m,k) =  prob_f(j)*q_f(j,k)*B/r_AP_UE(k,m)+prob_f(j)*tp(m,k)*q_f(j,k)*inv_pos(q_f(j,k)+eps);
else
ta_4(m,k) = 0;
end
end
ta_3 = ta_3+max(ta_4(m,:));
end
end
tbh = map_UE_AP*q_f';
tbh = max(1-tbh,0);
Tbh = sum(tbh*prob_f)*pms.time;
tt = ta_3 + Tbh;
q = sum(q_f,1);
minimize(tt)
subject to
0<= q_f(:,:) <=1;
0<= q(:) <=C(:);
cvx_end
``````

In order for this to make sense, I will presume that `ta_3` is also declared an N by AP CVX variable, and the statement `ta_3 = 0` needs to be removed from the program.

You will need to choose a tolerance, `small_positive_number` for what constitutes equaling zero.

Let `M_upper` be upper bound for `ta_3`, and `M_lower` be lower bound for `ta_3`. I presume that `M_lower <= 0`, else your condition could never be satisfied.

My formulation utilizes that `0 <= q_f <= 1`. If that were not the case, modifications would be required.

`q_f < small_positive_number``b = 0`, which forces `ta_3 = 0`.
`q_f >= small_positive_number` allows `b = 1`, which doesn’t additionally constrain `ta_3`.

``````variable b(N,AP) binary
q_f - small_positive_number >= b-1
ta_3 <= M_upper*b
ta_3 >= M_lower*b
``````