Objective interface where the user can pass a custom R function that expects a list as input. If the return of the function is unnamed, it is named with the ids of the codomain.
Super class
bbotk::Objective
-> ObjectiveRFun
Methods
Method new()
Creates a new instance of this R6 class.
Usage
ObjectiveRFun$new(
fun,
domain,
codomain = NULL,
id = "function",
properties = character(),
constants = ps(),
check_values = TRUE
)
Arguments
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 theirid
, 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?
Method eval()
Evaluates input value(s) on the objective function. Calls the R function supplied by the user.
Examples
# define objective function
fun = function(xs) {
-(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 object
obfun = ObjectiveRFun$new(
fun = fun,
domain = domain,
codomain = codomain,
properties = "deterministic"
)