Hello,

I am rather new to GLPK and I am seeking help regarding the modelling of a 
constraint in a unit commitment problem.
I hope someone will kindly help me on this one.

I am trying to model a constraint which constrains a sum, but on a sequence of 
subsets of an initial set TIME.
A bit of context with a simple example below :

#sets
set TIME := 1..T;
set PLANTS :=P1, P2;

#parameters
param T;
param max_startups_year {PLANTS};
param max_startups_week {PLANTS};

#variable
var startup {p in PLANTS, t in TIME} binary;

#constraint 1
subject to C1 {p in PLANTS}:
sum {t in TIME} startup[p,t] <= max_startups_year[p];

Now this is where I am struggling : I would like to constrain sum of 
startup[p,t] with parameter max_startups_week[p] but on subsets of the set TIME 
with step k (let’s say k=5).

The following works but obviously is not flexible at all.
It gives you the idea of what I would like to do :

sum {t in 0..5} startup[p,t] <= max_startups_week[p];
sum {t in 6..10} startup[p,t] <= max_startups_week[p];
…
Etc…
…
sum {t in T-5..T} startup[p,t] <= max_startups_week[p];


I have tried to define another set TIME_2 but it’s not satisfying as it is 
hard-coded as well…

Set TIME_2 := (0..5 union 6..10.. union [etc] union T-5..T)
subject to C2 {p in PLANTS}:
sum {s in TIME_2} startup[p,s] <= max_startups_week[p];

How would you work this constraint out to be robust and flexible ? At the end, 
the number of steps k should be a parameter.
To simplify things, let’s say that k divides exactly set TIME.

Thanks very much for your help,

Philippe

Reply via email to