git-subtree-dir: software/mza git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
17 lines
727 B
MiniZinc
17 lines
727 B
MiniZinc
predicate fzn_cumulative_opt_reif(array[int] of var opt int: s,
|
|
array[int] of var int: d,
|
|
array[int] of var int: r, var int: b, var bool: bb) =
|
|
let {
|
|
set of int: tasks =
|
|
{i | i in index_set(s) where ub(r[i]) > 0 /\ ub(d[i]) > 0 },
|
|
set of int: times =
|
|
min([ lb(s[i]) | i in tasks ]) ..
|
|
max([ ub(s[i]) + ub(d[i]) | i in tasks ])
|
|
}
|
|
in
|
|
bb <-> forall( t in times ) (
|
|
b >= sum( i in tasks ) (
|
|
bool2int( occurs(s[i]) /\ deopt(s[i]) <= t /\ t < deopt(s[i]) + d[i] ) * r[i]
|
|
)
|
|
);
|