Cvx running:How to understand the result "cvx_optbnd :-Inf"

How to understand the result “cvx_optbnd :-Inf” .
And got the “cvx_optval” and cvx_status “solved” after running the cvx program

cvx_optbnd is undocumented, and appears to take the value, pstr.bound, whatever that is.

Perhaps you can show at least all the solver and CVX output, or better yet, also a complete repoducible problem, with all input data.

Thanks for your kindly reply.Here are the main part of the optimal problem and the output of CVX .

       ite1=0;
        obj1=zeros(1,100);
        while 1
    cvx_begin 
          variable W(Nt,d,KI) complex  
          expression rate(1,KI)
          expression R1(1,KI)
          expression R2(1,KI)
          for i=1:KI    
              rate(i) = square_pos(norm(sqrtm(A)*W(:,:,i), 'fro')) - real(trace(V(:,:,i)*U(:,:,i)'*H(:,:,i)*W(:,:,i))) - ...
              - real(trace(V(:,:,i)*W(:,:,i)'*H(:,:,i)'*U(:,:,i))) ;
              
             %square_pos(norm(sum(W(:,:,i),3),'fro')) <= Pbs;
              R1(i) = square_pos(norm(W(:,:,i),'fro')) ;
          
              R2(i) = 2*real( eta*( trace(W_(:,:,i)'*G*W(:,:,i))) ) -...
                      real( eta*( trace(W_(:,:,i)'*G*W_(:,:,i))))  ;
                     %square_pos(norm(sqrtm(G)*W_(:,:,i), 'fro'));

          end
          minimize sum(rate)
          subject to
          sum(R1) <= Pbs;
          sum(R2) >= PE;
      cvx_end
      W_=W;
      
      %judge convergence
      ite1 = ite1 + 1;
      obj1(ite1) = sum(rate);
          if ite1 > 1 && (abs(obj1(ite1)-obj1(ite1-1))/obj1(ite1-1) < 1e-3 || ite1 >= 200) 
             break
          end
         end

cvx_cputime:5.281250000000000
cvx_optbnd:-Inf
cvx_optval:7.064653103408999e-09
cvx_slvitr:20
cvx_slvtol:7.819996132118421e-09
cvx_status:'Solved'

Please show the CVX and solver output.corresponding to the CVX instance (within the while loop) in question,.

However, because cvx_optbnd is undocumented, I would assume it’s just for “internal” (developer) use, and would not pay attention to its value.

I have the same problem where cvx_optbnd is Inf , but I don’t understand what it means. Does this indicate that my problem is infeasible or unbounded, even though I have received the cvx_status of ‘Solved’ ?

cvx_begin quiet
cvx_solver sedumi
cvx_precision best
variable Wc(M,M) hermitian;
variable Ws(M,M) hermitian;
% variable wc(M,1);
% variable ws(M,1);
maximize (trace((Mr)(Wc+Ws)))
subject to
Wc == hermitian_semidefinite(M);
Ws == hermitian_semidefinite(M);
trace(Wc + Ws) <= Ptx;
trace((Xi_1)
(Wc - gammaWs)) >= gamma(sigma_UE);
trace((Xi_2)(Wc - gammaWs)) >= gamma*(sigma_UE);
trace((Xi_3)(Wc - gammaWs)) >= gamma*(sigma_UE);
cvx_end

Wc_opt = Wc;
Ws_opt = Ws;

% Eigenvalue Decomposition
[Wc_x,Wc_y] = eig(Wc);
lamda_vec_Wc = diag(Wc_y);
[lamda_max_Wc,ii] = max(lamda_vec_Wc);
eigvec_max_c = Wc_x(:,ii);
wc_opt = sqrt(lamda_max_Wc)*eigvec_max_c;

[Ws_x,Ws_y] = eig(Ws);
lamda_vec_Ws = diag(Ws_y);
[lamda_max_Ws,ii] = max(lamda_vec_Ws);
eigvec_max_s = Ws_x(:,ii);
ws_opt = sqrt(lamda_max_Ws)*eigvec_max_s;

The solver output is as follow:
cxv_cputime: 3.2188
cvx_optbnd: Inf
cvx_optval: 13.1237
cvx_slvitr: 46
cvx_slvtol : 5.8434e-14
cvx_status : ‘Solved’

I recommend that cvx_optbnd be ignored. It is undocumented. Just pay attention to the solver and CVX output which is dccumented.

1 Like