1include "cumulative.mzn";
2
3enum OBJECTS;
4array[OBJECTS] of int: duration; % duration to move
5array[OBJECTS] of int: handlers; % number of handlers required
6array[OBJECTS] of int: trolleys; % number of trolleys required
7
8int: available_handlers;
9int: available_trolleys;
10int: available_time;
11
12array[OBJECTS] of var 0..available_time: start;
13var 0..available_time: end;
14
15constraint cumulative(start, duration, handlers, available_handlers);
16constraint cumulative(start, duration, trolleys, available_trolleys);
17
18constraint forall(o in OBJECTS)(start[o] +duration[o] <= end);
19
20solve minimize end;
21
22output [ "start = \(start)\nend = \(end)\n"];
23