Geometric programming with a signomial constraint

Hi, I had a constraint with a form of the quotient of two signomials as follows,
\frac{A(\mathbf{P})}{ B(\mathbf{P})} \leq t ~~~(1)
where t>0 is a slack variable. I planned to reformulate it into a standard GP one (such as a form of posynomial/monomial).
My first step is to separate the positive and negative terms in both numerator and denominator as
\frac{A(\mathbf{P})^{+}-A(\mathbf{P})^{-}}{ B(\mathbf{P})^{+}-B(\mathbf{P})^{-}} \leq t~~~(2)
where B(\mathbf{P})^{+}-B(\mathbf{P})^{-}>0. The second step I multiply the denominator by t, and reformulate (2) as follows
\frac{A(\mathbf{P})^{+}+tB(\mathbf{P})^{-}}{ A(\mathbf{P})^{-}+tB(\mathbf{P})^{+}} \leq 1 ~~~(3)
Here, the original constraint became a quotient of two posynomials, and then the posynomial denominator can be approximated to a monomial one, which finally became a standard GP.
After that, I used Mosek in CVX to solve this problem, but it returned NAN as result. I am not sure if there is something wrong with the problem formulation or the codes.

It is always a good idea to post the log output so I suggest you do that.

Showing the code to reproduce your result is an even better idea.

1 Like

Thanks for replying me. The log output is as follows,

Calling Mosek_2 9.2.36: 54540 variables, 20232 equality constraints
For improved efficiency, Mosek_2 is solving the dual problem.

MOSEK Version 9.2.36 (Build date: 2021-1-25 17:39:30)
Copyright © MOSEK ApS, Denmark. WWW: mosek.com
Platform: Windows/64-X86

Problem
Name :
Objective sense : min
Type : CONIC (conic optimization problem)
Constraints : 20232
Cones : 17160
Scalar variables : 54540
Matrix variables : 0
Integer variables : 0

Optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator started.
Freed constraints in eliminator : 2904
Eliminator terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries : 2 time : 0.00
Lin. dep. - tries : 1 time : 0.01
Lin. dep. - number : 0
Presolve terminated. Time: 0.05
Problem
Name :
Objective sense : min
Type : CONIC (conic optimization problem)
Constraints : 20232
Cones : 17160
Scalar variables : 54540
Matrix variables : 0
Integer variables : 0

Optimizer - threads : 6
Optimizer - solved problem : the primal
Optimizer - Constraints : 17316
Optimizer - Cones : 17161
Optimizer - Scalar variables : 51625 conic : 51625
Optimizer - Semi-definite variables: 0 scalarized : 0
Factor - setup time : 0.05 dense det. time : 0.00
Factor - ML order time : 0.00 GP order time : 0.00
Factor - nonzeros before factor : 1.02e+05 after factor : 1.49e+05
Factor - dense dim. : 12 flops : 1.70e+07
ITE PFEAS DFEAS GFEAS PRSTATUS POBJ DOBJ MU TIME
0 2.4e+02 5.7e+00 2.1e+04 0.00e+00 2.069835730e+04 -1.356898114e+02 1.0e+00 0.13
1 1.7e+02 4.1e+00 1.6e+04 -5.63e-01 1.864737513e+04 -1.779224755e+02 7.1e-01 0.22
2 1.5e+02 3.5e+00 1.4e+04 -3.72e-01 1.769711336e+04 -1.775733569e+02 6.2e-01 0.25
3 1.0e+02 2.3e+00 8.8e+03 -2.83e-01 1.459364344e+04 -1.457555807e+02 4.1e-01 0.27
4 8.4e+01 1.9e+00 7.1e+03 -1.52e-02 1.318597636e+04 -1.550615427e+02 3.4e-01 0.30
5 4.3e+01 1.0e+00 3.1e+03 1.06e-01 8.350523767e+03 -1.788024528e+02 1.8e-01 0.31
6 2.3e+01 5.3e-01 1.3e+03 5.22e-01 4.786359503e+03 -1.853716820e+02 9.3e-02 0.34
7 1.5e+01 3.5e-01 7.1e+02 8.03e-01 3.200742834e+03 -1.826851694e+02 6.2e-02 0.36
8 6.1e+00 1.4e-01 1.9e+02 9.11e-01 1.189571740e+03 -1.774206765e+02 2.5e-02 0.39
9 4.3e+00 1.0e-01 1.1e+02 1.05e+00 7.725886845e+02 -1.754401471e+02 1.8e-02 0.41
10 2.7e+00 6.3e-02 5.6e+01 1.06e+00 4.161774183e+02 -1.733930324e+02 1.1e-02 0.44
11 1.8e+00 4.1e-02 3.0e+01 1.05e+00 2.073033570e+02 -1.722261425e+02 7.2e-03 0.45
12 1.1e+00 2.6e-02 1.5e+01 1.04e+00 6.764994461e+01 -1.709289939e+02 4.5e-03 0.48
13 8.0e-01 1.9e-02 9.4e+00 1.02e+00 2.009646576e+00 -1.705392046e+02 3.3e-03 0.52
14 3.7e-01 8.6e-03 3.0e+00 1.01e+00 -8.915148903e+01 -1.694323885e+02 1.5e-03 0.53
15 1.9e-01 4.5e-03 1.2e+00 9.89e-01 -1.268699288e+02 -1.691306007e+02 7.8e-04 0.56
16 1.4e-01 3.2e-03 7.2e-01 9.57e-01 -1.382302007e+02 -1.691308937e+02 5.6e-04 0.59
17 7.6e-02 1.8e-03 3.1e-01 9.35e-01 -1.514671470e+02 -1.692387139e+02 3.1e-04 0.61
18 5.9e-02 1.4e-03 2.2e-01 8.88e-01 -1.551994603e+02 -1.693777678e+02 2.4e-04 0.64
19 3.9e-02 9.0e-04 1.2e-01 8.70e-01 -1.598795912e+02 -1.696477479e+02 1.6e-04 0.66
20 3.5e-02 8.2e-04 1.1e-01 8.26e-01 -1.606328995e+02 -1.697036098e+02 1.4e-04 0.69
21 1.9e-02 4.4e-04 4.4e-02 8.23e-01 -1.648904148e+02 -1.701363502e+02 7.6e-05 0.70
22 1.4e-02 3.2e-04 2.9e-02 7.65e-01 -1.662612901e+02 -1.703675628e+02 5.6e-05 0.73
23 8.2e-03 1.9e-04 1.5e-02 7.45e-01 -1.680389011e+02 -1.707462801e+02 3.4e-05 0.75
24 5.1e-03 1.1e-04 7.0e-03 7.22e-01 -1.694045519e+02 -1.711218875e+02 1.9e-05 0.78
25 3.7e-03 7.8e-05 4.6e-03 6.37e-01 -1.699863986e+02 -1.713338139e+02 1.4e-05 0.84
26 1.3e-03 2.8e-05 1.2e-03 6.18e-01 -1.712657989e+02 -1.718606711e+02 4.9e-06 0.92
27 8.6e-04 1.8e-05 7.5e-04 5.24e-01 -1.715769289e+02 -1.720330567e+02 3.2e-06 0.98
28 3.4e-04 7.3e-06 2.5e-04 4.84e-01 -1.721215571e+02 -1.723610309e+02 1.3e-06 1.05
29 2.0e-04 4.6e-06 1.6e-04 2.88e-01 -1.722890700e+02 -1.724859614e+02 8.0e-07 1.11
30 1.8e-04 3.5e-06 1.2e-04 1.46e-01 -1.723748750e+02 -1.725562835e+02 6.1e-07 1.19
31 1.8e-04 3.5e-06 1.2e-04 4.11e-02 -1.723748750e+02 -1.725562835e+02 6.1e-07 1.28
32 1.8e-04 3.5e-06 1.2e-04 5.45e-02 -1.723748750e+02 -1.725562835e+02 6.1e-07 1.41
Optimizer terminated. Time: 1.56

