You cannot use direct if-then-else statements in an LP formulation. This is
not a problem of GLPK. You would face the same issue with any other solver.

You should refer to an integer-programming textbook for linearizing
z=min(x,y) and or z=max(x,y).

In a maximization problem, like yours,  z=max(x,y) is simple. You need to
add z<=x and z<=y. For example:

Your objective function includes a
term (max(0,ScorteIniziali+PrimoStd+PrimoStra-120)*6). Replace this some
other variable, sat W. And add the following constraint:

W<=0
W<= (ScorteIniziali+PrimoStd+PrimoStra-120)*6

That's it. However, this is more tricky with min(,)
under maximization problem. You will need a binary variable. It is very
likely that you can work around this with a binary variable only if you are
pretty sure that all your variables are bounded above by a sufficiently
large number (Big M).



On Wed, Apr 27, 2011 at 3:42 PM, nikel90 <[email protected]> wrote:

>
> unfortunately i knew it...
>
> i dont really know glpk... its possible to do something like
>
> var a;
>
> if (b==1) a=b;
> else
> a= c;
>
>
> ?? ty
>
> Nikel
>
>
> nikel90 wrote:
> >
> > Good evining!
> >
> > I've got a problem with the max() and min() functions...
> >
> > i need to do something like this:
> > min(120,ScorteIniziali+PrimoStd+PrimoStra)*70
> > in my "objective function"
> >
> > but min() accepts only numeric parameters..
> >
> > is there any alternatives?
> >
> > thank you!
> >
> > Nikel
> >
> > the entire model:
> >
> > #
> > #
> > /* Trimestri*/
> > var PrimoStd >=0, integer;
> > var SecondoStd >=0, integer;
> > var TerzoStd >=0, integer;
> > var QuartoStd >=0, integer;
> > var PrimoStra >=0, integer;
> > var SecondoStra >=0, integer;
> > var TerzoStra >=0, integer;
> > var QuartoStra >=0, integer;
> > var ScorteIniziali >=0, integer;
> > #
> > /* Objective function */
> > maximize z:
> >
> (min(120,ScorteIniziali+PrimoStd+PrimoStra)*70)-(((max(PrimoStd,SecondoStd,TerzoStd)*3*10)+(PrimoStra*3*15))+(max(0,ScorteIniziali+PrimoStd+PrimoStra-120)*6)+((PrimoStd+PrimoStra)*15))
> > +
> >
> (min(310,ScorteIniziali+PrimoStd+PrimoStra-120+SecondoStd+SecondoStra)*70)-(((max(PrimoStd,SecondoStd,TerzoStd)*3*10)+(SecondoStra*3*15))+(max(0,ScorteIniziali+PrimoStd+PrimoStra-120+SecondoStd+SecondoStra-310)*6)+((SecondoStd+SecondoStra)*15))
> > + (min(180,ScorteIniziali+PrimoStd+PrimoStra-120 +
> >
> SecondoStd+SecondoStra-310+TerzoStd+TerzoStra)*70)-(((max(PrimoStd,SecondoStd,TerzoStd)*3*10)+(TerzoStra*3*15))+(max(0,ScorteIniziali+PrimoStd+PrimoStra-120
> > +
> >
> SecondoStd+SecondoStra-310+TerzoStd+TerzoStra-180)*6)+((TerzoStd+TerzoStra)*15))
> > + (min(120,ScorteIniziali+PrimoStd+PrimoStra-120 +
> > SecondoStd+SecondoStra-310 +
> >
> TerzoStd+TerzoStra-180+QuartoStd+QuartoStra)*70)-(((max(PrimoStd,SecondoStd,TerzoStd)*3*10)+(QuartoStra*3*15))+(max(0,ScorteIniziali+PrimoStd+PrimoStra-120
> > + SecondoStd+SecondoStra-310 +
> >
> TerzoStd+TerzoStra-180+QuartoStd+QuartoStra-120)*6)+((QuartoStd+QuartoStra)*15))
> > - (ScorteIniziali*45 + ScorteIniziali+PrimoStd+PrimoStra-120 +
> > SecondoStd+SecondoStra-310 + TerzoStd+TerzoStra-180 +
> > QuartoStd+QuartoStra-120*45);
> >
> > /* Constraints */
> > #
> > s.t. a: ScorteIniziali - ScorteIniziali+PrimoStd+PrimoStra-120 +
> > SecondoStd+SecondoStra-310 + TerzoStd+TerzoStra-180 +
> > QuartoStd+QuartoStra-120  <= 0;
> > end;
> >
> >
>
> --
> View this message in context:
> http://old.nabble.com/min%28%29---max%28%29-functions-alternatives-to-use-non-numeric-parameters-tp31489922p31490622.html
> Sent from the Gnu - GLPK - Help mailing list archive at Nabble.com.
>
>
> _______________________________________________
> Help-glpk mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/help-glpk
>



-- 
_________________________________________
Sent via my good, old desktop.
_________________________________________
Suleyman Demirel - Office: (734) 647-3167

PhD Candidate in Operations Management
Stephen M. Ross School of Business
University of Michigan, Ann Arbor
Web: http://www.umich.edu/~sdemirel
_________________________________________
_______________________________________________
Help-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to