org.apache.commons.math3.optim.nonlinear.scalar.noderiv

## Class CMAESOptimizer.FitnessFunction

- java.lang.Object
- - org.apache.commons.math3.optim.nonlinear.scalar.noderiv.CMAESOptimizer.FitnessFunction

Enclosing class:
  CMAESOptimizer

    private class CMAESOptimizer.FitnessFunction
    extends java.lang.Object

Normalizes fitness values to the range [0,1]. Adds a penalty to the fitness value if out of range. The penalty is adjusted by calling setValueRange().

### Field Summary

Fields
`private boolean` `isRepairMode` Flag indicating whether the objective variables are forced into their bounds if defined
`private double` `valueRange` Determines the penalty for boundary violations

### Constructor Summary

Constructors
Constructor and Description
`CMAESOptimizer.FitnessFunction()` Simple constructor.

### Method Summary

Methods
`boolean` `isFeasible(double[] x)`
`private double` `penalty(double[] x, double[] repaired)`
`private double[]` `repair(double[] x)`
`void` `setValueRange(double valueRange)`
`double` `value(double[] point)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### valueRange

    private double valueRange

Determines the penalty for boundary violations

#### isRepairMode

    private final boolean isRepairMode

Flag indicating whether the objective variables are forced into their bounds if defined

### Constructor Detail

#### CMAESOptimizer.FitnessFunction

    public CMAESOptimizer.FitnessFunction()

Simple constructor.

### Method Detail

#### value

    public double value(double[] point)

Parameters:
  `point` - Normalized objective variables.
Returns:
  the objective value + penalty for violated bounds.

#### isFeasible

    public boolean isFeasible(double[] x)

Parameters:
  `x` - Normalized objective variables.
Returns:
  `true` if in bounds.

#### setValueRange

    public void setValueRange(double valueRange)

Parameters:
  `valueRange` - Adjusts the penalty computation.

#### repair

    private double[] repair(double[] x)

Parameters:
  `x` - Normalized objective variables.
Returns:
  the repaired (i.e. all in bounds) objective variables.

#### penalty

    private double penalty(double[] x,
                 double[] repaired)

Parameters:
  `x` - Normalized objective variables.
  `repaired` - Repaired objective variables.
Returns:
  Penalty value according to the violation of the bounds.