Skip to contents

mlr3tuning 1.6.1

CRAN release: 2026-07-26

  • compatibility: mlr3 1.7.2
  • chore: Minimum required version of rush is now 1.2.0. Removed all compatibility workarounds for older versions.
  • fix: The package now unions mlr_reflections$tuner_properties on load instead of overwriting it, so a property registered by another extension package is no longer dropped, and it removes its registered callbacks and tuner property on unload.
  • fix: AutoTuner accessors ($learner, $tuning_instance, $tuning_result, $archive, $importance(), $selected_features(), $oob_error(), $loglik()) now raise an informative error when the model is marshaled, instead of silently returning the untrained learner or NULL.
  • fix: AutoTuner$marshaled is now an active binding as in mlr3::Learner, so at$marshaled returns a flag instead of a method and can be used in conditions.
  • fix: AutoTuner$train() now correctly checks that an instantiated inner resampling only uses row ids present in the task for all resampling types. Previously, the check read list-based instances and silently did nothing for resamplings such as cv and holdout.
  • fix: Unmarshaling an AutoTuner model with inplace = TRUE after a non-inplace marshal no longer drops the auto_tuner_model class, which had caused a subsequent marshal to become a no-op.
  • fix: auto_tuner(), AutoTuner$new(), and tune() now error at construction when a rush controller is supplied together with a batch tuner.
  • fix: The mlr3tuning.backup callback now errors at the start of the run when store_benchmark_result = FALSE instead of silently writing an empty benchmark result, and it no longer errors when the target file already exists.
  • fix: ArchiveBatchTuning$print() no longer prints the archive table twice.
  • fix: ArchiveAsyncTuning$benchmark_result now raises a clear error when the tuning instance was created with store_benchmark_result = FALSE. Previously, the first access overwrote the cached benchmark result with NULL and every later access failed with an unrelated error. Freezing such an archive with ArchiveAsyncTuningFrozen works now and returns an empty benchmark result.
  • fix: AutoTuner$hash now also depends on the predict_sets, validate, and use_weights settings so that autotuners differing only in these fields no longer share a hash.
  • fix: as.data.table.ArchiveAsyncTuning() and as.data.table.ArchiveAsyncTuningFrozen() no longer error when the measures argument is used on an archive that contains queued, running, or failed points. The extra measures are NA for these points.
  • callback_async_tuning() and callback_batch_tuning() remove the deprecated on_result stage. Use on_result_end instead.
  • fix: as_tuner() with clone = TRUE now performs a deep clone, so the returned tuner no longer shares its ParamSet with the input.
  • fix: as_search_space() no longer errors when converting a ParamSet that contains an unset required parameter.
  • fix: assert_async_tuning_callbacks() and assert_batch_tuning_callbacks() now check that each callback inherits from CallbackAsyncTuning and CallbackBatchTuning, respectively, so tuning instances reject callbacks of the wrong type at construction time.
  • fix: Tuner$id now validates new values on assignment, and Tuner$label correctly rejects modification instead of silently accepting some invalid assignments.
  • fix: as.data.table.ArchiveAsyncTuning(), as.data.table.ArchiveAsyncTuningFrozen(), and as.data.table.ArchiveBatchTuning() now warn instead of silently ignoring the measures argument when no benchmark result is stored.
  • fix: tnr("irace") destroyed its own configuration during $optimize() by removing n_instances from and writing instantiated resamplings into its param set, which made a second run of the same tuner or AutoTuner impossible. The param set is now restored after the run.
  • fix: clbk("mlr3tuning.async_one_se_rule") now stores an unnamed numeric in the n_features column of the archive, matching the batch callback.
  • fix: clbk("mlr3tuning.async_measures") now accepts a single measure in the measures argument like the batch version, instead of requiring a list of measures.
  • fix: ObjectiveTuningBatch now errors when the number of custom resamplings does not match the number of hyperparameter configurations. Previously, the resamplings were silently recycled, pairing configurations with the wrong resamplings.
  • fix: extract_inner_tuning_results() no longer modifies the result table of the stored tuning instances by reference. Previously, the iteration and tuning_instance columns were written into instance$result, and a stale tuning_instance column could leak into the output of a second call with tuning_instance = FALSE.
  • fix: TuningInstanceBatchMultiCrit$assign_result() and TuningInstanceAsyncMultiCrit$assign_result() produced wrong result_learner_param_vals when the search space was empty, because the number of measures instead of the number of Pareto points was used to recycle the parameter values.
  • fix: assign_result() of TuningInstanceBatchMultiCrit and TuningInstanceAsyncMultiCrit now validates learner_param_vals like the single-crit instances.
  • fix: AutoTuner$clone(deep = TRUE) now deep clones the wrapped learner, resampling, measure, terminator, callbacks, and the trained model. Previously, the clone shared these objects with the original, so for example setting the predict type on the clone also changed the original.
  • fix: clbk("mlr3tuning.one_se_rule") and clbk("mlr3tuning.async_one_se_rule") no longer crash at result assignment when the archive contains a single evaluation or points without a performance score (queued, running, or failed points). These points are now removed before the standard error is computed, so they no longer deflate the standard error.

