maximum_minimum
maximum_minimum |
Purpose
The maximum (resp) minimum constraint states that a variable z is the maximum (resp) minimum of a list of variables vars
Synopsis
minimum(vars) = z or maximum(vars) = z
z = minimum(vars) or z = maximum(vars)
Arguments
vars
|
list of decision variables: {set of cpvar | array(range) of cpvar | cpvarlist}
|
z
|
decision variable for the maximum/minimum: cpvar
|
Return value
A maximum/minimum constraint over z and vars
Example
The following example shows how to use the maximum/minimum constraints:
model "Min and Max" uses "kalis" declarations R = 1..5 x: array(R) of cpvar v, w, y: cpvar L: cpvarlist MaxCtr: cpctr end-declarations setname(v,"v") setname(w,"w") setname(y,"y") forall(i in R) do setname(x(i),"x"+i+"") setdomain(x(i), 0, 2*i + round(5*random + 0.5)) end-do writeln("Initial domains:\n ", x, " ", v) ! Minimum constraint with automated posting v = minimum(x) writeln("With minimum constraint:\n ", x, " ", v) x(1) = 2 writeln("Fixing x(1) to 2: ", v) ! Maximum constraint with explicit posting MaxCtr:= w = maximum({x(2), x(3), x(5)}) if cp_post(MaxCtr) then writeln("With maximum constraint:\n ", x, " ", w) else exit(1) end-if w <= 7 writeln("Bounding w by 7:\n ", x, " ", w) ! Maximum constraint on list of variables L += x(2); L += x(3); L += x(4) y = maximum(L) writeln("With 2nd maximum constraint:\n ", x, " ", y) if (cp_find_next_sol) then writeln("A solution:\n ", x, " ", v, " ", w, " ", y) end-if end-model