help-glpk
[Top][All Lists]
Advanced

[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.





reply via email to

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