4.2.2.8. Mathematical constraints¶
In this section: arg_max, arg_max_weak, arg_min, arg_min_weak, maximum, maximum_arg, minimum, minimum_arg, piecewise_linear, range, sliding_sum, sum_pred, sum_set.
arg_max¶
1. function var $$E: arg_max(array [$$E] of var int: x)
2. function var $$E: arg_max(array [$$E] of var bool: x)
3. function var $$E: arg_max(array [$$E] of var float: x)
4. function var $$E: arg_max(array [$$E] of var opt int: x)
5. function var $$E: arg_max(array [$$E] of var opt bool: x)
6. function var $$E: arg_max(array [$$E] of var opt float: x)
|
|
arg_max_weak¶
function var opt $$E: arg_max_weak(array [$$E] of var opt int: x)
function var opt $$E: arg_max_weak(array [$$E] of var opt bool: x)
function var opt $$E: arg_max_weak(array [$$E] of var opt float: x)
|
Returns the index of the maximum non-absent value in the array x. When breaking ties the least index is returned. Returns absent when all elements are absent. |
arg_min¶
1. function var $$E: arg_min(array [$$E] of var int: x)
2. function var $$E: arg_min(array [$$E] of var bool: x)
3. function var $$E: arg_min(array [$$E] of var float: x)
4. function var $$E: arg_min(array [$$E] of var opt int: x)
5. function var $$E: arg_min(array [$$E] of var opt bool: x)
6. function var $$E: arg_min(array [$$E] of var opt float: x)
|
|
arg_min_weak¶
function var opt $$E: arg_min_weak(array [$$E] of var opt int: x)
function var opt $$E: arg_min_weak(array [$$E] of var opt bool: x)
function var opt $$E: arg_min_weak(array [$$E] of var opt float: x)
|
Returns the index of the minimum non-absent value in the array x. When breaking ties the least index is returned. Returns absent when all elements are absent. |
maximum¶
predicate maximum(var $$E: m, array [int] of var $$E: x)
predicate maximum(var float: m, array [int] of var float: x)
|
Constrains m to be the maximum of the values in x. Assumptions: |x| > 0. |
maximum_arg¶
1. predicate maximum_arg(array [int] of var int: x, var int: i)
2. predicate maximum_arg(array [$$E] of var bool: x, var $$E: i)
3. predicate maximum_arg(array [$$E] of var float: x, var $$E: i)
|
|
minimum¶
predicate minimum(var float: m, array [int] of var float: x)
predicate minimum(var $$E: m, array [int] of var $$E: x)
|
Constrains m to be the minimum of the values in x. Assumptions: |x| > 0. |
minimum_arg¶
predicate minimum_arg(array [int] of var int: x, var int: i)
predicate minimum_arg(array [int] of var bool: x, var int: i)
predicate minimum_arg(array [int] of var float: x, var int: i)
|
Constrain i to be the index of the minimum value in the array x. When breaking ties the least index is returned. Assumption: |x| > 0 |
piecewise_linear¶
1. function var float: piecewise_linear(var float: x,
array [int] of float: xi,
array [int] of float: vi)
2. predicate piecewise_linear(var float: x,
var float: y,
array [int] of float: xi,
array [int] of float: vi)
3. function var float: piecewise_linear(var float: x,
array [int] of float: x_start,
array [int] of float: x_end,
array [int] of float: v_start,
array [int] of float: v_end)
4. predicate piecewise_linear(var float: x,
var float: y,
array [int] of float: x_start,
array [int] of float: x_end,
array [int] of float: v_start,
array [int] of float: v_end)
|
|
range¶
1. predicate range(array [$$X] of var $$Y: x,
var set of $$X: s,
var set of $$Y: t)
2. function var set of int: range(array [int] of var int: x,
var set of int: s)
|
|
sliding_sum¶
predicate sliding_sum(int: low,
int: up,
int: seq,
array [int] of var int: vs)
|
Requires that in each subsequence vs[i], …, vs[i + seq - 1] the sum of the values belongs to the interval [low, up]. |
sum_pred¶
predicate sum_pred(var $$X: i,
array [$$X] of set of $$Y: sets,
array [$$Y] of int: cs,
var int: s)
|
Requires that the sum of cs[i1]..cs[iN] equals s, where i1..iN are the elements of the i th set in sets. Nb: not called ‘sum’ as in the constraints catalog because ‘sum’ is a MiniZinc built-in function. |
sum_set¶
predicate sum_set(array [$$X] of $$Y: vs,
array [$$X] of int: ws,
var set of $$Y: x,
var int: s)
|
Requires that the sum of the weights ws[i1]..ws[iN] equals s, where vs[i1]..vs[iN] are the elements appearing in set x |