mlr3tuning 1.6.0

CRAN release: 2026-03-16

  • compatibility: rush 1.0.0.
  • fix: ArchiveAsyncTuning, ArchiveAsyncTuningFrozen, and ArchiveBatchTuning convert the archive to a data.table with a consistent column order.

mlr3tuning 1.5.1

CRAN release: 2025-12-14

  • compatibility: xgboost 3.1.2.1

mlr3tuning 1.5.0

CRAN release: 2025-11-07

  • feat: Add on_optimizer_queue_before_eval and on_optimizer_queue_after_eval stages to CallbackAsyncTuning.
  • fix: Add loaded packages to objective.
  • feat: Add tiny logging.
  • fix: Remove internal search space and trafo error.
  • fix: Unsatisfied dependencies in results in debug mode.

mlr3tuning 1.4.0

CRAN release: 2025-06-04

  • feat: Resample stages from CallbackResample are now available in CallbackBatchTuning and CallbackAsyncTuning.
  • fix: The $predict_type was written to the model even when the AutoTuner was not trained.
  • feat: Internal tuned values are now visible in logs.
  • BREAKING CHANGE: Remove internal search space argument.
  • BREAKING CHANGE: The mlr3 ecosystem has a base logger now which is named mlr3. The mlr3/bbotk logger is a child of the mlr3 logger and is used for logging messages from the bbotk and mlr3tuning package.
  • feat: Classes are now printed with the cli package.

mlr3tuning 1.3.0

CRAN release: 2024-12-17

  • feat: Save ArchiveAsyncTuning to a data.table with ArchiveAsyncTuningFrozen.
  • perf: Save models on worker only when requested in ObjectiveTuningAsync.

mlr3tuning 1.2.1

CRAN release: 2024-11-26

  • refactor: Only pass extra to $assign_result().

mlr3tuning 1.2.0

CRAN release: 2024-11-08

  • feat: Add new callback clbk("mlr3tuning.one_se_rule") that selects the hyperparameter configuration with the smallest feature set within one standard error of the best.
  • feat: Add new stages on_tuning_result_begin and on_result_begin to CallbackAsyncTuning and CallbackBatchTuning.
  • refactor: Rename stage on_result to on_result_end in CallbackAsyncTuning and CallbackBatchTuning.
  • docs: Extend the CallbackAsyncTuning and CallbackBatchTuning documentation.
  • compatibility: mlr3 0.22.0
  • compatibility: Work with new irace 4.0.0

mlr3tuning 1.1.0

CRAN release: 2024-10-27

  • fix: The as_data_table() functions do not unnest the x_domain column anymore by default.
  • fix: to_tune(internal = TRUE) now also works if non-internal tuning parameters have an .extra_trafo.
  • feat: It is now possible to pass an internal_search_space manually. This allows to use parameter transformations on the primary search space in combination with internal hyperparameter tuning.
  • refactor: The Tuner pass extra information of the result in the extra parameter now.

mlr3tuning 1.0.2

CRAN release: 2024-10-14

  • refactor: Extract internal tuned values in instance.

mlr3tuning 1.0.1

CRAN release: 2024-09-10

  • refactor: Replace internal tuning callback.
  • perf: Delete intermediate BenchmarkResult in ObjectiveTuningBatch after optimization.

mlr3tuning 1.0.0

CRAN release: 2024-06-29

  • feat: Introduce asynchronous optimization with the TunerAsync and TuningInstanceAsync* classes.
  • BREAKING CHANGE: The Tuner class is TunerBatch now.
  • BREAKING CHANGE: The TuningInstanceSingleCrit and TuningInstanceMultiCrit classes are TuningInstanceBatchSingleCrit and TuningInstanceBatchMultiCrit now.
  • BREAKING CHANGE: The CallbackTuning class is CallbackBatchTuning now.
  • BREAKING CHANGE: The ContextEval class is ContextBatchTuning now.
  • refactor: Remove hotstarting from batch optimization due to low performance.
  • refactor: The option evaluate_default is a callback now.

mlr3tuning 0.20.0

