def __init__( self, *, consider_prior: bool = True, prior_weight: float = 1.0, consider_magic_clip: bool = True, consider_endpoints: bool = True, n_startup_trials: int = 10, n_ehvi_candidates: int = 24, gamma: Callable[[int], int] = default_gamma, weights_above: Callable[[int], np.ndarray] = _default_weights_above, seed: Optional[int] = None, ) -> None: self._parzen_estimator_parameters = _ParzenEstimatorParameters( consider_prior, prior_weight, consider_magic_clip, consider_endpoints, weights_above) self._prior_weight = prior_weight self._n_startup_trials = n_startup_trials self._n_ehvi_candidates = n_ehvi_candidates self._gamma = gamma self._weights = weights_above self._warn_independent_sampling = True self._rng = np.random.RandomState(seed) self._mo_random_sampler = RandomSampler(seed=seed) self._search_space = IntersectionSearchSpace(include_pruned=True) self._split_cache: Dict[int, Any] = {} self._weights_below: Dict[int, Any] = {}
def __init__( self, consider_prior: bool = True, prior_weight: float = 1.0, consider_magic_clip: bool = True, consider_endpoints: bool = False, n_startup_trials: int = 10, n_ei_candidates: int = 24, gamma: Callable[[int], int] = default_gamma, weights: Callable[[int], np.ndarray] = default_weights, seed: Optional[int] = None, *, multivariate: bool = False, group: bool = False, warn_independent_sampling: bool = True, ) -> None: self._parzen_estimator_parameters = _ParzenEstimatorParameters( consider_prior, prior_weight, consider_magic_clip, consider_endpoints, weights) self._prior_weight = prior_weight self._n_startup_trials = n_startup_trials self._n_ei_candidates = n_ei_candidates self._gamma = gamma self._weights = weights self._warn_independent_sampling = warn_independent_sampling self._rng = np.random.RandomState(seed) self._random_sampler = RandomSampler(seed=seed) self._multivariate = multivariate self._group = group self._group_decomposed_search_space: Optional[ _GroupDecomposedSearchSpace] = None self._search_space_group: Optional[_SearchSpaceGroup] = None self._search_space = IntersectionSearchSpace(include_pruned=True) if multivariate: warnings.warn( "``multivariate`` option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, ) if group: if not multivariate: raise ValueError( "``group`` option can only be enabled when ``multivariate`` is enabled." ) warnings.warn( "``group`` option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, ) self._group_decomposed_search_space = _GroupDecomposedSearchSpace( True)
def __init__( self, consider_prior: bool = True, prior_weight: float = 1.0, consider_magic_clip: bool = True, consider_endpoints: bool = False, n_startup_trials: int = 10, n_ei_candidates: int = 24, gamma: Callable[[int], int] = default_gamma, weights: Callable[[int], np.ndarray] = default_weights, seed: Optional[int] = None, *, multivariate: bool = False, warn_independent_sampling: bool = True, ) -> None: self._parzen_estimator_parameters = _ParzenEstimatorParameters( consider_prior, prior_weight, consider_magic_clip, consider_endpoints, weights) self._prior_weight = prior_weight self._n_startup_trials = n_startup_trials self._n_ei_candidates = n_ei_candidates self._gamma = gamma self._weights = weights self._warn_independent_sampling = warn_independent_sampling self._rng = np.random.RandomState(seed) self._random_sampler = RandomSampler(seed=seed) self._multivariate = multivariate self._search_space = IntersectionSearchSpace() if multivariate: warnings.warn( "``multivariate`` option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, )
def __init__( self, *, population_size: int = 50, mutation_prob: Optional[float] = None, crossover: Optional[BaseCrossover] = None, crossover_prob: float = 0.9, swapping_prob: float = 0.5, seed: Optional[int] = None, constraints_func: Optional[Callable[[FrozenTrial], Sequence[float]]] = None, ) -> None: # TODO(ohta): Reconsider the default value of each parameter. if not isinstance(population_size, int): raise TypeError("`population_size` must be an integer value.") if population_size < 2: raise ValueError( "`population_size` must be greater than or equal to 2.") if not (mutation_prob is None or 0.0 <= mutation_prob <= 1.0): raise ValueError( "`mutation_prob` must be None or a float value within the range [0.0, 1.0]." ) if not (0.0 <= crossover_prob <= 1.0): raise ValueError( "`crossover_prob` must be a float value within the range [0.0, 1.0]." ) if not (0.0 <= swapping_prob <= 1.0): raise ValueError( "`swapping_prob` must be a float value within the range [0.0, 1.0]." ) if constraints_func is not None: warnings.warn( "The constraints_func option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, ) if crossover is None: crossover = UniformCrossover(swapping_prob) if not isinstance(crossover, BaseCrossover): raise ValueError( f"'{crossover}' is not a valid crossover." " For valid crossovers see" " https://optuna.readthedocs.io/en/stable/reference/samplers.html." ) if population_size < crossover.n_parents: raise ValueError( f"Using {crossover}," f" the population size should be greater than or equal to {crossover.n_parents}." f" The specified `population_size` is {population_size}.") self._population_size = population_size self._mutation_prob = mutation_prob self._crossover = crossover self._crossover_prob = crossover_prob self._swapping_prob = swapping_prob self._random_sampler = RandomSampler(seed=seed) self._rng = np.random.RandomState(seed) self._constraints_func = constraints_func self._search_space = IntersectionSearchSpace()
def __init__( self, *, population_size: int = 50, mutation_prob: Optional[float] = None, crossover: str = "uniform", crossover_prob: float = 0.9, swapping_prob: float = 0.5, seed: Optional[int] = None, constraints_func: Optional[Callable[[FrozenTrial], Sequence[float]]] = None, ) -> None: # TODO(ohta): Reconsider the default value of each parameter. if not isinstance(population_size, int): raise TypeError("`population_size` must be an integer value.") if population_size < 2: raise ValueError( "`population_size` must be greater than or equal to 2.") if not (mutation_prob is None or 0.0 <= mutation_prob <= 1.0): raise ValueError( "`mutation_prob` must be None or a float value within the range [0.0, 1.0]." ) if not (0.0 <= crossover_prob <= 1.0): raise ValueError( "`crossover_prob` must be a float value within the range [0.0, 1.0]." ) if not (0.0 <= swapping_prob <= 1.0): raise ValueError( "`swapping_prob` must be a float value within the range [0.0, 1.0]." ) if constraints_func is not None: warnings.warn( "The constraints_func option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, ) if crossover not in [ "uniform", "blxalpha", "sbx", "vsbx", "undx", "spx" ]: raise ValueError( f"'{crossover}' is not a valid crossover name." " The available crossovers are" " `uniform` (default), `blxalpha`, `sbx`, `vsbx`, `undx`, and `spx`." ) if crossover != "uniform": warnings.warn( "``crossover`` option is an experimental feature." " The interface can change in the future.", ExperimentalWarning, ) n_parents = get_n_parents(crossover) if population_size < n_parents: raise ValueError( f"Using {crossover}," f" the population size should be greater than or equal to {n_parents}." f" The specified `population_size` is {population_size}.") self._population_size = population_size self._mutation_prob = mutation_prob self._crossover = crossover self._crossover_prob = crossover_prob self._swapping_prob = swapping_prob self._random_sampler = RandomSampler(seed=seed) self._rng = np.random.RandomState(seed) self._constraints_func = constraints_func self._search_space = IntersectionSearchSpace()