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

java.lang.Object
  extended by org.apache.commons.math3.optim.nonlinear.scalar.noderiv.AbstractSimplex
      extended by org.apache.commons.math3.optim.nonlinear.scalar.noderiv.MultiDirectionalSimplex
All Implemented Interfaces:
OptimizationData

public class MultiDirectionalSimplex
extends AbstractSimplex

This class implements the multi-directional direct search method.

Since:
3.0
Version:
$Id: MultiDirectionalSimplex.java 1364392 2012-07-22 18:27:12Z tn $

Field Summary
private static double DEFAULT_GAMMA
          Default value for gamma: 0.5.
private static double DEFAULT_KHI
          Default value for khi: 2.0.
private  double gamma
          Contraction coefficient.
private  double khi
          Expansion coefficient.
 
Constructor Summary
MultiDirectionalSimplex(double[] steps)
          Build a multi-directional simplex with default coefficients.
MultiDirectionalSimplex(double[][] referenceSimplex)
          Build a multi-directional simplex with default coefficients.
MultiDirectionalSimplex(double[][] referenceSimplex, double khi, double gamma)
          Build a multi-directional simplex with specified coefficients.
MultiDirectionalSimplex(double[] steps, double khi, double gamma)
          Build a multi-directional simplex with specified coefficients.
MultiDirectionalSimplex(int n)
          Build a multi-directional simplex with default coefficients.
MultiDirectionalSimplex(int n, double sideLength)
          Build a multi-directional simplex with default coefficients.
MultiDirectionalSimplex(int n, double khi, double gamma)
          Build a multi-directional simplex with specified coefficients.
MultiDirectionalSimplex(int n, double sideLength, double khi, double gamma)
          Build a multi-directional simplex with specified coefficients.
 
Method Summary
private  PointValuePair evaluateNewSimplex(MultivariateFunction evaluationFunction, PointValuePair[] original, double coeff, java.util.Comparator<PointValuePair> comparator)
          Compute and evaluate a new simplex.
 void iterate(MultivariateFunction evaluationFunction, java.util.Comparator<PointValuePair> comparator)
          Compute the next simplex of the algorithm.
 
Methods inherited from class org.apache.commons.math3.optim.nonlinear.scalar.noderiv.AbstractSimplex
build, evaluate, getDimension, getPoint, getPoints, getSize, replaceWorstPoint, setPoint, setPoints
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_KHI

private static final double DEFAULT_KHI
Default value for khi: 2.0.

See Also:
Constant Field Values

DEFAULT_GAMMA

private static final double DEFAULT_GAMMA
Default value for gamma: 0.5.

See Also:
Constant Field Values

khi

private final double khi
Expansion coefficient.


gamma

private final double gamma
Contraction coefficient.

Constructor Detail

MultiDirectionalSimplex

public MultiDirectionalSimplex(int n)
Build a multi-directional simplex with default coefficients. The default values are 2.0 for khi and 0.5 for gamma.

Parameters:
n - Dimension of the simplex.

MultiDirectionalSimplex

public MultiDirectionalSimplex(int n,
                               double sideLength)
Build a multi-directional simplex with default coefficients. The default values are 2.0 for khi and 0.5 for gamma.

Parameters:
n - Dimension of the simplex.
sideLength - Length of the sides of the default (hypercube) simplex. See AbstractSimplex.AbstractSimplex(int,double).

MultiDirectionalSimplex

public MultiDirectionalSimplex(int n,
                               double khi,
                               double gamma)
Build a multi-directional simplex with specified coefficients.

Parameters:
n - Dimension of the simplex. See AbstractSimplex.AbstractSimplex(int,double).
khi - Expansion coefficient.
gamma - Contraction coefficient.

MultiDirectionalSimplex

public MultiDirectionalSimplex(int n,
                               double sideLength,
                               double khi,
                               double gamma)
Build a multi-directional simplex with specified coefficients.

Parameters:
n - Dimension of the simplex. See AbstractSimplex.AbstractSimplex(int,double).
sideLength - Length of the sides of the default (hypercube) simplex. See AbstractSimplex.AbstractSimplex(int,double).
khi - Expansion coefficient.
gamma - Contraction coefficient.

MultiDirectionalSimplex

public MultiDirectionalSimplex(double[] steps)
Build a multi-directional simplex with default coefficients. The default values are 2.0 for khi and 0.5 for gamma.

Parameters:
steps - Steps along the canonical axes representing box edges. They may be negative but not zero. See

MultiDirectionalSimplex

public MultiDirectionalSimplex(double[] steps,
                               double khi,
                               double gamma)
Build a multi-directional simplex with specified coefficients.

Parameters:
steps - Steps along the canonical axes representing box edges. They may be negative but not zero. See AbstractSimplex.AbstractSimplex(double[]).
khi - Expansion coefficient.
gamma - Contraction coefficient.

MultiDirectionalSimplex

public MultiDirectionalSimplex(double[][] referenceSimplex)
Build a multi-directional simplex with default coefficients. The default values are 2.0 for khi and 0.5 for gamma.

Parameters:
referenceSimplex - Reference simplex. See AbstractSimplex.AbstractSimplex(double[][]).

MultiDirectionalSimplex

public MultiDirectionalSimplex(double[][] referenceSimplex,
                               double khi,
                               double gamma)
Build a multi-directional simplex with specified coefficients.

Parameters:
referenceSimplex - Reference simplex. See AbstractSimplex.AbstractSimplex(double[][]).
khi - Expansion coefficient.
gamma - Contraction coefficient.
Throws:
NotStrictlyPositiveException - if the reference simplex does not contain at least one point.
DimensionMismatchException - if there is a dimension mismatch in the reference simplex.
Method Detail

iterate

public void iterate(MultivariateFunction evaluationFunction,
                    java.util.Comparator<PointValuePair> comparator)
Compute the next simplex of the algorithm.

Specified by:
iterate in class AbstractSimplex
Parameters:
evaluationFunction - Evaluation function.
comparator - Comparator to use to sort simplex vertices from best to worst.

evaluateNewSimplex

private PointValuePair evaluateNewSimplex(MultivariateFunction evaluationFunction,
                                          PointValuePair[] original,
                                          double coeff,
                                          java.util.Comparator<PointValuePair> comparator)
Compute and evaluate a new simplex.

Parameters:
evaluationFunction - Evaluation function.
original - Original simplex (to be preserved).
coeff - Linear coefficient.
comparator - Comparator to use to sort simplex vertices from best to poorest.
Returns:
the best point in the transformed simplex.
Throws:
TooManyEvaluationsException - if the maximal number of evaluations is exceeded.


Copyright (c) 2003-2013 Apache Software Foundation