# Multi-variate Piecewise Functions¶

## Summary¶

 pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd(…) Models a multi-variate piecewise linear function. pyomo.core.kernel.piecewise_library.transforms_nd.PiecewiseLinearFunctionND(…) A multi-variate piecewise linear function pyomo.core.kernel.piecewise_library.transforms_nd.TransformedPiecewiseLinearFunctionND(f) Base class for transformed multi-variate piecewise linear functions pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd_cc(…) Discrete CC multi-variate piecewise representation

## Member Documentation¶

pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd(tri, values, input=None, output=None, bound='eq', repn='cc')[source]

Models a multi-variate piecewise linear function.

This function takes a D-dimensional triangulation and a list of function values associated with the points of the triangulation and transforms this input data into a block of variables and constraints that enforce a piecewise linear relationship between an D-dimensional vector of input variable and a single output variable. In the general case, this transformation requires the use of discrete decision variables.

Parameters: tri (scipy.spatial.Delaunay) – A triangulation over the discretized variable domain. Can be generated using a list of variables using the utility function util.generate_delaunay(). Required attributes: points: An (npoints, D) shaped array listing the D-dimensional coordinates of the discretization points. simplices: An (nsimplices, D+1) shaped array of integers specifying the D+1 indices of the points vector that define each simplex of the triangulation. values (numpy.array) – An (npoints,) shaped array of the values of the piecewise function at each of coordinates in the triangulation points array. input – A D-length list of variables or expressions bound as the inputs of the piecewise function. output – The variable constrained to be the output of the piecewise linear function. bound (str) – The type of bound to impose on the output expression. Can be one of: ’lb’: y <= f(x) ’eq’: y = f(x) ’ub’: y >= f(x) repn (str) – The type of piecewise representation to use. Can be one of: ’cc’: convex combination a block containing any new variables, constraints, and other components used by the piecewise representation TransformedPiecewiseLinearFunctionND
class pyomo.core.kernel.piecewise_library.transforms_nd.PiecewiseLinearFunctionND(tri, values, validate=True, **kwds)[source]

Bases: object

A multi-variate piecewise linear function

Multi-varite piecewise linear functions are defined by a triangulation over a finite domain and a list of function values associated with the points of the triangulation. The function value between points in the triangulation is implied through linear interpolation.

Parameters: tri (scipy.spatial.Delaunay) – A triangulation over the discretized variable domain. Can be generated using a list of variables using the utility function util.generate_delaunay(). Required attributes: points: An (npoints, D) shaped array listing the D-dimensional coordinates of the discretization points. simplices: An (nsimplices, D+1) shaped array of integers specifying the D+1 indices of the points vector that define each simplex of the triangulation. values (numpy.array) – An (npoints,) shaped array of the values of the piecewise function at each of coordinates in the triangulation points array.
__call__(x)[source]

Evaluates the piecewise linear function using interpolation. This method supports vectorized function calls as the interpolation process can be expensive for high dimensional data.

For the case when a single point is provided, the argument x should be a (D,) shaped numpy array or list, where D is the dimension of points in the triangulation.

For the vectorized case, the argument x should be a (n,D)-shaped numpy array.

triangulation

The triangulation over the domain of this function

values

The set of values used to defined this function

class pyomo.core.kernel.piecewise_library.transforms_nd.TransformedPiecewiseLinearFunctionND(f, input=None, output=None, bound='eq')[source]

Base class for transformed multi-variate piecewise linear functions

A transformed multi-variate piecewise linear functions is a block of variables and constraints that enforce a piecewise linear relationship between an vector input variables and a single output variable.

Parameters: f (PiecewiseLinearFunctionND) – The multi-variate piecewise linear function to transform. input – The variable constrained to be the input of the piecewise linear function. output – The variable constrained to be the output of the piecewise linear function. bound (str) – The type of bound to impose on the output expression. Can be one of: ’lb’: y <= f(x) ’eq’: y = f(x) ’ub’: y >= f(x)
__call__(x)[source]

Evaluates the piecewise linear function using interpolation. This method supports vectorized function calls as the interpolation process can be expensive for high dimensional data.

For the case when a single point is provided, the argument x should be a (D,) shaped numpy array or list, where D is the dimension of points in the triangulation.

For the vectorized case, the argument x should be a (n,D)-shaped numpy array.

bound

The bound type assigned to the piecewise relationship (‘lb’,’ub’,’eq’).

input

The tuple of expressions that store the inputs to the piecewise function. The returned objects can be updated by assigning to their expr attribute.

output

The expression that stores the output of the piecewise function. The returned object can be updated by assigning to its expr attribute.

triangulation

The triangulation over the domain of this function

values

The set of values used to defined this function

class pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd_cc(*args, **kwds)[source]

Discrete CC multi-variate piecewise representation

Expresses a multi-variate piecewise linear function using the CC formulation.