MO-CMA-ES (Mutli-Objective Covariance Matrix Adaptation Evolution Strategy)

This is the implementation of the Mutli-Objective Covariance Matrix Adaptation Evolution Strategy, as published in Voss2010. The multi-objective covariance matrix adaptation evolution strategy (MO-CMA-ES) is an evolutionary algorithm for continuous vector-valued optimization. It combines indicator-based selection based on the contributing hypervolume with the efficient strategy parameter adaptation of the elitist covariance matrix adaptation evolution strategy (CMA-ES).

Usage

e["Solver"]["Type"] = "Optimizer/MOCMAES"

Results

These are the results produced by this solver:

Best F(x)
  • Usage: e[“Results”][“Best F(x)”] = real number

  • Description: Optimal value of F(x) found so far.

Best Parameters
  • Usage: e[“Results”][“Best Parameters”] = List of real number

  • Description: Value for the x parameters that produced the best F(x).

Variable-Specific Settings

These are settings required by this module that are added to each of the experiment’s variables when this module is selected.

Lower Bound
  • Usage: e[“Variables”][index][“Lower Bound”] = real number

  • Description: [Hint] Lower bound for the variable’s value.

Upper Bound
  • Usage: e[“Variables”][index][“Upper Bound”] = real number

  • Description: [Hint] Upper bound for the variable’s value.

Initial Value
  • Usage: e[“Variables”][index][“Initial Value”] = real number

  • Description: [Hint] Initial value at or around which the algorithm shall start looking for an optimum.

Initial Mean
  • Usage: e[“Variables”][index][“Initial Mean”] = real number

  • Description: [Hint] Initial mean for the proposal distribution. This value must be defined between the variable’s Mininum and Maximum settings (by default, this value is given by the center of the variable domain).

Initial Standard Deviation
  • Usage: e[“Variables”][index][“Initial Standard Deviation”] = real number

  • Description: [Hint] Initial standard deviation of the proposal distribution for a variable (by default, this value is given by 30% of the variable domain width).

Minimum Standard Deviation Update
  • Usage: e[“Variables”][index][“Minimum Standard Deviation Update”] = real number

  • Description: [Hint] Lower bound for the standard deviation updates of the proposal distribution for a variable. Korali increases the scaling factor sigma if this value is undershot.

Values
  • Usage: e[“Variables”][index][“Values”] = List of real number

  • Description: [Hint] Locations to evaluate the Objective Function.

Configuration

These are settings required by this module.

Population Size
  • Usage: e[“Solver”][“Population Size”] = unsigned integer

  • Description: Specifies the number of samples to evaluate per generation (preferably $4+3*log(N)$, where $N$ is the number of variables).

Mu Value
  • Usage: e[“Solver”][“Mu Value”] = unsigned integer

  • Description: Number of best samples (offspring) advancing to the next generation (by default it is half the Sample Count).

Evolution Path Adaption Strength
  • Usage: e[“Solver”][“Evolution Path Adaption Strength”] = real number

  • Description: Controls the learning rate of the conjugate evolution path (must be in (0,1], by default this variable is internally calibrated, variable Cc in reference).

Covariance Learning Rate
  • Usage: e[“Solver”][“Covariance Learning Rate”] = real number

  • Description: Controls the learning rate of the covariance matrices (must be in (0,1], by default this variable is internally calibrated, variable Ccov in reference).

Target Success Rate
  • Usage: e[“Solver”][“Target Success Rate”] = real number

  • Description: Value that controls the updates of the covariance matrix and the evolution path (must be in (0,1], variable Psucc in reference).

Threshold Probability
  • Usage: e[“Solver”][“Threshold Probability”] = real number

  • Description: Threshold that defines update scheme for the covariance matrix and the evolution path (must be in (0,1], variable Pthresh in reference).

Success Learning Rate
  • Usage: e[“Solver”][“Success Learning Rate”] = real number

  • Description: Learning Rate of success rates (must be in (0,1], by default this variable is internally calibrated, variable Cp in reference).

Termination Criteria

These are the customizable criteria that indicates whether the solver should continue or finish execution. Korali will stop when at least one of these conditions are met. The criteria is expressed in C++ since it is compiled and evaluated as seen here in the engine.

