Step size adaptation based on the success of the new population compared to the old. More...

#include <shark/Algorithms/DirectSearch/Operators/TwoPointStepSizeAdaptation.h>

## Public Member Functions

double stepSize () const

void setAlphaStep (double alphaStep)

void setLearningRate (double learningRate)

void init (double initialStepSize)
Initializes a new trial by setting the initial step size and resetting the internal values. More...

void setStepSize (double stepSize)

void update (SingleObjectiveFunction const &f, RealVector const &point, RealVector const &direction)
updates the step size using the newly sampled population More...

## Detailed Description

Step size adaptation based on the success of the new population compared to the old.

This is the step size adaptation algorithm as proposed in Ilya Loshchilov, "A Computationally Efficient Limited Memory CMA-ES for Large Scale Optimization"

It ranks the old and new population together and checks whether the mean rank of the new population is lower than the old one in this combined population. If this is true, the step size is increased in an exponential fashion. More formally, let $$r_t(i)$$ be the rank of the i-th individual in the current population in the combined ranking and $$r_{t-1}(i)$$ the rank of the i-th previous individual. Then we have

$z_t \leftarrow \frac 1 {\lamba^2} \sum_i^{\lambda} r_{t-1}(i) - r_t(i) - z*$

where $$z*$$ is a target success value, which defaults to 0.25 this statistic is stabilised using an exponential average:

$s_t \leftarrow (1-c)*s_{t-1} + c*z_t$

where the learning rate c defaults to 0.3 finally we adapt the step size sigma by

$\sigma_t = \sigma_{t-1} exp(s_t/d)$

where the damping factor d defaults to 1

Definition at line 53 of file TwoPointStepSizeAdaptation.h.

## Constructor & Destructor Documentation

inline

Definition at line 55 of file TwoPointStepSizeAdaptation.h.

## ◆ init()

 void shark::TwoPointStepSizeAdaptation::init ( double initialStepSize )
inline

Initializes a new trial by setting the initial step size and resetting the internal values.

Definition at line 70 of file TwoPointStepSizeAdaptation.h.

## ◆ setAlphaStep()

 void shark::TwoPointStepSizeAdaptation::setAlphaStep ( double alphaStep )
inline

Definition at line 61 of file TwoPointStepSizeAdaptation.h.

## ◆ setLearningRate()

 void shark::TwoPointStepSizeAdaptation::setLearningRate ( double learningRate )
inline

Definition at line 65 of file TwoPointStepSizeAdaptation.h.

## ◆ setStepSize()

 void shark::TwoPointStepSizeAdaptation::setStepSize ( double stepSize )
inline

Definition at line 75 of file TwoPointStepSizeAdaptation.h.

References stepSize().

## ◆ stepSize()

 double shark::TwoPointStepSizeAdaptation::stepSize ( ) const
inline

Definition at line 57 of file TwoPointStepSizeAdaptation.h.

Referenced by setStepSize().

## ◆ update()

 void shark::TwoPointStepSizeAdaptation::update ( SingleObjectiveFunction const & f, RealVector const & point, RealVector const & direction )
inline

updates the step size using the newly sampled population

The offspring is assumed to be ordered in ascending order by their penalizedFitness (this is the same as ordering by the unpenalized fitness in an unconstrained setting)

Definition at line 83 of file TwoPointStepSizeAdaptation.h.

The documentation for this class was generated from the following file: