class documentation

no boundaries

Method __init__ bounds can be None or [lb, ub]
Method is_in_bounds return True if x is in bounds.

Inherited from BoundaryHandlerBase:

Method __call__ return penalty or list of penalties, by default zero(s).
Method amend_bounds_for_integer_variables set bounds away from at=0.5 such that
Method get_bound return lower and upper bound of variable with index index
Method get_bounds get_bounds('lower', 8) returns the lower bounds in 8-D
Method has_bounds return True if any variable is bounded
Method idx_out_of_bounds return index list of out-of-bound values in x.
Method into_bounds set out-of-bound values on bounds and return x.
Method inverse inverse of repair if it exists, at least it should hold repair == repair o inverse o repair
Method repair projects infeasible values on the domain bound, might be overwritten by derived class
Method to_dim_times_two return boundaries in format [[lb0, ub0], [lb1, ub1], ...], as used by BoxConstraints... class.
Method update end-iteration callback of boundary handler (abstract/empty)
Instance Variable bounds Undocumented
Instance Variable use_cached_values default behavior as to whether to use cached values
Method _get_bounds ib == 0/1 means lower/upper bound, return a vector of length dimension
Instance Variable _bounds_dict saved return values of get_bounds(i, dim). Changing self.bounds may only be effective when this is reset.
def __init__(self, bounds=None):

bounds can be None or [lb, ub]

where lb and ub are either None or a vector (which can have None entries).

On return, the bounds attribute of self are the bounds in a normalized form.

To compute bounds for any dimension, the last entry of bounds is then recycled for variables with indices >= len(bounds[i]) for i in (0,1).

def is_in_bounds(self, x):

return True if x is in bounds.

>>> import numpy as np
>>> import cma
>>> b = cma.boundary_handler.BoundaryHandlerBase(bounds=[[-0.5], 0.2])
>>> for n in [2, 4, 9]:
...     x = np.random.randn(n)
...     assert (all(-0.5 <= x) and all(0.2 >= x)) is b.is_in_bounds(x)