this repo has no description
at develop 1.7 kB view raw
1%-----------------------------------------------------------------------------% 2% Requires that a set of tasks given by start times 's', durations 'd', and 3% resource requirements 'r', never require more than a global resource bound 4% 'b' at any one time. 5% Assumptions: 6% - forall i, d[i] >= 0 and r[i] >= 0 7%-----------------------------------------------------------------------------% 8 9predicate cumulative(array[int] of var int: s, 10 array[int] of var int: d, 11 array[int] of var int: r, var int: b) = 12 assert(index_set(s) == index_set(d) /\ index_set(s) == index_set(r), 13 "cumulative: the 3 array arguments must have identical index sets", 14 assert(lb_array(d) >= 0 /\ lb_array(r) >= 0, 15 "cumulative: durations and resource usages must be non-negative", 16 g12fd_cumulative(s, d, r, b))); 17 18 19%-----------------------------------------------------------------------------% 20 21% Optional parameters that can be used with the built-in G12/FD cumulative 22% constraint. 23% 24annotation energy_feasibility_check; 25annotation edge_finding_filtering; 26annotation ext_edge_finding_filtering; 27annotation histogram_filtering; 28annotation idempotent; 29 30%-----------------------------------------------------------------------------% 31 32% The implementation of the cumulative constraint in the G12/FD solver. 33% This should not be called directly, instead the definition above should 34% be used. 35predicate g12fd_cumulative(array[int] of var int: s, 36 array[int] of var int: d, 37 array[int] of var int: r, var int: b); 38 39%-----------------------------------------------------------------------------%