// Very small absolute tolerance to rely solely on the relative
// tolerance as a stopping criterion
final PowellOptimizer optim = new PowellOptimizer(relTol, 1e-100);
final PointValuePair funcResult = optim.optimize(new MaxEval(maxEval),
new ObjectiveFunction(func),
GoalType.MINIMIZE,
new InitialGuess(init));
final double funcValue = func.value(funcResult.getPoint());
final int funcEvaluations = optim.getEvaluations();
final double scale = 1e10;
final MultivariateFunction funcScaled = new MultivariateFunction() {
public double value(double[] x) {
return scale * func.value(x);
}
};
final PointValuePair funcScaledResult = optim.optimize(new MaxEval(maxEval),
new ObjectiveFunction(funcScaled),
GoalType.MINIMIZE,
new InitialGuess(init));
final double funcScaledValue = funcScaled.value(funcScaledResult.getPoint());
final int funcScaledEvaluations = optim.getEvaluations();