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 - gamma

*Ws)) >= gamma*(sigma_UE);

trace((Xi_2)

*(Wc - gamma*Ws)) >= gamma*(sigma_UE);

trace((Xi_3)

*(Wc - gamma*Ws)) >= 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.