git-subtree-dir: software/mza git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
24 lines
763 B
MiniZinc
24 lines
763 B
MiniZinc
include "fzn_piecewise_linear.mzn";
|
|
include "fzn_piecewise_linear_reif.mzn";
|
|
|
|
/** @group globals
|
|
Return a piecewise-linear interpolation
|
|
of the given point sequence as a function of \a x
|
|
*/
|
|
function var float: piecewise_linear(var float: x, array[int] of float: xi, array[int] of float: vi) ::promise_total =
|
|
let {
|
|
var float: res,
|
|
constraint piecewise_linear(x,res,xi,vi),
|
|
} in res;
|
|
|
|
|
|
/** @group globals
|
|
Constrains \a y(\a x) to be a piecewise-linear interpolation of
|
|
the provided point sequence.
|
|
*/
|
|
predicate piecewise_linear(var float: x, var float: y,
|
|
array[int] of float: xi, array[int] of float: vi) =
|
|
fzn_piecewise_linear(x, y, xi, vi);
|
|
|
|
%-----------------------------------------------------------------------------%
|