string optimizationMethodTypeToString(OptimizationMethodType type) { switch (type) { case OptimizationMethodType.simplex: return("Simplex"); case OptimizationMethodType.levenbergMarquardt: return("Levenberg Marquardt"); case OptimizationMethodType.levenbergMarquardt2: return("Levenberg Marquardt (cost function's jacbobian)"); case OptimizationMethodType.conjugateGradient: return("Conjugate Gradient"); case OptimizationMethodType.steepestDescent: return("Steepest Descent"); case OptimizationMethodType.bfgs: return("BFGS"); case OptimizationMethodType.conjugateGradient_goldstein: return("Conjugate Gradient (Goldstein line search)"); case OptimizationMethodType.steepestDescent_goldstein: return("Steepest Descent (Goldstein line search)"); case OptimizationMethodType.bfgs_goldstein: return("BFGS (Goldstein line search)"); default: throw new ApplicationException("unknown OptimizationMethod type"); } }
OptimizationMethod makeOptimizationMethod(OptimizationMethodType optimizationMethodType, double simplexLambda, double levenbergMarquardtEpsfcn, double levenbergMarquardtXtol, double levenbergMarquardtGtol) { switch (optimizationMethodType) { case OptimizationMethodType.simplex: return(new Simplex(simplexLambda)); case OptimizationMethodType.levenbergMarquardt: return(new LevenbergMarquardt(levenbergMarquardtEpsfcn, levenbergMarquardtXtol, levenbergMarquardtGtol)); case OptimizationMethodType.levenbergMarquardt2: return(new LevenbergMarquardt(levenbergMarquardtEpsfcn, levenbergMarquardtXtol, levenbergMarquardtGtol, true)); case OptimizationMethodType.conjugateGradient: return(new ConjugateGradient()); case OptimizationMethodType.steepestDescent: return(new SteepestDescent()); default: throw new ApplicationException("unknown OptimizationMethod type"); } }
string optimizationMethodTypeToString(OptimizationMethodType type) { switch (type) { case OptimizationMethodType.simplex: return("Simplex"); case OptimizationMethodType.levenbergMarquardt: return("Levenberg Marquardt"); case OptimizationMethodType.conjugateGradient: return("Conjugate Gradient"); case OptimizationMethodType.steepestDescent: return("Steepest Descent"); default: throw new ApplicationException("unknown OptimizationMethod type"); } }
string optimizationMethodTypeToString(OptimizationMethodType type) { switch (type) { case OptimizationMethodType.simplex: return "Simplex"; case OptimizationMethodType.levenbergMarquardt: return "Levenberg Marquardt"; case OptimizationMethodType.conjugateGradient: return "Conjugate Gradient"; case OptimizationMethodType.steepestDescent: return "Steepest Descent"; default: throw new ApplicationException("unknown OptimizationMethod type"); } }
List<NamedOptimizationMethod> makeOptimizationMethods(OptimizationMethodType[] optimizationMethodTypes, int optimizationMethodNb, double simplexLambda, double levenbergMarquardtEpsfcn, double levenbergMarquardtXtol, double levenbergMarquardtGtol) { List<NamedOptimizationMethod> results = new List<NamedOptimizationMethod>(optimizationMethodNb); for (int i = 0; i < optimizationMethodNb; ++i) { NamedOptimizationMethod namedOptimizationMethod; namedOptimizationMethod.optimizationMethod = makeOptimizationMethod(optimizationMethodTypes[i], simplexLambda, levenbergMarquardtEpsfcn, levenbergMarquardtXtol, levenbergMarquardtGtol); namedOptimizationMethod.name = optimizationMethodTypeToString(optimizationMethodTypes[i]); results.Add(namedOptimizationMethod); } return results; }
OptimizationMethod makeOptimizationMethod(OptimizationMethodType optimizationMethodType, double simplexLambda, double levenbergMarquardtEpsfcn, double levenbergMarquardtXtol, double levenbergMarquardtGtol) { switch (optimizationMethodType) { case OptimizationMethodType.simplex: return new Simplex(simplexLambda); case OptimizationMethodType.levenbergMarquardt: return new LevenbergMarquardt(levenbergMarquardtEpsfcn, levenbergMarquardtXtol, levenbergMarquardtGtol); case OptimizationMethodType.conjugateGradient: return new ConjugateGradient(); case OptimizationMethodType.steepestDescent: return new SteepestDescent(); default: throw new ApplicationException("unknown OptimizationMethod type"); } }