Hi all,

I’m editing this post as I’ve (kind of) succeeded on reformulating my non linear equation into a power cone.

The relationship is between UNITS(i) and X_var(i), both positive variables. The form is as follows: UNITS(i)=constant*X_var(i)**(-1/elasticity(i))

where elasticity(i) is the elasticity between both variables which takes different values by i and could range between -1 and 1.

MOSEK accepts the power cone reformulation as follows:

Auxiliareqn_t(i)$(elasticity(i) < 1)… (t(i)**elasticity(i)) * (z(i)**(1-elasticity(i))) =g= X_var(i) ;

Auxiliareqn_t2(i)$(elasticity(i) > 1)… ( tx(i)**(1/elasticity(i))) * (z(i)**(1-(1/elasticity(i)))) =g= X_var(i) ;

z.fx(i)=1;

However for the purposes of simulation, I need to calibrate X_var. What I notice is that calculating t(i)**elasticity(i) or tx(i)**(1/elasticity(i)) give me the calibrated values.

But then I would have to recover such value and put it into the objective function which involves another cone but ultimately does not solve my problem. In other words, I need the equations Auxiliareqn_t and Auxiliareqn_t2 to hold as an equality (or the closest as possible). Otherwise any condition on X_var is much lower than t(i)**elasticity(i) or tx(i)**(1/elasticity(i)) and no simulation is possilbe.

See the file attached

THank you!

ModelForum.gms (2.64 KB)