Esempio n. 1
0
    def ask(self, idg: solver.TrialIdGenerator) -> solver.NextTrial:
        if not self._pruned.empty():
            kurobako_trial_id, trial = self._pruned.get()
            next_step = None
        elif self._waitings.empty():
            kurobako_trial_id = idg.generate()
            trial = self._study.ask()
            next_step = self._next_step(0)
        else:
            kurobako_trial_id, trial = self._waitings.get()
            # TODO(contramundum53): remove access to self._study._storage
            current_step = self._study._storage.get_trial(
                trial._trial_id).last_step

            next_step = self._next_step(current_step)

        params = []  # type: List[Optional[float]]
        for p in self._problem.params:
            if p.is_constraint_satisfied(self._problem.params, params):
                params.append(self._suggest(trial, p))
            else:
                params.append(None)

        self._runnings[kurobako_trial_id] = trial
        return solver.NextTrial(trial_id=kurobako_trial_id,
                                params=params,
                                next_step=next_step)
Esempio n. 2
0
    def ask(self, idg: solver.TrialIdGenerator) -> solver.NextTrial:
        if not self._pruned.empty():
            kurobako_trial_id, trial = self._pruned.get()
            next_step = None
        elif self._waitings.empty():
            kurobako_trial_id = idg.generate()
            trial = self._create_new_trial()
            next_step = self._next_step(0)
        else:
            kurobako_trial_id, trial = self._waitings.get()
            frozen_trial = optuna.multi_objective.trial.FrozenMultiObjectiveTrial(
                trial._n_objectives,
                self._study._storage.get_trial(trial._trial_id))
            current_step = frozen_trial.last_step
            next_step = self._next_step(current_step)

        params = []  # type: List[Optional[float]]
        for p in self._problem.params:
            if p.is_constraint_satisfied(self._problem.params, params):
                params.append(self._suggest(trial, p))
            else:
                params.append(None)

        self._runnings[kurobako_trial_id] = trial
        return solver.NextTrial(trial_id=kurobako_trial_id,
                                params=params,
                                next_step=next_step)
Esempio n. 3
0
    def ask(self, idg: solver.TrialIdGenerator) -> solver.NextTrial:
        params: List[Optional[float]] = []
        for p in self._problem.params:
            if p.distribution == problem.Distribution.UNIFORM:
                params.append(self._rng.uniform(p.range.low, p.range.high))
            else:
                low = np.log(p.range.low)
                high = np.log(p.range.high)
                params.append(float(np.exp(self._rng.uniform(low, high))))

        trial_id = idg.generate()
        next_step = self._problem.last_step
        return solver.NextTrial(trial_id, params, next_step)