Interior-point solution summary
Problem status : UNKNOWN
Solution status : UNKNOWN
Primal. obj: -1.7237487503e+02 nrm: 4e+03 Viol. con: 2e-03 var: 0e+00 cones: 0e+00
Dual. obj: -1.7255628347e+02 nrm: 4e+01 Viol. con: 0e+00 var: 1e-04 cones: 0e+00
Optimizer summary
Optimizer - time: 1.56
Interior-point - iterations : 33 time: 1.53
Basis identification - time: 0.00
Primal - iterations : 0 time: 0.00
Dual - iterations : 0 time: 0.00
Clean primal - iterations : 0 time: 0.00
Clean dual - iterations : 0 time: 0.00
Simplex - time: 0.00
Primal simplex - iterations : 0 time: 0.00
Dual simplex - iterations : 0 time: 0.00
Mixed integer - relaxations: 0 time: 0.00


Status: Failed
Optimal value (cvx_optval): NaN

            for iter = 1:iterTimeMax
                iter
                cvx_begin gp
                variables  P(K*M) tau(M) positive
	            result=0;
	            result = (prod((tau)));
                minimize result 
                subject to  
                for i = 1:M
                    SRForUE_GP_ZF(P,P_c,i,round(i/2),h,ge,w,K,M,xigma,tau(i),tau_p(i)) <= 1 ;
                end   
                for i = 1:M
                     tau(i) <= 2^(-SR_min);
                end            
                for i = 1:K*M                		   
                     P(i)^2- Pmax(index_Pmax) <= 0;                       
                 end                    
                cvx_end 
                P_c = P;
                tau_p =tau;
                if ((norm(cvx_prev-result) < 1e-3 ) || strcmp(cvx_status,'Failed')) 
                   result_iteration(iter,IniTime)=result;
                   P_iteration(:,iter)=P;
                   break                
                end
                cvx_prev =result ;      
                result_iteration(iter,IniTime)=result;
                P_iteration(:,iter)=P;
            end

The number in the column PRSTATUS on the log should converge towards 1 if your problem has an optimal solution.

In this case PRSTATUS seems to indicate your problem is ill-posed. Ill-posed is for example when the problem has a nonzero duality gap.

You can dump the problem to disk using the instructions

https://docs.mosek.com/9.2/faq/faq.html

and email the problem to Mosek support for a review. (The smaller the problem showing the issue the better).

1 Like

Many thanks, Erling. I will re-check the problem and dump it to disk later.