Hi Mate, Many thanks for your quick answer. I will try both solutions, first "the simple" one. Thanks again. --Zvonko
-----Original Message----- From: Mate Hegyhati [mailto:hegyh...@dcs.uni-pannon.hu] Sent: Friday, August 17, 2012 10:18 AM To: Zvonko Bregar Cc: help-glpk@gnu.org Subject: Re: [Help-glpk] function Hi Zvonko, maybe something like this? R >= 0 R <= P - PMIN*X R <= PMAX*X - P This should be enough, if R is not represented anywhere else, and it should be as much as possible in the objective. Otherwise I think You need an additional binary variable, Y, representing whether P is closer to PMIN or to PMAX. P <= (PMIN + PMAX) / 2 + (1-Y) * (PMAX-PMIN)/2 P >= (PMIN + PMAX) / 2 - (1-Y) * (PMAX-PMIN)/2 And then You can add these to the above constraints: R >= P - PMIN - Y * PMAX R >= PMAX - P - (1-Y)*PMAX Hope this is what You are looking for, best regards, Mate On 08/17/2012 10:02 AM, Zvonko Bregar wrote: > Hi, > > My name is Zvonko Bregar. > > Please help me with the following problem. > > There is a real variable P having disjunct definition area {0} + [PMIN, PMAX]. > There is also a binary variable X helping in this definition. > If X = 0 then P = 0 > And if X = 1 then PMIN < P < PMAX. > So variables X an P work simultaneously. > This should be a rather standard construction. > > The question is to construct another variable, say R, from X an P Such > that If X = P = 0 then also R = 0 Else R = min {P-PMIN,PMAX-P} > > In other words, R measures the minimal distance of P to its boundaries PMIN > and PMAX. > But if P = 0 then R must be set to 0 too. > > For example, if PMIN = 200 and PMAX = 400, than the required function should > be something like the "upside down" absolute value function: > > R = - | P - 300 | + 100 if 200 < P < 400 > > But also R = 0 if P = 0. > > I have been trying this for quite some time but didn't succeed. It looks > simple and perhaps there is a simple solution? Or perhaps this cannot be done > at all? > > Thank you > > OPOZORILO: To elektronsko sporo?ilo in vse njegove morebitne priloge lahko > vsebujejo zaupne in/ali privilegirane informacije, ki so last > Elektroin?tituta Milan Vidmar in so namenjene izklju?no naslovniku. ?e ste > sporo?ilo prejeli pomotoma zaradi napake v naslovu ali pri prenosu sporo?ila, > Vas prosimo, da nas o tem obvestite s povratno po?to. V tem primeru vsebine > prejetega sporo?ila ne smete uporabiti, kopirati, tiskati, objaviti ali > distribuirati, ampak ga morate takoj uni?iti. > > DISCLAIMER: This e-mail is for the intended recipient only. It contains > proprietary information some or all of which may be legally privileged. If > you received this e-mail by mistake please notify us by replying to this > e-mail. Consequently, the contents of this e-mail must be deleted and not be > used, copied, printed, disclosed or distributed. > > > > > _______________________________________________ > Help-glpk mailing list > Help-glpk@gnu.org > https://lists.gnu.org/mailman/listinfo/help-glpk > OPOZORILO: To elektronsko sporočilo in vse njegove morebitne priloge lahko vsebujejo zaupne in/ali privilegirane informacije, ki so last Elektroinštituta Milan Vidmar in so namenjene izključno naslovniku. Če ste sporočilo prejeli pomotoma zaradi napake v naslovu ali pri prenosu sporočila, Vas prosimo, da nas o tem obvestite s povratno pošto. V tem primeru vsebine prejetega sporočila ne smete uporabiti, kopirati, tiskati, objaviti ali distribuirati, ampak ga morate takoj uničiti. DISCLAIMER: This e-mail is for the intended recipient only. It contains proprietary information some or all of which may be legally privileged. If you received this e-mail by mistake please notify us by replying to this e-mail. Consequently, the contents of this e-mail must be deleted and not be used, copied, printed, disclosed or distributed. _______________________________________________ Help-glpk mailing list Help-glpk@gnu.org https://lists.gnu.org/mailman/listinfo/help-glpk