Search code examples
pyomononlinear-optimizationmixed-integer-programminggams-math

GAMS translated nonlinear objective function looks different than defined objective


I am studying the batchdes.lst file for MINLP model batchdes in GAMS library. The objective function is

Defining objective function obj.. cost =g= sum(j, alpha(j)*(exp(n(j) + beta(j)*v(j)))); However, in the list of equations in the .lst file is presented as ---- obj =G= objective function definition

obj.. - (25141.1498186984)*v(mixer) - (64131.2769053431)*v(reactor) - (49066.7923833869)*v(centrifuge) - (41901.9163644973)*n(mixer) - (106885.461508905)*n(reactor) - (81777.9873056449)*n(centrifuge) + cost =G= 0 ; (LHS = -230565.365179047, INFES = 230565.365179047 ****)

What kind of operation has been applied here? How the exp() translated? Is this a feature of GAMS or the Solver selected?

I implemented the same model to Pyomo and solve with the same solver from GAMS, however the Obj does not look the same in the .lst file.

Thanks!


Solution

  • What you see here are the partial derivatives of each variable evaluated at their current level values. This comes from the GAMS documentation:

    Nonlinear equations are treated differently. If the coefficient of a variable in the equation listing is enclosed in parentheses, then the corresponding constraint is nonlinear, and the value of the coefficient depends on the activity levels of one or more of the variables. The listing is not algebraic, but shows the partial derivative of each variable evaluated at their current level values.