/* See {ParseMinimizerParams.h} */ #include #include #include #include #include #include #include #include #include #include #include Minimizer.T PROCEDURE Parse(argparser_t *pp)/* Raises {ParseParams.Error} */ { if ((argparser_keyword_present(pp, "-minimizer"))){ if ((pp.testNext("Grad"))) { VAR i: Integrator.T; { if ((pp.testNext("RKF4"))) { i = NEW(RKF4Integrator.T) } else if ((pp.testNext("Euler"))){ i = NEW(EulerIntegrator.T) } else { i = NEW(RKF4Integrator.T) } return NEW(GradMinimizer.T).setIntegrator(i); } } else if ((pp.testNext("Coord"))){ VAR i: UniMin.T; n: uint; { if ((pp.testNext("Brent"))) { i = NEW(BrentUniMin.T); } else if ((pp.testNext("JS"))){ i = NEW(JSUniMin.T) } else { i = NEW(BrentUniMin.T) } if ((pp.testNext("budget"))) { n = argparser_get_next_int(pp, 5, 100) } else { n = 7 } return NEW(CoordMinimizer.T).setUniMin(i).setBudget(n); } /* } else if ((pp.testNext("Waltz"))){ double *l; { if ((pp.testNext("gamma"))) { l = pp.getNextLongReal(0.0, 100.0) } else { l = 1.0; } return NEW(WaltzMinimizer.T).setGamma(l); } } else if ((pp.testNext("Down"))){ double *a,b; { if ((pp.testNext("alpha"))) { a = pp.getNextLongReal(1.00001, 99.99999) } else { a = 3.06956450765297882; } if ((pp.testNext("beta"))) { b = pp.getNextLongReal(0.00001, 0.99999) } else { b = 0.5; } return NEW(DownMinimizer.T).setAlphaBeta(a,b); } */ } else { argparser_error(pp, "Unknown optimization method: " & argparser_get_next(pp)); assert(FALSE); } } else { return NULL } } /* END Parse */ { } ParseMinimizerParams.