help-glpk
[Top][All Lists]
Advanced

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

Re: [Help-glpk] Objective function defined with max, min.


From: Andrew Makhorin
Subject: Re: [Help-glpk] Objective function defined with max, min.
Date: Thu, 05 Jan 2017 01:52:34 +0300

On Thu, 2017-01-05 at 01:50 +0300, Andrew Makhorin wrote:
> On Wed, 2017-01-04 at 23:43 +0200, Alexey Karakulov wrote:
> > Hi, I have this kind of function in the objective:
> > 
> > > crop(s) = max(0, min(1, s))
> > 
> > 
> > I wonder if it's possible (and how) to reformulate the task to be LP
> > problem. I have read this posting [1], but I'm not sure how to apply
> > it.
> 
> 
> Note that
> 
> crop(x) = f(x) - f(x-1)
> 
> where
> 
> f(x) = 0, if x <  0
>      = x, if x >= 0
> 
> The latter equality can be modeled thru the following linear 
> constraints:
> 
> x = x1 + x2

Must read

x = x1 - x2


> f = x1
> x1, x2 >= 0
> 
> where x1, x2 are auxiliary variables. 
> 
> f(x-1) can be modeled in the same way by taking y = x-1.
> 
> (Check all this carefully for errors.)
> 
> > 
> > 
> > > param maxN default 1000;
> > > param maxJ default 10;
> > > set N := 1 .. maxN;
> > > set J := 1 .. maxJ;
> > > param a{N};
> > > param w{N};
> > > var X0;
> > > var X{J};
> > > var S{maxJ .. maxN};
> > 
> > 
> > > maximize Obj: sum {n in N} w[n] * crop(S[n])
> > 
> > > subject to DefineS {n in maxJ .. maxN}: S[n] = X0 + sum {j in J}
> > a[n-j+1] * X[j]
> > 
> > 
> > [1]: http://lists.gnu.org/archive/html/help-glpk/2007-06/msg00005.html
> > 
> 





reply via email to

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