K=4;
A =[ 24.0173 17.6637 78.0226 60.4402];
B =[ 156.1265 162.4801 102.1212 119.7036];
cvx_begin
variable tau0 nonnegative
tau1=1-tau0;
for i=1:K
R1=-rel_entr(tau1+ ((B(i)./c(i)) .* tau0 ), tau1+((B(i)+A(i))./c(i)) .* tau0 );
R2=-rel_entr( (B(i) ./ A(i)).*tau1 + (B(i)^2 ./( A(i).*c(i) ) ).*tau0, ...
(B(i) ./ A(i)).*tau1 + (B(i)^2 ./( A(i).*c(i) ) ).*tau0+ (B(i) ./ c(i)).*tau0) ;
R3=-rel_entr((B(i) ./ A(i)).*tau1 + (B(i)^2 ./( A(i).*c(i)) ).*tau0+ (B(i) ./ c(i)).*tau0,...
(B(i) ./ A(i)).*tau1 + (B(i)^2 ./( A(i).*c(i) ) ).*tau0) ;
end
maximize (R1+R2+R3);
subject to
tau0<=1;
cvx_end
CVX Warning:
Models involving “rel_entr” or other functions in the log, exp, and entropy
family are solved using an experimental successive approximation method.
This method is slower and less reliable than the method CVX employs for
other models. Please see the section of the user’s guide entitled
The successive approximation method
for more details about the approach, and for instructions on how to
suppress this warning message in the future.
Successive approximation method to be employed.
For improved efficiency, SDPT3 is solving the dual problem.
SDPT3 will be called several times to refine the solution.
Original size: 38 variables, 13 equality constraints
12 exponentials add 96 variables, 60 equality constraints
Cones | Errors |
Mov/Act | Centering Exp cone Poly cone | Status
--------±--------------------------------±--------
3/ 3 | 1.452e+00 1.422e-01 0.000e+00 | Failed
3/ 3 | 1.966e-01 3.158e-03 0.000e+00 | Failed
2/ 2 | 1.044e-02 6.073e-06 0.000e+00 | Failed
0/ 2 | 8.000e+00 1.399e+06 1.399e+06 | Failed
0/ 0 | 0.000e+00 0.000e+00 0.000e+00 | Failed
0/ 2 | 8.000e+00 1.417e+08 1.417e+08 | Failed
Status: Failed
Optimal value (cvx_optval): NaN
For my code , CVX failed to solve the problem. And I have noticed a suggestion for such issues. Hence I installed CVXQUAD.
As I noticed, rel_entr_quad(x,y)=x.*log(x./y). I replaced rel_entr(x,y) in the above program as rel_entr_quad(x,y). Then, again problem is not solved. And obtained as follows.
Calling SDPT3 4.0: 242 variables, 97 equality constraints
For improved efficiency, SDPT3 is solving the dual problem.
num. of constraints = 97
dim. of sdp var = 144, num. of sdp blk = 72
dim. of linear var = 26
SDPT3: Infeasible path-following algorithms
version predcorr gam expon scale_data
HKM 1 0.000 1 0
it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime
0|0.000|0.000|8.7e+01|1.9e+01|5.9e+04| 6.396305e+02 0.000000e+00| 0:0:00| chol 1 1
1|0.603|0.860|3.5e+01|2.9e+00|2.3e+04| 4.525474e+02 -4.035508e+02| 0:0:00| chol 1 1
2|0.602|0.959|1.4e+01|1.5e-01|1.2e+04| 2.911977e+02 -3.647883e+02| 0:0:00| chol 1 1
3|0.872|0.994|1.8e+00|3.9e-03|1.6e+03| 2.994727e+01 -1.665109e+02| 0:0:00| chol 1 1
4|0.778|1.000|3.9e-01|3.0e-04|5.0e+02| 2.155566e+00 -9.241729e+01| 0:0:00| chol 1 1
5|0.887|1.000|4.4e-02|9.0e-05|5.4e+01|-7.986274e+00 -1.681680e+01| 0:0:00| chol 1 1
6|0.962|0.969|1.7e-03|3.9e-04|2.4e+00|-9.305796e+00 -9.688913e+00| 0:0:00| chol 1 1
7|0.895|0.963|1.8e-04|5.0e-05|1.8e-01|-9.344975e+00 -9.293160e+00| 0:0:00| chol 2 2
8|0.267|0.240|1.3e-04|6.7e-05|1.8e-01|-9.312006e+00 -9.276831e+00| 0:0:00| chol 2 2
9|0.256|0.224|1.0e-04|7.9e-05|1.9e-01|-9.289458e+00 -9.266299e+00| 0:0:00| chol 2 2
10|0.144|0.253|8.6e-05|7.9e-05|2.0e-01|-9.279087e+00 -9.257261e+00| 0:0:00| chol 2 2
11|0.199|0.221|6.9e-05|7.9e-05|2.0e-01|-9.265512e+00 -9.251226e+00| 0:0:00| chol 2 2
12|0.239|0.227|5.3e-05|7.5e-05|1.9e-01|-9.252567e+00 -9.246240e+00| 0:0:00| chol 2 2
13|0.170|0.253|4.4e-05|6.6e-05|1.9e-01|-9.246127e+00 -9.241606e+00| 0:0:00| chol 2 2
14|0.246|0.293|3.3e-05|5.6e-05|1.7e-01|-9.237954e+00 -9.237355e+00| 0:0:00| chol 2 2
15|0.359|0.376|2.1e-05|4.1e-05|1.5e-01|-9.229331e+00 -9.232821e+00| 0:0:00| chol 2 2
16|0.657|0.436|7.3e-06|2.8e-05|7.7e-02|-9.220882e+00 -9.227992e+00| 0:0:00| chol 2 2
17|0.113|0.445|6.5e-06|1.7e-05|7.7e-02|-9.219804e+00 -9.222825e+00| 0:0:00| chol 2 2
18|0.229|0.402|5.0e-06|1.1e-05|7.1e-02|-9.217905e+00 -9.219596e+00| 0:0:00| chol 3 3
19|0.188|0.575|4.1e-06|5.8e-06|7.3e-02|-9.216276e+00 -9.216479e+00| 0:0:00| chol 3 2
20|0.163|0.936|3.4e-06|1.2e-06|8.1e-02|-9.214699e+00 -9.213638e+00| 0:0:00| chol 3 3
21|0.455|0.974|1.9e-06|7.1e-07|6.1e-02|-9.210989e+00 -9.212615e+00| 0:0:01| chol 3 3
22|0.844|1.000|2.8e-07|3.7e-07|1.2e-02|-9.209798e+00 -9.210262e+00| 0:0:01| chol 5 5
23|0.527|0.611|1.3e-07|2.0e-07|6.1e-03|-9.209346e+00 -9.208964e+00| 0:0:01| chol
linsysolve: Schur complement matrix not positive definite
switch to LU factor. lu 11 2
24|0.074|0.059|1.5e-07|2.2e-07|5.7e-03|-9.209583e+00 -9.209006e+00| 0:0:01| lu 11 2
25|0.450|0.384|1.4e-07|1.6e-07|4.0e-03|-9.209782e+00 -9.208957e+00| 0:0:01| lu 11 ^25
26|0.059|0.002|1.5e-07|1.9e-07|4.1e-03|-9.210310e+00 -9.208963e+00| 0:0:01| lu 23 2
27|0.132|0.087|1.6e-07|2.1e-07|4.1e-03|-9.210735e+00 -9.209177e+00| 0:0:01|
stop: progress is too slow
stop: progress is bad
number of iterations = 27
primal objective value = -9.20978219e+00
dual objective value = -9.20895652e+00
gap := trace(XZ) = 3.95e-03
relative gap = 2.03e-04
actual relative gap = -4.25e-05
rel. primal infeas (scaled problem) = 1.45e-07
rel. dual " " " = 1.63e-07
rel. primal infeas (unscaled problem) = 0.00e+00
rel. dual " " " = 0.00e+00
norm(X), norm(y), norm(Z) = 1.0e+03, 1.9e+04, 2.5e+04
norm(A), norm(b), norm© = 3.1e+01, 2.8e+01, 6.7e+00
Total CPU time (secs) = 0.60
CPU time per iteration = 0.02
termination code = -5
DIMACS: 2.0e-07 0.0e+00 5.5e-07 0.0e+00 -4.3e-05 2.0e-04
Status: Failed
Optimal value (cvx_optval): NaN
Anyway as per the suggestion here, no modifications are needed for my original code. Still I cannot understand why my problem is not solved.