directional_proposal: Derivative Point Proposal (EXPERIMENTAL)

Description Usage Arguments Details Value

View source: R/derivative_functions.R

Description

Proposes new points based on old ones using derivative emulation.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
directional_proposal(
  ems,
  x,
  targets,
  accept = 2,
  hcutoff = 1e-09,
  iteration.measure = "exp",
  iteration.steps = 100,
  use.hessian = FALSE
)

Arguments

ems

The list of Emulator objects

x

The currently proposed point

targets

The list of emulator targets

accept

The implausibility value at which the proposal can increase the implausibility

hcutoff

A power of 10: the smallest allowed step-size, h

iteration.measure

Which measure to use for point suitability: expectation or implausibilty?

iteration.steps

How many iterations to perform before returning the point.

use.hessian

Should the second erivatives be used to determine step size? Default = FALSE

Details

Given a point (preferably close to the implausibility boundary) x, we can calculate the emulated gradient at the point for each emulator. If the value of E[f(x)] is larger than the desired value, then this emulator wants the point to travel in the negative gradient direction, and conversely for smaller E[f(x)]. The combination of this information for each emulator defines a preferred set of directions of travel from this point.

We can try to find a shared direction which improves all emulator evaluations; if some outputs are already well inside the implausibility cutoff (i.e. if their implausibility) is less than accept, then we can allow these targets to get worse to make the others better.

Provided a shared direction v has been identified, we then move in this direction as follows. The new point is defined as x + h*v, for some choice of h. To determine h, we initialise h = 0.1, propose a new point, and check the new measure: the measures are either implausibility or (default) the difference between the target value and the emulator expectation, normalised by the target value. If the new measure is lower than the original one, we step along the direction further. If it is not, we reduce h and try again. This iteration terminates either when the new proposed point starts to increase the implausibility, if the value of h is particularly small (as determined by hcutoff), or if we have taken more than iteration.steps steps in the proposal.

Value

A new proposal point, or the original point if a suitable new point could not be found.


Tandethsquire/emulatorr documentation built on April 12, 2021, 1:08 a.m.