skip_if_not_installed("mlr3learners") skip_if_not_installed("DiceKriging") skip_if_not_installed("rgenoud") test_that("conditions work", { old_threshold_mlr3 = lgr::get_logger("mlr3/core")$threshold old_threshold_bbotk = lgr::get_logger("mlr3/bbotk")$threshold old_layout = lgr$appenders$console$layout lgr::get_logger("mlr3/core")$set_threshold(0) lgr::get_logger("mlr3/bbotk")$set_threshold("warn") # remove time for snapshots lgr$appenders$console$set_layout( LayoutFormat$new(fmt = "%L %m %f") ) on.exit({ lgr$appenders$console$set_layout(old_layout) lgr::get_logger("mlr3/core")$set_threshold(old_threshold_mlr3) lgr::get_logger("mlr3/bbotk")$set_threshold(old_threshold_bbotk) }) # acq optimizer error instance = MAKE_INST_1D(terminator = trm("evals", n_evals = 5L)) surrogate = SurrogateLearner$new(REGR_KM_DETERM) acq_function = AcqFunctionEI$new() acq_optimizer = AcqOptimizer$new(OptimizerError$new(), terminator = trm("evals", n_evals = 2L)) # catches simple error wrapped in Mlr3ErrorMboAcqOptimizer expect_snapshot(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer)) # uncaught acq optimizer error acq_optimizer$param_set$set_values(catch_errors = FALSE) instance = MAKE_INST_1D(terminator = trm("evals", n_evals = 10L)) expect_error(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer), regexp = "Optimizer Error") # surrogate update error instance = MAKE_INST_1D(terminator = trm("evals", n_evals = 10L)) learner = LearnerRegrError$new() learner$param_set$set_values(error_train = TRUE) learner$param_set$set_values(error_predict = FALSE) surrogate = SurrogateLearner$new(learner) acq_function = AcqFunctionEI$new() acq_optimizer = acqo("random_search", terminator = trm("evals", n_evals = 2L)) expect_snapshot(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer)) # uncaught surrogate update error surrogate$param_set$set_values(catch_errors = FALSE) expect_error(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer), class = "Mlr3ErrorLearnerTrain", regexp = "Surrogate Train Error") # surrogate predict error instance = MAKE_INST_1D(terminator = trm("evals", n_evals = 10L)) learner = LearnerRegrError$new() learner$param_set$set_values(error_train = FALSE) learner$param_set$set_values(error_predict = TRUE) surrogate = SurrogateLearner$new(learner) acq_function = AcqFunctionEI$new() acq_optimizer = acqo("random_search", terminator = trm("evals", n_evals = 2L)) expect_snapshot(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer)) # uncaught surrogate predict error acq_optimizer$param_set$set_values(catch_errors = FALSE) instance = MAKE_INST_1D(terminator = trm("evals", n_evals = 10L)) expect_error(bayesopt_ego(instance, surrogate = surrogate, acq_function = acq_function, acq_optimizer = acq_optimizer), class = "Mlr3ErrorLearnerPredict", regexp = "Surrogate Predict Error") })