# Unbounded, cvx_optval = Inf

My problem has no constraints and there’s no way it’s equal infinity because the denumerator can’t be equal 0 as I divide by:
certainPositiveVal(which can be zero) + Positive nonzero constant

However it’s unbounded, is there a possible reason for this ?

Please show a complete reproducible program.

1 Like

close all
numberOfUsers =3;
numberOfResources =3;
numberOfRRHs =3;
side =150;

G(:,:,1) = [1.2937 0.0630 0.6123
19.5208 17.0031 3.8738
3.1724 1.0392 2.8971 ];

G(:,:,2) = [ 0.9842 3.8887 1.2775
7.1651 8.1500 2.9065
31.6739 39.0287 34.5636];

G(:,:,3) =[ 12.5486 4.4018 7.0245
2.3316 10.9949 0.2540
1.4895 0.6239 1.4628];

thirdDimensionOnesTemp = [1 2 2 2 2 2 2 2 3]’;
rowsOnesTemp = [ 1 2 3 1 2 3 1 3 2]’;
coloumnsOnesTemp = [1 1 1 2 2 2 3 3 3]’;
sigma = 0.0024;

maxTotalPower =3;
cvx_begin gp
variable vars(9)

P = cvx(zeros(numberOfUsers,numberOfResources,numberOfRRHs));
for m = 1:9
P(rowsOnesTemp(m),coloumnsOnesTemp(m),thirdDimensionOnesTemp(m))= vars(m);
end

``````numSIRug = cvx(zeros(numberOfUsers,numberOfResources));
denumSIRug = cvx(zeros(numberOfUsers,numberOfResources));
numSIRu = cvx(zeros(1,numberOfUsers));
denumSIRu = cvx(zeros(1,numberOfUsers));

for u = 1:numberOfUsers
GsToBeIncludedNum = [];
for g = 1:numberOfResources
transmittingR = thirdDimensionOnesTemp(find(rowsOnesTemp==u & coloumnsOnesTemp == g));
if ~isempty(transmittingR)
numSIRug(u,g) = P(u,g,transmittingR)*G(u,g,transmittingR);
GsToBeIncludedNum = [GsToBeIncludedNum g];

end
end
numSIRu(u) = prod(numSIRug(u,GsToBeIncludedNum));

end
for g = 1: numberOfResources
urMatrixforThisG = P(:,g,:);
for u = 1:numberOfUsers
copy = urMatrixforThisG;
copy(u,:,:)=[];
denumSIRug(u,g) = 0;
for r = 1:numberOfRRHs
denumSIRug(u,g) = denumSIRug(u,g) + sum(copy(:,:,r))*G(u,g,r);

end
end
end

denumSIRug = denumSIRug + sigma;

for u = 1:numberOfUsers
GsToBeIncludedDenum = [];
for g = 1: numberOfResources
transmittingR = thirdDimensionOnesTemp(find(rowsOnesTemp==u & coloumnsOnesTemp == g));
if ~isempty(transmittingR)
GsToBeIncludedDenum = [GsToBeIncludedDenum g];

end

end
denumSIRu(u) = prod(denumSIRug(u,GsToBeIncludedDenum));

end

InvRatePerUser = denumSIRu./numSIRu;

totalInvRate = prod(InvRatePerUser);
miu = 2;
alpha = 2*ones(1,numberOfUsers);
minimize(totalInvRate + miu*(sum(vars)-maxTotalPower)+sum(alpha.*(InvRatePerUser-ones(1,numberOfUsers))))
``````

cvx_end

Gives Unbounded result !

Using CVX3.0beta, I got

Error using - (line 27)
Disciplined geometric programming error:
Invalid operation: {posynomial} - {3}

from the minimize statement.

1 Like

which line is that please ?

and can you tell me how can I know my CVX version and update it if necessary ?

The statement which has `minimize` .

`cvx_version` .

1 Like

I have CVX 2.1 and it gives me an unbounded solution, any ideas ?

Using CVX2.1, I got infeasible, or inaccurate/infeasible. Given that you are minimizing, cvx_optval = +Inf is basically a way of saying the problem is infeasible. Given use of CVX’s successive approximation method and the inaccurate/infeasible result from sedumi, I’m not 100% convinced the problem is truly infeasible. I haven’t figured out what your model is, so I have no first principles opinion on it.

If you believe the problem is feasible, can you produce a feasible solution?

Here is the output from sdpt3 and sedumi.

``````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: 127 variables, 56 equality constraints
40 exponentials add 320 variables, 200 equality constraints
-----------------------------------------------------------------
Cones  |             Errors              |
Mov/Act | Centering  Exp cone   Poly cone | Status
--------+---------------------------------+---------
13/ 13 | 8.000e+00  2.044e+01  0.000e+00 | Unbounded
1/  1 | 8.000e+00  6.066e+00  0.000e+00 | Unbounded
22/ 22 | 7.101e+00  5.622e-01  0.000e+00 | Unbounded
8/  8 | 8.000e+00  2.910e+00  0.000e+00 | Unbounded
0/  0 | 0.000e+00  0.000e+00  0.000e+00 | Unbounded
-----------------------------------------------------------------
Status: Infeasible
Optimal value (cvx_optval): +Inf
``````

++++++++++++++++++++++++++++++++++++++++++++++++

``````Successive approximation method to be employed.
For improved efficiency, SeDuMi is solving the dual problem.
SeDuMi will be called several times to refine the solution.
Original size: 127 variables, 56 equality constraints
40 exponentials add 320 variables, 200 equality constraints
-----------------------------------------------------------------
Cones  |             Errors              |
Mov/Act | Centering  Exp cone   Poly cone | Status
--------+---------------------------------+---------
13/ 13 | 8.000e+00  1.473e+01  0.000e+00 | Unbounded
2/  2 | 8.000e+00  8.024e+00  0.000e+00 | Unbounded
19/ 19 | 6.578e+00  2.815e+00  0.000e+00 | Inaccurate/Unbounded
0/  0 | 0.000e+00  0.000e+00  0.000e+00 | Inaccurate/Unbounded
0/  0 | 0.000e+00  0.000e+00  0.000e+00 | Inaccurate/Unbounded
0/  0 | 0.000e+00  0.000e+00  0.000e+00 | Inaccurate/Unbounded
-----------------------------------------------------------------
Status: Inaccurate/Infeasible
Optimal value (cvx_optval): +Inf``````
1 Like

I’ll try to figure it out, thanks

what do you mean by infeasible when it has no constraints ?
that’s the part I don’t understand, what can be the cause of infeasibility when there are no constraints to satisfy ?

There are implicit (not explicitly stated) constraints in geometric programming. As I said, I haven’t figured out what your model is, so I have to defer to someone else for a more detailed assessment.