this repo has no description
1include "disjunctive_strict_opt.mzn";
2include "fzn_disjunctive_opt.mzn";
3include "fzn_disjunctive_opt_reif.mzn";
4
5/** @group globals.scheduling
6 Requires that a set of tasks given by start times \a s and durations \a d
7 do not overlap in time. Tasks with duration 0 can be scheduled at any time,
8 even in the middle of other tasks. Start times are optional variables, so
9 that absent tasks do not need to be scheduled.
10
11 Assumptions:
12 - forall \p i, \a d[\p i] >= 0
13*/
14predicate disjunctive(array[int] of var opt int: s,
15 array[int] of var int: d) =
16 assert(index_set(s) == index_set(d),
17 "disjunctive: the array arguments must have identical index sets",
18 forall (i in index_set(d)) (d[i] >= 0) /\
19 if (lb_array(d) > 0) then
20 disjunctive_strict(s,d)
21 else
22 fzn_disjunctive_opt(s, d)
23 endif
24 );