[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: [Help-glpk] [Fwd: Redundant Set Elements and Generation Time]

**From**: |
Andrew Makhorin |

**Subject**: |
Re: [Help-glpk] [Fwd: Redundant Set Elements and Generation Time] |

**Date**: |
Sat, 29 Jun 2013 18:01:42 +0400 |

>* I have some inventory variables defined by the following constraint set:*
>* *
>* inventory_1{x in X, y in Y, t in 0..20}:*
>* INVENT_1[x,y,t] = sum{ (i,j) in set_1 : attribute_1[i] = x and *
>* attribute_2[i] = y } d[t]*x[i,j];*
>* *
>* i, referenced above, can have attribute_1:= 0,1,2 in periods t = 0,1,2; *
>* but in all later periods, t>2, all i have attribute_1:= 0.*
>* *
>* The set X:= {0,1,2} for the entire modelling horizon; the elements {1,2} *
>* are redundant after t>2.*
>* *
>* Does this adversely affect model generation time?*
Yes, because corresponding array members have to be found in the symbol
table whenever they are referenced.
>* *
>* I feel like it would be faster if X:={0,1,2} when t<=2 and X:={0} when *
>* t>2 but I can't think of anyway to do this other than make two sets of *
>* constraints:*
>* *
>* e.g.,*
>* inventory_1a{x in Xa , y in Y, t in 0..2 }:*
>* INVENT_1a etc*
>* *
>* and*
>* inventory_1b{x in Xb, y in Y, t in 3..20}:*
>* INVENT_1b etc*
>* *
>* This would get messy in my model.*
>* *
>* Can anyone think of any other approaches?*
>* *
May be like this:
inventory_1{x in X, y in Y, t in 0..20}:
INVENT_1[x,y,t] = sum{ (i,j) in set_1 :
(if i <= 2 then attribute_1[i] else 0) = x and
(if i <= 2 then attribute_2[i] else 0) = y } d[t]*x[i,j];
Please note that 'else 0' may be omitted.