Min Max Value Difference Threshold
  • Usage: e[“Solver”][“Min Max Value Difference Threshold”] = real number

  • Description: Specifies the min max fitness differential between two consecutive generations before stopping execution.

  • Criteria: _k->_currentGeneration > 1 && (std::abs(*std::max_element(_currentBestValueDifferences.begin(), _currentBestValueDifferences.end())) < _minValueDifferenceThreshold)

Min Variable Difference Threshold
  • Usage: e[“Solver”][“Min Variable Difference Threshold”] = real number

  • Description: Specifies the min L2 norm of the best samples between two consecutive generations before stopping execution.

  • Criteria: _k->_currentGeneration > 1 && (*std::max_element(_currentBestVariableDifferences.begin(), _currentBestVariableDifferences.end()) < _minVariableDifferenceThreshold)

Min Standard Deviation
  • Usage: e[“Solver”][“Min Standard Deviation”] = real number

  • Description: Specifies the minimal standard deviation.

  • Criteria: _k->_currentGeneration > 1 && (*std::max_element(_currentMinStandardDeviations.begin(), _currentMinStandardDeviations.end()) <= _minStandardDeviation)

Max Standard Deviation
  • Usage: e[“Solver”][“Max Standard Deviation”] = real number

  • Description: Specifies the maximal standard deviation.

  • Criteria: _k->_currentGeneration > 1 && (*std::min_element(_currentMaxStandardDeviations.begin(), _currentMaxStandardDeviations.end()) >= _maxStandardDeviation)

Max Value
  • Usage: e[“Solver”][“Max Value”] = real number

  • Description: Specifies the maximum target fitness to stop maximization.

  • Criteria: _k->_currentGeneration > 1 && (+_bestEverValue > _maxValue)

Min Value Difference Threshold
  • Usage: e[“Solver”][“Min Value Difference Threshold”] = real number

  • Description: Specifies the minimum fitness differential between two consecutive generations before stopping execution.

  • Criteria: _k->_currentGeneration > 1 && (fabs(_currentBestValue - _previousBestValue) < _minValueDifferenceThreshold)

Max Infeasible Resamplings
  • Usage: e[“Solver”][“Max Infeasible Resamplings”] = unsigned integer

  • Description: Maximum number of resamplings per candidate per generation if sample is outside of Lower and Upper Bound.

  • Criteria: (_maxInfeasibleResamplings > 0) && (_infeasibleSampleCount >= _maxInfeasibleResamplings)

Max Model Evaluations
  • Usage: e[“Solver”][“Max Model Evaluations”] = unsigned integer

  • Description: Specifies the maximum allowed evaluations of the computational model.

  • Criteria: _maxModelEvaluations <= _modelEvaluationCount

Max Generations
  • Usage: e[“Solver”][“Max Generations”] = unsigned integer

  • Description: Determines how many solver generations to run before stopping execution. Execution can be resumed at a later moment.

  • Criteria: _k->_currentGeneration > _maxGenerations

Default Configuration

These following configuration will be assigned by default. Any settings defined by the user will override the given settings specified in these defaults.

{
"Covariance Learning Rate": -1.0,
"Evolution Path Adaption Strength": -1.0,
"Model Evaluation Count": 0,
"Mu Value": 0,
"Multinormal Generator": {
    "Mean Vector": [
        0.0
    ],
    "Sigma": [
        1.0
    ],
    "Type": "Multivariate/Normal"
    },
"Population Size": 0,
"Success Learning Rate": 0.08,
"Target Success Rate": 0.175,
"Termination Criteria": {
    "Max Generations": 10000000000,
    "Max Infeasible Resamplings": 1000000,
    "Max Model Evaluations": 1000000000,
    "Max Standard Deviation": Infinity,
    "Max Value": Infinity,
    "Min Max Value Difference Threshold": -Infinity,
    "Min Standard Deviation": -Infinity,
    "Min Value Difference Threshold": -Infinity,
    "Min Variable Difference Threshold": -Infinity
    },
"Threshold Probability": 0.44,
"Uniform Generator": {
    "Maximum": 1.0,
    "Minimum": 0.0,
    "Type": "Univariate/Uniform"
    },
"Variable Count": 0
}

Variable Defaults

These following configuration will be assigned to each of the experiment variables by default. Any settings defined by the user will override the given settings specified in these defaults.

{
"Initial Mean": NaN,
"Initial Standard Deviation": NaN,
"Initial Value": NaN,
"Lower Bound": -Infinity,
"Minimum Standard Deviation Update": 0.0,
"Upper Bound": Infinity,
"Values": []
}