help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help: Switching between different objective function


From: Heinrich Schuchardt
Subject: Re: Help: Switching between different objective function
Date: Thu, 26 Nov 2020 20:30:07 +0100
User-agent: Mozilla/5.0 (X11; Linux aarch64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0

On 11/26/20 7:55 PM, Manuel Castro wrote:
Hi there,

I am wondering how I can use an if statement to switch between different
objective functions.
For example, how do I represent the following:


If (StatusFlag_X == 1 && StatusFlag_Y == 0) then
       minimize cost: sum{i in I, j in J} c[i,j] * x[i,j];
end if

If (StatusFlag_X == 0 && StatusFlag_Y == 1) then
       minimize cost: sum{i in I, j in J} c[i,j] * x[i,j] + d[i,j] * Y[i,j];

The line above cannot be valid as the indices for d and Y are not
defined. You forgot the parentheses.

end if


I am assuming StatusFlag_X and StatusFlag_Y are parameters.

The following can be used as template if you have a lot of different
objective functions with complex selection criteria:

minimize cost:
sum{i in {1} : StatusFlag_X == 1 && StatusFlag_Y == 0} 1 *
  (sum{i in I, j in J} c[i,j] * x[i,j]) +
sum{i in {1} : StatusFlag_X == 0 && StatusFlag_Y == 1} 1 *
  (sum{i in I, j in J} c[i,j] * x[i,j] + d[i,j] * Y[i,j])

In your case this simplifies to:

minimize cost:
sum{i in I, j in J} c[i,j] * x[i,j] +
StatusFlag_Y * sum{i in I, j in J} d[i,j] * Y[i,j]

Best regards

Heinrich


Both are mutually exclusive, i.e. either you do one or the other, i.e.
both objective functions will never be activate at the same time

This is what I used to do in "mosel" language from FICO Xpress (I don't
have a license anymore so I am discovering GLPK[Smile] ). How can I do
this in GLPK language? What's the workaround that we can use for this?

Many thanks in advance for your help. It's really appreciated.

Kind regards,
Manuel.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]