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

2017-01-04 Thread Andrew Makhorin
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
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/msg5.html
> 



___
Help-glpk mailing list
Help-glpk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-glpk


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

2017-01-04 Thread Andrew Makhorin
 Forwarded Message 
From: Alexey Karakulov 
To: help-glpk@gnu.org
Subject: Objective function defined with max, min.
Date: Wed, 4 Jan 2017 23:43:20 +0200

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.


> 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/msg5.html




___
Help-glpk mailing list
Help-glpk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-glpk