Hi Heinrich That's a really elegant way to model it.. Just finished testing it, and works just fine.
Thanks a lot, Best regards, Philippe ________________________________ De : Heinrich Schuchardt <[email protected]> Envoyé : mercredi 30 juin 2021 17:40 À : Philippe Jugla <[email protected]> Cc : [email protected] <[email protected]> Objet : Re: Constraint on a binary variable On 6/30/21 5:24 PM, Philippe Jugla wrote: > Hi everyone, > > In my model, I have a variable "p" which has an upper bound pmax := 2.5 > and a lower bound pmin := -2.5. > I would simply like to add a binary variable "sign" which takes the values : > > 1 if variable p is positive > 0 if variable p is negative (or vice-versa) > > I thought of something like : > > s.t c1 : sign >= p[t] / pmax; > > So if p[t] is positive : sign >0 and <1, therefore sign will be forced to 1. > However, if p[t] is negative, "sign" is greater than a negative value so > the variable is no longer constrained, and can take values 0 or 1. > > How can I work things out ? > > Thanks for your help > > Best regards, > Philippe var sign, binary; var p, >= -2.5, <= 2.5; s.t. constraint: p <= 2.5 * sign; #maximize obj: p; minimize obj: p; solve; display p, sign; end; Best regards Heinrich
