1

Right now, I am using GAMS solver to maximize the objective function (maximization of the Total Average Capacity Utilization) written below:

objFunction.. G =E= sum((i,j), X(i,j)/caprepaircenter(j)) / sum(j, Z(j));

In the objFunction;

  • X(i,j) gives the return volume from collection center i to repair center j (X(i,j) >= 0),
  • caprepaircenter(j) gives the capacity of each repair center j, and
  • Z(j) gives the establishment decision of repair center j (binary decision variable/ if repair center j is open then Z(j) = 1, else Z(j) = 0).

However, I want to have a linear objective function instead of a nonlinear one in the GAMS code. So, how can I convert the nonlinear objective function (written above) to linear ?

TOLGA
  • 11
  • 1

3 Answers3

0

If X(i,j), caprepaircenter(j) and Z(j) are all variables, then there is not really a way to convert your objective function as a linear function, I am afraid.

Salva
  • 109
  • 1
  • 9
0

Indeed, X(i,j) and Z(j) are variables whereas caprepaircenter(j) is a parameter. In this case, is there any way to convert this nonlinear function to linear one?

TOLGA
  • 11
  • 1
0

The equation

G =E= sum((i,j), X(i,j)/caprepaircenter(j)) / sum(j, Z(j))

can be written as

sum(j, G*Z(j)) =E= sum((i,j), X(i,j)/caprepaircenter(j)) 

This again can be written as:

sum(j, y(j)) =E= sum((i,j), X(i,j)/caprepaircenter(j)) 
y(j) = G*Z(j)

The products y(j) = G*Z(j) are continuous variable * binary variable. This can be linearized as shown here.

Here is a similar model where this trick is applied.

Erwin Kalvelagen
  • 15,677
  • 2
  • 14
  • 39