Abstract Terminator
class that implements the base functionality each
terminator must provide. A terminator is an object that determines when to
stop the optimization.
Termination of optimization works as follows:
Evaluations in a instance are performed in batches.
Before each batch evaluation, the Terminator is checked, and if it is positive, we stop.
The optimization algorithm itself might decide not to produce any more points, or even might decide to do a smaller batch in its last evaluation.
Therefore the following note seems in order: While it is definitely possible to execute a fine-grained control for termination, and for many optimization algorithms we can specify exactly when to stop, it might happen that too few or even too many evaluations are performed, especially if multiple points are evaluated in a single batch (c.f. batch size parameter of many optimization algorithms). So it is advised to check the size of the returned archive, in particular if you are benchmarking multiple optimization algorithms.
Terminator
subclasses can overwrite .status()
to support progress bars
via the package progressr. The method must return the maximum
number of steps (max_steps
) and the currently achieved number of steps
(current_steps
) as a named integer vector.
param_set
paradox::ParamSet Set of control parameters for terminator.
properties
(character()
)
Set of properties.
unit
(character()
)
Unit of steps.
new()
Creates a new instance of this R6 class.
Terminator$new(param_set = ParamSet$new(), properties = character())
param_set
(paradox::ParamSet) Set of control parameters for terminator.
properties
(character()
)
Set of properties.
format()
Helper for print outputs.
Terminator$format(with_params = FALSE)
with_params
(logical(1)
)
Add parameter values to format string.
print()
Printer.
Terminator$print(...)
...
(ignored).
status()
Returns how many progression steps are made (current_steps
) and the
amount steps needed for termination (max_steps
).
Terminator$status(archive)
archive
(Archive).
named integer(2)
.
remaining_time()
Returns remaining runtime in seconds. If the terminator is not
time-based, the reaming runtime is Inf
.
Terminator$remaining_time(archive)
archive
(Archive).
integer(1)
.
clone()
The objects of this class are cloneable with this method.
Terminator$clone(deep = FALSE)
deep
Whether to make a deep clone.
Other Terminator:
mlr_terminators_clock_time
,
mlr_terminators_combo
,
mlr_terminators_evals
,
mlr_terminators_none
,
mlr_terminators_perf_reached
,
mlr_terminators_run_time
,
mlr_terminators_stagnation_batch
,
mlr_terminators_stagnation
,
mlr_terminators