The ArchiveAsync stores all evaluated points and performance scores in a rush::Rush data base.
as.data.table(archive)
ArchiveAsync -> data.table::data.table()
Returns a tabular view of all performed function calls of the Objective.
The x_domain column is unnested to separate columns.
Archive -> ArchiveAsync
rush(Rush)
Rush controller for parallel optimization.
data(data.table::data.table)
Data table with all finished points.
queued_data(data.table::data.table)
Data table with all queued points.
running_data(data.table::data.table)
Data table with all running points.
finished_data(data.table::data.table)
Data table with all finished points.
failed_data(data.table::data.table)
Data table with all failed points.
n_queued(integer(1))
Number of queued points.
n_running(integer(1))
Number of running points.
n_finished(integer(1))
Number of finished points.
n_failed(integer(1))
Number of failed points.
n_evals(integer(1))
Number of evaluations stored in the archive.
Inherited methods
ArchiveAsync$new()Creates a new instance of this R6 class.
ArchiveAsync$new(search_space, codomain, check_values = FALSE, rush)search_space(paradox::ParamSet)
Specifies the search space for the Optimizer. The paradox::ParamSet
describes either a subset of the domain of the Objective or it describes
a set of parameters together with a trafo function that transforms values
from the search space to values of the domain. Depending on the context, this
value defaults to the domain of the objective.
codomain(paradox::ParamSet)
Specifies codomain of function.
Most importantly the tags of each output "Parameter" define whether it should
be minimized or maximized. The default is to minimize each component.
check_values(logical(1))
Should points before the evaluation and the results be checked for validity?
rush(Rush)
If a rush instance is supplied, the tuning runs without batches.
ArchiveAsync$push_points()Push queued points to the archive.
ArchiveAsync$push_points(xss, xss_extra = NULL)ArchiveAsync$push_point()Push a single queued point to the archive.
ArchiveAsync$push_point(xs, xs_extra = NULL)ArchiveAsync$push_running_points()Push running points to the archive.
ArchiveAsync$push_running_points(xss, xss_extra = NULL)ArchiveAsync$push_running_point()Push running point to the archive.
ArchiveAsync$push_running_point(xs, xs_extra = NULL)ArchiveAsync$push_finished_points()Push finished points to the archive.
ArchiveAsync$push_finished_points(xss, yss, xss_extra = NULL, yss_extra = NULL)ArchiveAsync$push_finished_point()Push a single finished point to the archive.
ArchiveAsync$push_finished_point(xs, ys, xs_extra = NULL, ys_extra = NULL)ArchiveAsync$push_failed_points()Push failed points to the archive.
ArchiveAsync$push_failed_points(xss, xss_extra = NULL, conditions = NULL)ArchiveAsync$push_failed_point()Push a single failed point to the archive.
ArchiveAsync$push_failed_point(xs, xs_extra = NULL, condition = NULL)xs(named list())
Named list of point values.
xs_extra(named list() | NULL)
Named list of additional information.
condition(any | NULL)
Condition of the failed point.
If NULL, a generic error message is used.
ArchiveAsync$pop_point()Pop a point from the queue.
ArchiveAsync$pop_point()ArchiveAsync$finish_points()Save the results of multiple running points and move them to the finished points.
ArchiveAsync$finish_points(keys, yss, x_domains, yss_extra = NULL)keys(character())
Keys of the points.
yss(list of named list())
List of named lists of results.
x_domains(list())
List of named lists of transformed point values.
yss_extra(list of named list() | NULL)
List of named lists of additional information.
ArchiveAsync$finish_point()Save the results of a running point and move it to the finished points.
ArchiveAsync$finish_point(key, ys, x_domain, ys_extra = NULL)ArchiveAsync$fail_points()Move multiple running points to the failed points.
ArchiveAsync$fail_points(keys, conditions = NULL)keys(character())
Keys of the points.
conditions(list() | NULL)
Conditions of the failed points.
ArchiveAsync$fail_point()Move a running point to the failed points.
ArchiveAsync$fail_point(key, condition = NULL)key(character(1))
Key of the point.
condition(any | NULL)
Condition of the failed point.
ArchiveAsync$push_result()Deprecated.
Use $finish_point() instead.
ArchiveAsync$push_result(key, ys, x_domain, extra = NULL)key(character())
Key of the point.
ys(list())
Named list of results.
x_domain(list())
Named list of transformed point values.
extra(list())
Named list of additional information.
ArchiveAsync$data_with_state()Fetch points with a specific state.
ArchiveAsync$data_with_state(
fields = c("worker_id", "xs", "ys", "xs_extra", "ys_extra", "condition"),
states = c("queued", "running", "finished", "failed")
)fields(character())
Fields to fetch.
Defaults to c("worker_id", "xs", "ys", "xs_extra", "ys_extra", "condition").
states(character())
States of the tasks to be fetched.
Defaults to c("queued", "running", "finished", "failed").
ArchiveAsync$best()Returns the best scoring evaluation(s). For single-crit optimization, the solution that minimizes / maximizes the objective function. For multi-crit optimization, the Pareto set / front.
ArchiveAsync$best(n_select = 1, ties_method = "first")n_select(integer(1L))
Amount of points to select.
Ignored for multi-crit optimization.
ties_method(character(1L))
Method to break ties when multiple points have the same score.
Either "first" (default) or "random".
Ignored for multi-crit optimization.
If n_select > 1L, the tie method is ignored and the first point is returned.
ArchiveAsync$nds_selection()Calculate best points w.r.t. non dominated sorting with hypervolume contribution.
ArchiveAsync$nds_selection(n_select = 1, ref_point = NULL)n_select(integer(1L))
Amount of points to select.
ref_point(numeric())
Reference point for hypervolume.
ArchiveAsync$clear()Clear all evaluation results from archive.
ArchiveAsync$clear()ArchiveAsync$clone()The objects of this class are cloneable with this method.
ArchiveAsync$clone(deep = FALSE)deepWhether to make a deep clone.
if (mlr3misc::require_namespaces(c("rush", "redux", "mirai"), quietly = TRUE) &&
redux::redis_available()) {
fun = function(xs) {
list(y = - (xs[[1]] - 2)^2 - (xs[[2]] + 3)^2 + 10)
}
# set domain
domain = ps(
x1 = p_dbl(-10, 10),
x2 = p_dbl(-5, 5)
)
# set codomain
codomain = ps(
y = p_dbl(tags = "maximize")
)
# create objective
objective = ObjectiveRFun$new(
fun = fun,
domain = domain,
codomain = codomain,
properties = "deterministic"
)
# start workers
rush::rush_plan(worker_type = "mirai")
mirai::daemons(1)
# initialize instance
instance = oi_async(
objective = objective,
terminator = trm("evals", n_evals = 20)
)
# load optimizer
optimizer = opt("async_random_search")
# trigger optimization
optimizer$optimize(instance)
# all evaluated configuration
instance$archive
# best performing configuration
instance$archive$best()
# covert to data.table
as.data.table(instance$archive)
# reset the rush data base
instance$rush$reset()
}
Run the code above in your browser using DataLab