@Override public UnconstrainedMinimization createAlgorithm() { return FactoryOptimization.quasiNewtonBfgs(null); } }
@Override protected UnconstrainedMinimization createSearch() { return FactoryOptimization.quasiNewtonBfgs(null); }
public static void main(String[] args) { UnconstrainedMinimization optimizer = FactoryOptimization.quasiNewtonBfgs(null); // Send to standard out progress information optimizer.setVerbose(System.out,0); // Provide an analytical gradient to the Rosenbrock function. optimizer.setFunction(new Rosenbrock(),new Gradient(),0); // [-1.2, 1] is the recommended starting point for testing optimizer.initialize(new double[]{-1.2,1},1e-12,1e-12); // iterate 500 times or until it converges. // Manually iteration is possible too if more control over is required UtilOptimize.process(optimizer,500); double found[] = optimizer.getParameters(); // see how accurately it found the solution System.out.println("Final Error = "+optimizer.getFunctionValue()); // Compare the actual parameters to the found parameters System.out.printf("x[0]: expected=1.00 found=%5.2f\n",found[0]); System.out.printf("x[1]: expected=1.00 found=%5.2f\n",found[1]); }