def test_log_completed_trial_skip_storage_access() -> None: study = create_study() # Create a trial to retrieve it as the `study.best_trial`. study.optimize(lambda _: 0.0, n_trials=1) trial = Trial(study, study._storage.create_new_trial(study._study_id)) storage = study._storage with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(trial, [1.0]) # Trial.best_trial and Trial.best_params access storage. assert mock_object.call_count == 2 logging.set_verbosity(logging.WARNING) with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(trial, [1.0]) assert mock_object.call_count == 0 logging.set_verbosity(logging.DEBUG) with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(trial, [1.0]) assert mock_object.call_count == 2
def test_log_completed_trial_skip_storage_access() -> None: study = create_study() # Create a trial to retrieve it as the `study.best_trial`. study.optimize(lambda _: 0.0, n_trials=1) frozen_trial = study.best_trial storage = study._storage with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(frozen_trial) assert mock_object.call_count == 1 logging.set_verbosity(logging.WARNING) with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(frozen_trial) assert mock_object.call_count == 0 logging.set_verbosity(logging.DEBUG) with patch.object(storage, "get_best_trial", wraps=storage.get_best_trial) as mock_object: study._log_completed_trial(frozen_trial) assert mock_object.call_count == 1
def logging_setup() -> Generator[None, None, None]: # We need to reconstruct our default handler to properly capture stderr. logging._reset_library_root_logger() logging.enable_default_handler() logging.set_verbosity(logging.INFO) logging.enable_propagation() yield # After testing, restore default propagation setting. logging.disable_propagation()
def solve(self, optimization_function): from optuna import create_study from optuna.logging import set_verbosity from optuna.samplers import TPESampler study = create_study(direction='minimize', sampler=TPESampler(self.seed)) n_dim = optimization_function.X.shape[1] n_dim_surface = n_dim - 1 def objective(trial): uniform = np.zeros(n_dim_surface) for i in range(n_dim_surface): uniform[i] = trial.suggest_uniform(f'uniform[{i}]', 0, 1) return optimization_function.compute(uniform) set_verbosity(0) study.optimize(objective, n_trials=self.n_trials)
def _set_verbosity(self): # type: () -> None if self.verbose > 1: logging.set_verbosity(DEBUG) elif self.verbose > 0: logging.set_verbosity(INFO) else: logging.set_verbosity(WARNING)
def test_log_completed_trial(capsys: _pytest.capture.CaptureFixture) -> None: # We need to reconstruct our default handler to properly capture stderr. logging._reset_library_root_logger() logging.set_verbosity(logging.INFO) study = create_study() study.optimize(lambda _: 1.0, n_trials=1) _, err = capsys.readouterr() assert "Trial 0" in err logging.set_verbosity(logging.WARNING) study.optimize(lambda _: 1.0, n_trials=1) _, err = capsys.readouterr() assert "Trial 1" not in err logging.set_verbosity(logging.DEBUG) study.optimize(lambda _: 1.0, n_trials=1) _, err = capsys.readouterr() assert "Trial 2" in err