# performGradientStep: Perform multi-objective gradient descent step. In kerschke/mogsa: A Multi-Objective Optimization Algorithm Based on Multi-Objective Gradients

## Description

Computes the bi-objective gradient for the two objectives fn1 and fn2 in position ind. The bi-objective gradient is the combined vector of the two single gradients. Note that the step size depends on the length of the combined gradient vector and thus automatically decreases when approaching an efficient set.

## Usage

 1 2 3 performGradientStep(ind, fn1, fn2, gradient.list = list(g1 = NULL, g2 = NULL), scale.step = 0.5, prec.grad = 1e-06, prec.norm = 1e-06, prec.angle = 1e-04, lower, upper, check.data = TRUE)

## Arguments

 ind [numeric(d)] d-dimensional individual. fn1 [function] The first objective used for computing the multi-objective gradient. fn2 [function] The second objective used for computing the multi-objective gradient. gradient.list [list(p)] A list with the single-objective gradients of the p objectives. Per default each of the p elements of this list is NULL, implying that the respective gradients will be approximated using estimateGradientBothDirections. scale.step [numeric(1L)] Scaling factor for the step size in the direction of the multi-objective gradient. The default is 0.5. prec.grad [numeric(1L)] Precision value (= step size) used for approximating the gradient. The default is 1e-6. prec.norm [numeric(1L)] Precision threshold when normalizing a vector. That is, every element of the vector, whose absolute value is below this threshold, will be replaced by 0. The default is 1e-6. prec.angle [numeric(1L)] Precision threshold used for comparing whether the angle (in degree) between two vectors is zero. The default is 1e-4. lower [numeric(d)] Vector of lower bounds. upper [numeric(d)] Vector of upper bounds. check.data [logical(1L)] Should sanity checks be performed? The default is TRUE. Note that the checks should only be turned off (e.g., for a slight speed up), if you are sure that you provide the input data in the correct format.

## Value

[numeric(d) | NULL]
Returns NULL if ind is a local efficient point. Otherwise a numeric vector of length d will be returned, which shows the result of a downhill step in the direction of the multi-objective gradient.

## Note

ATTENTION: Only turn off the sanity checks (check.data = FALSE), if you can ensure that all input parameters are provided in the correct format.

## Examples

 1 2 3 4 5 6 7 8 9 # Define two single-objective test problems: fn1 = function(x) sum((x - c(0.2, 1))^2) fn2 = function(x) sum(x) # Perform a gradient step: performGradientStep(c(0.3, 0.5), fn1, fn2) # Here, we have found the optimum of fn1: performGradientStep(c(0.2, 1), fn1, fn2)

kerschke/mogsa documentation built on Oct. 27, 2018, 12:13 a.m.