ArchiveAsync$best() with
n_select > 1 no longer reorders the task cache of rush
in place, which changed the order of $finished_data and
$data for all later calls (#387).ArchiveBatch$add_evals() now checks that
xss_trafoed has one element per row of xdt,
which silently corrupted the x_domain column before
(#366).as.data.table(mlr_optimizers, objects = TRUE) now
returns the optimizer in the object column instead of
base::t() for all optimizers but "chain"
(#368).assert_terminable() now decides whether an
instance is single or multi-criteria from the codomain of the objective
instead of the class of the instance, so terminators are checked
correctly for OptimInstanceAsyncMultiCrit (#375).$assign_result() and $result_y of the
multi-criteria instances now only expect and return the target values of
the codomain. A codomain with additional non-target parameters made
$optimize() fail (#372).assign_result_default() now raises a readable
error when the terminator is already terminated before the first
evaluation instead of failing with column not found
(#377).bb_optimize() now creates a single-criteria
instance for a codomain with one target and additional non-target
parameters instead of a multi-criteria instance (#373).branin() now adds the noise argument
to the function value, which was ignored (#369).context$xdt can now be replaced by assignment in
the on_optimizer_before_eval stage of a
CallbackBatch, and the replaced points are both evaluated
and written to the archive (#374).local_search() now raises R errors
instead of using assert(), which aborted the R session and
vanished entirely in a build with -DNDEBUG (#382).local_search() now recognizes the termination
condition raised by a terminator. The condition was re-raised and the
RNG state was never written back, so all random numbers drawn in the C
code were lost (#378).local_search() now writes the RNG state back
before it calls the objective, so an objective that draws random numbers
no longer receives the numbers the C code consumed for mutation
(#379).local_search() now compares parameter names,
column names, list element names, and factor levels exactly instead of
by prefix. A parameter or level whose name was a prefix of another one
aborted the R session or made mutation a silent no-op (#380).nds_selection() now only accepts a
minimize argument of length 1 or of the number of
objectives, and rejects points with missing values (#365).Objective$eval_many() no longer multiplies the
number of rows when the objective returns an extra that is an atomic
vector of length greater than one (#367).optimize_async_default() now checks the instance
and the properties of the optimizer before the workers are started, so
unsupported parameter classes, dependencies, single or multi-criteria
mismatches, and missing packages are reported in the main process
instead of crashing the workers (#386).optimize_async_default() now stops the workers on
every exit path, including errors and interrupts. A failing optimization
left the workers running before (#384).OptimizerBatchChain now runs the optimizers on the
instance itself instead of on a clone. The terminator of the instance
sees all evaluated points, so the overall budget is no longer exceeded,
and points that were already evaluated before the chain started are no
longer duplicated in the archive (#364).OptimizerBatchIrace now passes the
digits parameter to irace instead of always using 15 digits
(#362).OptimizerBatchIrace now writes the actual step of
a race into the step column of the archive, which was
always 1 (#363).OptimizerBatchNLoptr no longer overwrites the
maxeval, maxtime, and stopval
parameters. The internal termination criteria set by the user are now
passed on to nloptr::nloptr() (#361).OptimizerBatchRandomSearch rejects a
batch_size smaller than 1, and $eval_batch()
errors on an empty xdt unless the search space is empty.
opt("random_search", batch_size = 0) looped forever before
(#370).options(bbotk.debug = TRUE) no longer hangs when
the optimizer returns before the terminator is satisfied, e.g. when the
design of OptimizerAsyncDesignPoints is exhausted
(#385).$result_y of the single-criteria instances now
only returns the target values of the codomain. It errored for a
codomain with additional non-target parameters (#371).shrink_ps() now expects the point to shrink around
on the scale of the search space instead of the transformed scale, and
the uniroot() based inversion of the trafo is removed.
OptimizerBatchFocusSearch shrunk the search space around
the wrong point whenever the search space had a trafo (#360).TerminatorRunTime now reports an integer number of
steps, so a fractional secs value no longer breaks
$optimize() when progressr is loaded (#376).mirai compute
profiles set with the profiles argument of
rush::rush_plan(),
e.g. profiles = c(cpu = 2, gpu = 2) runs 2 workers on the
daemons of the "cpu" profile and 2 workers on the daemons
of the "gpu" profile. The profile a worker runs on is
available as instance$rush$profile.ArchiveAsync$push_points() and
ArchiveAsync$push_point() gain the profile
argument to queue points for a mirai compute profile.
Points queued for a profile are only evaluated by the workers running on
that profile, whereas points pushed without a profile are queued in the
shared queue and are evaluated by any worker.nds_selection() now uses
moocore::pareto_rank() and
moocore::hv_contributions() instead of the
emoa package, which is no longer suggested. Boundary points
now always survive tie breaking in three or more dimensions, matching
the previous behavior in two dimensions.OptimizerBatchCmaes now calls
libcmaesr::cmaes() instead of
adagio::pureCMAES(), which is no longer suggested. The
optimizer gains the algo, lambda,
max_restarts, elitism, tpa,
tpa_dsigma, seed, f_tolerance,
x_tolerance, x0_lower, and
x0_upper parameters, and evaluates a whole generation of
lambda points per batch. The sigma parameter
no longer defaults to 0.5 but is handled by
libcmaes.extra argument from
ArchiveAsync’s $push_points(),
$push_point(), $push_running_points(),
$push_running_point(), $finish_points(), and
$finish_point(). Use the corresponding
xss_extra, xs_extra, or
yss_extra, ys_extra argument instead.rush$fail_tasks() method when cleaning up after
termination. Queued tasks are now removed with
rush$empty_queue() and running tasks are left to the
workers that own them.ArchiveAsync gains additional methods wrapping
the rush task API: $push_point(),
$push_running_points(),
$push_finished_point(),
$push_finished_points(),
$push_failed_points(), $finish_point(),
$finish_points(), $fail_point(), and
$fail_points().ArchiveAsync$push_failed_point() now creates a
new failed point in the archive instead of moving a running point to the
failed points; use $fail_point() to move a running point to
the failed points.ArchiveAsync$push_result() is deprecated, use
$finish_point() instead.is_dominated() now uses
moocore::is_nondominated() internally instead of a custom C
implementation (#301).emoa::dominated_hypervolume with
moocore::hypervolume for computing the hypervolume
indicator.rush is now 1.0.0.
Removed all compatibility workarounds for older versions.mlr_test_functions dictionary with well-known
2-D optimization test functions (Branin, Rosenbrock, Himmelblau,
Rastrigin, etc.) and sugar functions otfun() /
otfuns()."learn" tag (direction=0) alongside
minimize/maximize in Codomain.EvalInstance from which
OptimInstance now inherits. EvalInstance keeps
information about a process that evaluates an Objective
while not necessarily optimizing it.choose_search_space()
function.mlr3misc error classes for errors and
warnings.rush 1.0.0.OptimizerLocalSearch
now.on_optimizer_queue_before_eval and
on_optimizer_queue_after_eval stages to
CallbackAsync and CallbackBatch.rush worker.fix: Imbalanced protection and casting in C code. fix: Load required packages in worker loop.
OptimizerBatchLocalSearch with
a faster C implementation.par parameter to
OptimizerGenSA.start parameter from
OptimizerNloptr with x0 parameter.Optimizers.Objective$packages.n_workers to rush.rush worker after optimization.mlr3. The mlr3/bbotk logger is a child
of the mlr3 logger and is used for logging messages from
the bbotk and mlr3tuning package.cli
package.xss and
constants.OptimizerNloptr bounds.OptimizerNloptr.Codomain$maximization_to_minimization
with $direction field.ArchiveAsync to a data.table
with ArchiveAsyncFrozen.OptimizerBatchChain that runs multiple
optimizers sequentially.extra to
$assign_result().on_result_begin to
CallbackAsyncTuning and
CallbackBatchTuning.on_result to
on_result_end in CallbackAsyncTuning and
CallbackBatchTuning.CallbackAsyncTuning and
CallbackBatchTuning documentation.ContextBatch and ContextAsync have a
result_extra field now to access additional results passed
to the instance.extra
to OptimInstance$assign_result().OptimInstance$assign_result() method.trm("stagnation_hypervolume").opt("local_search")."on_optimization_end_batch" stage to
CallbackBatch.OptimizerAsync and OptimInstanceAsync
classes.Optimizer class is
OptimizerBatch now.OptimInstance class and subclasses
are OptimInstanceBatch* now.CallbackOptimization class is
CallbackBatch now.ContextOptimization class is
ContextBatch now.ArchiveBest class and
keep_evals parameter from OptimInstance.OptimizerIrace failed with logical parameters and
dependencies.archive$best() method
and add ties method.OptimInstance$print() errored when the search
space was empty.Tuner and FSelector were
rejected by ContextBatch.Archive$data_extra.Terminator$format(with_params = TRUE) printed an
empty list when no parameter was set.OptimizerIrace automatically added the
instances parameter to Objective$constants.
From now on, the instances parameter can be also set
manually.branin(xs) is now
branin(x1, x2, noise) and
branin_wu(x1, x2, fidelity).ObjectiveRFunMany that can evaluate a list of
configurations with a user supplied function.ObjectiveRFunDt$eval_many() did not create a column with
NA for the missing parameter.digits in
OptimizerIrace is 15 now to avoid rounding errors.OptimizerIrace. By default, the bounds of
double parameters are represented with 15 decimal places now. The
digits parameter of OptimizerIrace also
changes number of decimal places of the bounds now.OptimizerIrace did not work with parameters with
multiple dependencies.mlr_callbacks.callback_batch()
function.OptimizerFocusSearch that performs a focusing
random search.Optimizer and Terminator objects
have the field $id now.$print() method of
OptimInstance omits unnecessary columns now.$clear() method of OptimInstance
raised an error.$clear() method of Archive missed
to reset the $start_time field.Optimizer and Terminator objects
have the optional field $label now.as.data.table() functions for objects of class
Dictionary have been extended with additional columns.as.data.table.DictionaryTerminator()
function.$.status() method of
TerminatorRunTime and TerminatorClockTime was
not in a consistent unit. The return is in seconds from now on.as.data.table.DictionaryOptimizer()
function.$help() method which opens the manual page of
an Optimizer.$nds_selection() method to
Archive.Codomain class that allows extra
parameters.ObjectiveRFun are named.OptimInstance, Archive and
Objective objects were not cloned properly.$param_classes,
$properties and $packages of
Optimizer objects are read-only now.branin() function is exported now.TerminatorEvals can now be changed
depending on the dimension of the search space with the parameter
k.bb_optimize() function.OptimizerIrace which calls
irace::irace from the irace package.$clear() method to OptimInstance
to reset the instance.$print() methods.check_values flag in OptimInstance,
OptimInstanceSingleCrit,
OptimInstanceMultiCrit, ObjectiveRFun and
ObjectiveRFunDt.data.table within the
Archive can now be accessed with $data.m parameter of
Archive$best() is renamed to batch.ArchiveBest class which only stores best
scoring evaluation instead of all evaluationsObjectiveRFunDt
is used with a domain without trafo.ParamUty in
OptimizerDesignPoints.OptimizerCmaes and
OptimizerNloptr can now be randomly created or from center
of the search space.$optimize() method supports progress bars via
the package progressr.bibtex.OptimizerCmaes which calls
adagio::pureCMAES from the adagio
package.Optimizer is not installed.