MATH-874
Reduced number of overridden public "optimize" methods (replaced by protected "optimizeInternal"): whenever the code is ready for 4.0, only the base class's "optimize" method should define the public API (subclass specifics are handled in overridden "optimizeInternal" which must call the base class's version to handle the common setup). git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1401928 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8964c7aa09
commit
2796e77e2e
|
@ -162,7 +162,7 @@ public abstract class BaseAbstractMultivariateOptimizer<FUNC extends Multivariat
|
|||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
protected PointValuePair optimizeInternal(int maxEval, MultivariateFunction f, GoalType goalType,
|
||||
protected PointValuePair optimizeInternal(int maxEval, FUNC f, GoalType goalType,
|
||||
double[] startPoint) {
|
||||
return optimizeInternal(maxEval, f, goalType, new InitialGuess(startPoint));
|
||||
}
|
||||
|
@ -184,7 +184,7 @@ public abstract class BaseAbstractMultivariateOptimizer<FUNC extends Multivariat
|
|||
* evaluations is exceeded.
|
||||
*/
|
||||
protected PointValuePair optimizeInternal(int maxEval,
|
||||
MultivariateFunction f,
|
||||
FUNC f,
|
||||
GoalType goalType,
|
||||
OptimizationData... optData)
|
||||
throws TooManyEvaluationsException {
|
||||
|
|
|
@ -22,6 +22,8 @@ import org.apache.commons.math3.analysis.differentiation.GradientFunction;
|
|||
import org.apache.commons.math3.analysis.differentiation.MultivariateDifferentiableFunction;
|
||||
import org.apache.commons.math3.optimization.ConvergenceChecker;
|
||||
import org.apache.commons.math3.optimization.GoalType;
|
||||
import org.apache.commons.math3.optimization.OptimizationData;
|
||||
import org.apache.commons.math3.optimization.InitialGuess;
|
||||
import org.apache.commons.math3.optimization.MultivariateDifferentiableOptimizer;
|
||||
import org.apache.commons.math3.optimization.PointValuePair;
|
||||
import org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer;
|
||||
|
@ -35,9 +37,7 @@ import org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOpti
|
|||
* @since 3.1
|
||||
*/
|
||||
public abstract class AbstractDifferentiableOptimizer
|
||||
extends BaseAbstractMultivariateOptimizer<MultivariateDifferentiableFunction>
|
||||
implements MultivariateDifferentiableOptimizer {
|
||||
|
||||
extends BaseAbstractMultivariateOptimizer<MultivariateDifferentiableFunction> {
|
||||
/**
|
||||
* Objective function gradient.
|
||||
*/
|
||||
|
@ -60,17 +60,31 @@ public abstract class AbstractDifferentiableOptimizer
|
|||
return gradient.value(evaluationPoint);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public PointValuePair optimize(final int maxEval, final MultivariateDifferentiableFunction f,
|
||||
final GoalType goalType, final double[] startPoint) {
|
||||
|
||||
// store optimization problem characteristics
|
||||
gradient = new GradientFunction(f);
|
||||
|
||||
// perform optimization
|
||||
return super.optimize(maxEval, f, goalType, startPoint);
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @deprecated In 3.1. Please use
|
||||
* {@link #optimizeInternal(int,MultivariateDifferentiableFunction,GoalType,OptimizationData[])}
|
||||
* instead.
|
||||
*/
|
||||
@Override@Deprecated
|
||||
protected PointValuePair optimizeInternal(final int maxEval,
|
||||
final MultivariateDifferentiableFunction f,
|
||||
final GoalType goalType,
|
||||
final double[] startPoint) {
|
||||
return optimizeInternal(maxEval, f, goalType, new InitialGuess(startPoint));
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
protected PointValuePair optimizeInternal(final int maxEval,
|
||||
final MultivariateDifferentiableFunction f,
|
||||
final GoalType goalType,
|
||||
final OptimizationData... optData) {
|
||||
// Store optimization problem characteristics.
|
||||
gradient = new GradientFunction(f);
|
||||
|
||||
// Perform optimization.
|
||||
return super.optimizeInternal(maxEval, f, goalType, optData);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ package org.apache.commons.math3.optimization.general;
|
|||
|
||||
import org.apache.commons.math3.analysis.DifferentiableMultivariateFunction;
|
||||
import org.apache.commons.math3.analysis.MultivariateVectorFunction;
|
||||
import org.apache.commons.math3.analysis.differentiation.GradientFunction;
|
||||
import org.apache.commons.math3.analysis.FunctionUtils;
|
||||
import org.apache.commons.math3.analysis.differentiation.MultivariateDifferentiableFunction;
|
||||
import org.apache.commons.math3.optimization.DifferentiableMultivariateOptimizer;
|
||||
import org.apache.commons.math3.optimization.GoalType;
|
||||
|
@ -76,14 +76,14 @@ public abstract class AbstractScalarDifferentiableOptimizer
|
|||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public PointValuePair optimize(int maxEval,
|
||||
final DifferentiableMultivariateFunction f,
|
||||
final GoalType goalType,
|
||||
final double[] startPoint) {
|
||||
protected PointValuePair optimizeInternal(int maxEval,
|
||||
final DifferentiableMultivariateFunction f,
|
||||
final GoalType goalType,
|
||||
final double[] startPoint) {
|
||||
// Store optimization problem characteristics.
|
||||
gradient = f.gradient();
|
||||
|
||||
return optimizeInternal(maxEval, f, goalType, startPoint);
|
||||
return super.optimizeInternal(maxEval, f, goalType, startPoint);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,9 +107,9 @@ public abstract class AbstractScalarDifferentiableOptimizer
|
|||
final MultivariateDifferentiableFunction f,
|
||||
final GoalType goalType,
|
||||
final double[] startPoint) {
|
||||
// Store optimization problem characteristics.
|
||||
gradient = new GradientFunction(f);
|
||||
|
||||
return optimizeInternal(maxEval, f, goalType, startPoint);
|
||||
return optimizeInternal(maxEval,
|
||||
FunctionUtils.toDifferentiableMultivariateFunction(f),
|
||||
goalType,
|
||||
startPoint);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue