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