List of usage examples for org.apache.commons.math.optimization.direct MultiDirectional optimize
public RealPointValuePair optimize(final MultivariateRealFunction function, final GoalType goalType, final double[] startPoint) throws FunctionEvaluationException, OptimizationException, IllegalArgumentException
From source file:uk.ac.diamond.scisoft.analysis.optimize.ApacheMultiDirectional.java
@Override public void optimize(IDataset[] coords, IDataset data, final IFunction function) throws Exception { // Pull out the data which is required from the inputs final int numCoords = coords.length; final DoubleDataset[] newCoords = new DoubleDataset[numCoords]; for (int i = 0; i < numCoords; i++) { newCoords[i] = (DoubleDataset) DatasetUtils.convertToAbstractDataset(coords[i]) .cast(AbstractDataset.FLOAT64); }// w w w. j a v a2 s .c o m final DoubleDataset values = (DoubleDataset) DatasetUtils.convertToAbstractDataset(data) .cast(AbstractDataset.FLOAT64); // create an instance of the fitter MultiDirectional md = new MultiDirectional(); // provide the fitting function which wrappers all the normal fitting functionality MultivariateRealFunction f1 = new MultivariateRealFunction() { @Override public double value(double[] arg0) throws FunctionEvaluationException, IllegalArgumentException { function.setParameterValues(arg0); return function.residual(true, values, newCoords); } }; double[] start = function.getParameterValues(); // preform the optimisation RealPointValuePair result = md.optimize(f1, GoalType.MINIMIZE, start); // set the input functions parameters to be the result before finishing. function.setParameterValues(result.getPoint()); }