def __init__(self, archive, x0, sigma0, bounds=None, batch_size=64, seed=None): self._rng = np.random.default_rng(seed) self._batch_size = batch_size self._x0 = np.array(x0, dtype=archive.dtype) self._sigma0 = archive.dtype(sigma0) if isinstance( sigma0, (float, np.floating)) else np.array(sigma0) EmitterBase.__init__( self, archive, len(self._x0), bounds, )
def __init__(self, archive, x0, iso_sigma=0.01, line_sigma=0.2, bounds=None, batch_size=64, seed=None): self._x0 = np.array(x0, dtype=archive.dtype) self._iso_sigma = archive.dtype(iso_sigma) self._line_sigma = archive.dtype(line_sigma) EmitterBase.__init__( self, archive, len(self._x0), bounds, batch_size, seed, )
def __init__(self, archive, x0, sigma0, selection_rule="filter", restart_rule="no_improvement", weight_rule="truncation", bounds=None, batch_size=None, seed=None): self._rng = np.random.default_rng(seed) self._batch_size = batch_size self._x0 = np.array(x0, dtype=archive.dtype) self._sigma0 = sigma0 EmitterBase.__init__( self, archive, len(self._x0), bounds, ) if selection_rule not in ["mu", "filter"]: raise ValueError(f"Invalid selection_rule {selection_rule}") self._selection_rule = selection_rule if restart_rule not in ["basic", "no_improvement"]: raise ValueError(f"Invalid restart_rule {restart_rule}") self._restart_rule = restart_rule opt_seed = None if seed is None else self._rng.integers(10_000) self.opt = CMAEvolutionStrategy(sigma0, batch_size, self._solution_dim, weight_rule, opt_seed, self.archive.dtype) self.opt.reset(self._x0) self._num_parents = (self.opt.batch_size // 2 if selection_rule == "mu" else None) self._target_behavior_dir = self._generate_random_direction() self._batch_size = self.opt.batch_size self._restarts = 0 # Currently not exposed publicly.