Objective interface with custom R function
Objective interface where the user can pass a custom R function that expects a list as input.
bbotk::Objective -> ObjectiveRFun
fun(function)
Objective function.
new()
Creates a new instance of this R6 class.
ObjectiveRFun$new( fun, domain, codomain = NULL, id = "function", properties = character(), constants = ParamSet$new(), check_values = TRUE )
fun(function)
R function that encodes objective and expects a list with the input for a single point
(e.g. list(x1 = 1, x2 = 2)) and returns the result either as a numeric vector or a
list (e.g. list(y = 3)).
domain(paradox::ParamSet)
Specifies domain of function.
The paradox::ParamSet should describe all possible input parameters of the objective function.
This includes their id, their types and the possible range.
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.
id(character(1)).
properties(character()).
constants(paradox::ParamSet)
Changeable constants or parameters that are not subject to tuning can be stored and accessed here.
check_values(logical(1))
Should points before the evaluation and the results be checked for
validity?
eval()
Evaluates input value(s) on the objective function. Calls the R function supplied by the user.
ObjectiveRFun$eval(xs)
xsInput values.
clone()
The objects of this class are cloneable with this method.
ObjectiveRFun$clone(deep = FALSE)
deepWhether to make a deep clone.
library(paradox)
# Define objective function
fun = function(xs) {
- (xs[[1]] - 2)^2 - (xs[[2]] + 3)^2 + 10
}
# Set domain
domain = ParamSet$new(list(
ParamDbl$new("x1", -10, 10),
ParamDbl$new("x2", -5, 5)
))
# Set codomain
codomain = ParamSet$new(list(
ParamDbl$new("y", tags = "maximize")
))
# Create Objective object
obfun = ObjectiveRFun$new(
fun = fun,
domain = domain,
codomain = codomain,
properties = "deterministic"
)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.