CRAN release: 2024-03-05

  • compatibility: Work with new paradox version 1.0.0
  • fix: TunerIrace failed with logical parameters and dependencies.
  • Added marshaling support to AutoTuner

mlr3tuning 0.19.2

CRAN release: 2023-11-28

  • refactor: Change thread limits.

mlr3tuning 0.19.1

CRAN release: 2023-11-20

  • refactor: Speed up the tuning process by minimizing the number of deep clones and parameter checks.
  • fix: Set store_benchmark_result = TRUE if store_models = TRUE when creating a tuning instance.
  • fix: Passing a terminator in tune_nested() did not work.

mlr3tuning 0.19.0

CRAN release: 2023-06-26

  • fix: Add $phash() method to AutoTuner.
  • fix: Include Tuner in hash of AutoTuner.
  • feat: Add new callback that scores the configurations on additional measures while tuning.
  • feat: Add vignette about adding new tuners which was previously part of the mlr3book.

mlr3tuning 0.18.0

CRAN release: 2023-03-08

  • BREAKING CHANGE: The method parameter of tune(), tune_nested() and auto_tuner() is renamed to tuner. Only Tuner objects are accepted now. Arguments to the tuner cannot be passed with ... anymore.
  • BREAKING CHANGE: The tuner parameter of AutoTuner is moved to the first position to achieve consistency with the other functions.
  • docs: Update resources sections.
  • docs: Add list of default measures.
  • fix: Add allow_hotstarting, keep_hotstart_stack and keep_models flags to AutoTuner and auto_tuner().

mlr3tuning 0.17.2

CRAN release: 2022-12-22

  • feat: AutoTuner accepts instantiated resamplings now. The AutoTuner checks if all row ids of the inner resampling are present in the outer resampling train set when nested resampling is performed.
  • fix: Standalone Tuner did not create a ContextOptimization.

mlr3tuning 0.17.1

CRAN release: 2022-12-07

  • fix: The ti() function did not accept callbacks.

mlr3tuning 0.17.0

CRAN release: 2022-11-18

  • feat: The methods $importance(), $selected_features(), $oob_error() and $loglik() are forwarded from the final model to the AutoTuner now.
  • refactor: The AutoTuner stores the instance and benchmark result if store_models = TRUE.
  • refactor: The AutoTuner stores the instance if store_benchmark_result = TRUE.

mlr3tuning 0.16.0

CRAN release: 2022-11-08

  • feat: Add new callback that enables early stopping while tuning to mlr_callbacks.
  • feat: Add new callback that backups the benchmark result to disk after each batch.
  • feat: Create custom callbacks with the callback_batch_tuning() function.

mlr3tuning 0.15.0

CRAN release: 2022-10-21

  • fix: AutoTuner did not accept TuningSpace objects as search spaces.
  • feat: Add ti() function to create a TuningInstanceSingleCrit or TuningInstanceMultiCrit.
  • docs: Documentation has a technical details section now.
  • feat: New option for extract_inner_tuning_results() to return the tuning instances.

mlr3tuning 0.14.0

CRAN release: 2022-08-25

  • feat: Add option evaluate_default to evaluate learners with hyperparameters set to their default values.
  • refactor: From now on, the default of smooth is FALSE for TunerGenSA.

mlr3tuning 0.13.1

CRAN release: 2022-05-03

  • feat: Tuner objects have the field $id now.

mlr3tuning 0.13.0

CRAN release: 2022-04-06

  • feat: Allow to pass Tuner objects as method in tune() and auto_tuner().
  • docs: Link Tuner to help page of bbotk::Optimizer.
  • feat: Tuner objects have the optional field $label now.
  • feat: as.data.table() functions for objects of class Dictionary have been extended with additional columns.

mlr3tuning 0.12.1

CRAN release: 2022-02-25

  • feat: Add a as.data.table.DictionaryTuner function.
  • feat: New $help() method which opens the manual page of a Tuner.

mlr3tuning 0.12.0

CRAN release: 2022-02-17

  • feat: as_search_space() function to create search spaces from Learner and ParamSet objects. Allow to pass TuningSpace objects as search_space in TuningInstanceSingleCrit and TuningInstanceMultiCrit.
  • feat: The mlr3::HotstartStack can now be removed after tuning with the keep_hotstart_stack flag.
  • feat: The Archive stores errors and warnings of the learners.
  • feat: When no measure is provided, the default measure is used in auto_tuner() and tune_nested().

mlr3tuning 0.11.0

CRAN release: 2022-02-02

  • fix: $assign_result() method in TuningInstanceSingleCrit when search space is empty.
  • feat: Default measure is used when no measure is supplied to TuningInstanceSingleCrit.

