示例#1
0
 def significantly_mutate(self, v: float, arity: int):
     """Randomly drawn a normal value, and redraw until it's different after discretization by the quantiles
     1/arity, 2/arity, ..., (arity-1)/arity.
     """
     w = v
     while discretization.threshold_discretization(
         [w], arity) == discretization.threshold_discretization([v], arity):
         w = self.random_state.normal(0.0, 1.0)
     return w
示例#2
0
 def coordinatewise_mutation(
     self, parent: tp.ArrayLike, velocity: tp.ArrayLike, boolean_vector: tp.ArrayLike, arity: int
 ) -> tp.ArrayLike:
     """This is the anisotropic counterpart of the classical 1+1 mutations in discrete domains
     with tunable intensity: it is useful for anisotropic adaptivity."""
     dimension = len(parent)
     boolean_vector = np.zeros(dimension, dtype=bool)
     while not any(boolean_vector):
         boolean_vector = self.random_state.rand(dimension) < (1.0 / dimension)
     discrete_data = discretization.threshold_discretization(parent, arity=arity)
     discrete_data = np.where(
         boolean_vector,
         discrete_data + self.random_state.choice([-1.0, 1.0], size=dimension) * velocity,
         discrete_data,
     )
     return discretization.inverse_threshold_discretization(discrete_data)
示例#3
0
def hardleadingones5(y: np.ndarray) -> float:
    """Leadingones, with a discretization by 5 with 4 thresholds (quantiles of Gaussian)."""
    return _leadingones(discretization.threshold_discretization(y, 5))
示例#4
0
def hardjump5(y: np.ndarray) -> float:
    """Jump, with a discretization by 5 with 4 thresholds (quantiles of Gaussian)."""
    return _jump(discretization.threshold_discretization(y, 5))
示例#5
0
def hardonemax5(y: np.ndarray) -> float:
    """Hardonemax, with a discretization by 5 with 4 thresholds (quantiles of Gaussian)."""
    return _onemax(discretization.threshold_discretization(y, 5))
示例#6
0
def hardleadingones(y: np.ndarray) -> float:
    """Leading ones, with a discretization in 2 by threshold 0 (>0 or <0)."""
    return _leadingones(discretization.threshold_discretization(y))
示例#7
0
def hardjump(y: np.ndarray) -> float:
    """Hardjump, with a discretization in 2 by threshold 0 (>0 or <0)."""
    return _jump(discretization.threshold_discretization(y))
示例#8
0
def hardonemax(y: np.ndarray) -> float:
    """Onemax, with a discretization in 2 by threshold 0 (>0 or <0)."""
    return _onemax(discretization.threshold_discretization(y))