Objective {optimizeR} | R Documentation |
The Objective
object specifies the framework for an objective function
for numerical optimization.
An Objective
object.
objective_name
A character
, a label for the objective function.
fixed_arguments
A character
, the names of the fixed arguments (if any).
seconds
A numeric
, a time limit in seconds. Computations are interrupted
prematurely if seconds
is exceeded.
No time limit if seconds = Inf
(the default).
Note the limitations documented in setTimeLimit
.
hide_warnings
Either TRUE
to hide warnings when evaluating the objective function,
or FALSE
(default) if not.
verbose
Either TRUE
(default) to print status messages, or FALSE
to hide those.
npar
An integer
vector, defining the length of each target argument.
new()
Creates a new Objective
object.
Objective$new(objective, target, npar, ...)
objective
A function
to be optimized that
has at least one argument that receives a numeric
vector
and returns a single numeric
value.
target
A character
, the argument names of objective
that get
optimized. These arguments must receive a numeric
vector
.
npar
A integer
of the same length as target
, defining the length
of the respective numeric
vector
argument.
...
Optionally additional arguments to objective
that are fixed during
the optimization.
A new Objective
object.
set_argument()
Set a fixed function argument.
Objective$set_argument(..., overwrite = TRUE, verbose = self$verbose)
...
Optionally additional arguments to objective
that are fixed during
the optimization.
overwrite
Either TRUE
(default) to allow overwriting, or FALSE
if not.
verbose
Either TRUE
(default) to print status messages, or FALSE
to hide those.
Invisibly the Objective
object.
get_argument()
Get a fixed function argument.
Objective$get_argument(argument_name, verbose = self$verbose)
argument_name
A character
, a name of an argument for objective
.
verbose
Either TRUE
(default) to print status messages, or FALSE
to hide those.
The argument value.
remove_argument()
Remove a fixed function argument.
Objective$remove_argument(argument_name, verbose = self$verbose)
argument_name
A character
, a name of an argument for objective
.
verbose
Either TRUE
(default) to print status messages, or FALSE
to hide those.
Invisibly the Objective
object.
validate()
Validate an Objective
object.
Objective$validate(.at)
.at
A numeric
of length sum(self$npar)
, the values for the target
arguments written in a single vector.
Invisibly the Objective
object.
evaluate()
Evaluate the objective function.
Objective$evaluate(.at, .negate = FALSE, ...)
.at
A numeric
of length sum(self$npar)
, the values for the target
arguments written in a single vector.
.negate
Either TRUE
to negate the numeric
return value of
objective
, or FALSE
(default) else.
...
Optionally additional arguments to objective
that are fixed during
the optimization.
The objective value.
print()
Print details of the Objective
object.
Objective$print()
Invisibly the Objective
object.
clone()
The objects of this class are cloneable with this method.
Objective$clone(deep = FALSE)
deep
Whether to make a deep clone.
### define log-likelihood function of Gaussian mixture model
llk <- function(mu, sd, lambda, data){
sd <- exp(sd)
lambda <- plogis(lambda)
sum(log(lambda * dnorm(data, mu[1], sd[1]) + (1 - lambda) * dnorm(data, mu[2], sd[2])))
}
### the log-likelihood function is supposed to be optimized over the first
### three arguments, the 'data' argument is constant
objective <- Objective$new(
objective = llk, target = c("mu", "sd", "lambda"), npar = c(2, 2, 1),
data = faithful$eruptions
)
### evaluate the objective function at 1:5 (1:2 is passed to mu, 3:4 to sd,
### and 5 to lambda)
objective$evaluate(1:5)