embcol.problem.Constraint.transform

Constraint.transform(feasible)[source]

Transform a constraint for adjusting a feasible region.

Parameters:

feasible ({'nonnegative', 'nonpositive'}) – Feasible region after the transform.

Returns:

list of embcol.problem.Constraint – Transformed constrains.

Examples

>>> import numpy as np
>>> original = Constraint(
...     lambda params: 2*params,
...     lambda params: 2*np.eye(len(params)),
...     lambda params: np.zeros((len(params),)*3),
...     3,
...     lower_bound=-1.0,
...     upper_bound=1.0,
... )
>>> transformed = original.transform("nonnegative")
>>> params = np.array([-1.0, 0.0, 2.0])

Only params[1] is feasible for the original constraint.

>>> original.function(params)
array([-2.,  0.,  4.])
>>> original.violation(params) == 0
array([False,  True, False])

Only the feasible parameter gives nonnegative constrained values for all transformed constraints.

>>> [t.function(params) for t in transformed]
[array([-1.,  1.,  5.]), array([ 3.,  1., -3.])]