/** * Returns an implementation of {@link QuasiNewtonBFGS} with {@link LineSearchMore94} for the internal line search. * This is a specific implementation of {@link UnconstrainedMinimization} and allows full access to all * tuning parameters. * * @return UnconstrainedMinimization */ public static QuasiNewtonBFGS_to_UnconstrainedMinimization quasiNewtonBfgs(@Nullable ConfigQuasiNewton config ) { if( config == null ) config = new ConfigQuasiNewton(); LineSearch lineSearch; switch( config.lineSearch ) { case FLETCHER86: LineSearchFletcher86 fletcher86 = new LineSearchFletcher86(); fletcher86.setConvergence(config.line_ftol,config.line_gtol); lineSearch = fletcher86; break; case MORE94: LineSearchMore94 more94 = new LineSearchMore94(); more94.setConvergence(config.line_ftol,config.line_gtol,0.1); lineSearch = more94; break; default: throw new RuntimeException("Unknown line search. "+config.lineSearch); } QuasiNewtonBFGS qn = new QuasiNewtonBFGS(lineSearch); return new QuasiNewtonBFGS_to_UnconstrainedMinimization(qn); }
/** * Returns an implementation of {@link QuasiNewtonBFGS} with {@link LineSearchMore94} for the internal line search. * This is a specific implementation of {@link UnconstrainedMinimization} and allows full access to all * tuning parameters. * * @return UnconstrainedMinimization */ public static QuasiNewtonBFGS_to_UnconstrainedMinimization quasiNewtonBfgs(@Nullable ConfigQuasiNewton config ) { if( config == null ) config = new ConfigQuasiNewton(); LineSearch lineSearch; switch( config.lineSearch ) { case FLETCHER86: LineSearchFletcher86 fletcher86 = new LineSearchFletcher86(); fletcher86.setConvergence(config.line_ftol,config.line_gtol); lineSearch = fletcher86; break; case MORE94: LineSearchMore94 more94 = new LineSearchMore94(); more94.setConvergence(config.line_ftol,config.line_gtol,0.1); lineSearch = more94; break; default: throw new RuntimeException("Unknown line search. "+config.lineSearch); } QuasiNewtonBFGS qn = new QuasiNewtonBFGS(lineSearch); return new QuasiNewtonBFGS_to_UnconstrainedMinimization(qn); }
LineSearchFletcher86 alg = new LineSearchFletcher86(9,0.1,0.5); alg.setConvergence(0.1,0.9); alg.setFunction(new Individual_to_CoupledDerivative(f,d),0); alg = new LineSearchFletcher86(9,0.05,0.5); alg.setConvergence(1e-5,0.1); alg.setFunction(new Individual_to_CoupledDerivative(f,d),0);