mlr3tuning 0.10.0

CRAN release: 2022-01-20

  • Fixes bug in TuningInstanceMultiCrit$assign_result().
  • Hotstarting of learners with previously fitted models.
  • Remove deep clones to speed up tuning.
  • Add store_models flag to auto_tuner().
  • Add "noisy" property to ObjectiveTuning.

mlr3tuning 0.9.0

CRAN release: 2021-09-14

  • Adds AutoTuner$base_learner() method to extract the base learner from nested learner objects.
  • tune() supports multi-criteria tuning.
  • Allows empty search space.
  • Adds TunerIrace from irace package.
  • extract_inner_tuning_archives() helper function to extract inner tuning archives.
  • Removes ArchiveTuning$extended_archive() method. The mlr3::ResampleResults are joined automatically by as.data.table.TuningArchive() and extract_inner_tuning_archives().

mlr3tuning 0.8.0

CRAN release: 2021-03-12

  • Adds tune(), auto_tuner() and tune_nested() sugar functions.
  • TuningInstanceSingleCrit, TuningInstanceMultiCrit and AutoTuner can be initialized with store_benchmark_result = FALSE and store_models = TRUE to allow measures to access the models.
  • Prettier printing methods.

mlr3tuning 0.7.0

CRAN release: 2021-02-11

  • Fix TuningInstance*$assign_result() errors with required parameter bug.
  • Shortcuts to access $learner(), $learners(), $learner_param_vals(), $predictions() and $resample_result() from benchmark result in archive.
  • extract_inner_tuning_results() helper function to extract inner tuning results.

mlr3tuning 0.6.0

CRAN release: 2021-01-24

  • ArchiveTuning$data is a public field now.

mlr3tuning 0.5.0

CRAN release: 2020-12-07

  • Adds TunerCmaes from adagio package.
  • Fix predict_type in AutoTuner.
  • Support to set TuneToken in Learner$param_set and create a search space from it.
  • The order of the parameters in TuningInstanceSingleCrit and TuningInstanceSingleCrit changed.

mlr3tuning 0.4.0

CRAN release: 2020-10-07

  • Option to control store_benchmark_result, store_models and check_values in AutoTuner. store_tuning_instance must be set as a parameter during initialization.
  • Fixes check_values flag in TuningInstanceSingleCrit and TuningInstanceMultiCrit.
  • Removed dependency on orphaned package bibtex.

mlr3tuning 0.3.0

CRAN release: 2020-09-08

  • Compact in-memory representation of R6 objects to save space when saving mlr3 objects via saveRDS(), serialize() etc.
  • Archive is ArchiveTuning now which stores the benchmark result in $benchmark_result. This change removed the resample results from the archive but they can be still accessed via the benchmark result.
  • Warning message if external package for tuning is not installed.
  • To retrieve the inner tuning results in nested resampling, as.data.table(rr)$learner[[1]]$tuning_result must be used now.

mlr3tuning 0.2.0

CRAN release: 2020-07-28

  • TuningInstance is now TuningInstanceSingleCrit. TuningInstanceMultiCrit is still available for multi-criteria tuning.
  • Terminators are now accessible by trm() and trms() instead of term() and terms().
  • Storing of resample results is optional now by using the store_resample_result flag in TuningInstanceSingleCrit and TuningInstanceMultiCrit
  • TunerNLoptr adds non-linear optimization from the nloptr package.
  • Logging is controlled by the bbotk logger now.
  • Proposed points and performance values can be checked for validity by activating the check_values flag in TuningInstanceSingleCrit and TuningInstanceMultiCrit.

mlr3tuning 0.1.3

  • mlr3tuning now depends on the bbotk package for basic tuning objects. Terminator classes now live in bbotk. As a consequence ObjectiveTuning inherits from bbotk::Objective, TuningInstance from bbotk::OptimInstance and Tuner from bbotk::Optimizer
  • TuningInstance$param_set becomes TuningInstance$search_space to avoid confusion as the param_set usually contains the parameters that change the behavior of an object.
  • Tuning is triggered by $optimize() instead of $tune()

mlr3tuning 0.1.2

CRAN release: 2020-01-31

  • Fixed a bug in AutoTuner where a $clone() was missing. Tuning results are unaffected, only stored models contained wrong hyperparameter values (#223).
  • Improved output log (#218).

mlr3tuning 0.1.1

CRAN release: 2019-12-06

  • Maintenance release.

mlr3tuning 0.1.0

CRAN release: 2019-09-30

  • Initial prototype.