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
HELP! How to implement it? I want to let ta_3=0, when cvx variables q_f=0. (tp is propogation delay.)
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.
M_upper be upper bound for
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
variable b(N,AP) binary q_f - small_positive_number >= b-1 ta_3 <= M_upper*b ta_3 >= M_lower*b
Thanks for your reply! I’ll have a try.