Skip to contents

The Objective object specifies the framework for an objective function for numerical optimization.

Value

An Objective object.

Active bindings

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.

Methods


Method new()

Creates a new Objective object.

Usage

Objective$new(objective, target, npar, ...)

Arguments

objective

A function to be optimized that

  1. has at least one argument that receives a numeric vector

  2. 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.

Returns

A new Objective object.


Method set_argument()

Set a fixed function argument.

Usage

Objective$set_argument(..., overwrite = TRUE, verbose = self$verbose)

Arguments

...

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.

Returns

Invisibly the Objective object.


Method get_argument()

Get a fixed function argument.

Usage

Objective$get_argument(argument_name, verbose = self$verbose)

Arguments

argument_name

A character, a name of an argument for objective.

verbose

Either TRUE (default) to print status messages, or FALSE to hide those.

Returns

The argument value.


Method remove_argument()

Remove a fixed function argument.

Usage

Objective$remove_argument(argument_name, verbose = self$verbose)

Arguments

argument_name

A character, a name of an argument for objective.

verbose

Either TRUE (default) to print status messages, or FALSE to hide those.

Returns

Invisibly the Objective object.


Method validate()

Validate an Objective object.

Usage

Objective$validate(.at)

Arguments

.at

A numeric of length sum(self$npar), the values for the target arguments written in a single vector.

Returns

Invisibly the Objective object.


Method evaluate()

Evaluate the objective function.

Usage

Objective$evaluate(.at, .negate = FALSE, ...)

Arguments

.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.

Returns

The objective value.


Method print()

Print details of the Objective object.

Usage

Objective$print()

Returns

Invisibly the Objective object.


Method clone()

The objects of this class are cloneable with this method.

Usage

Objective$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

### 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)
#> [1] -1069.623