From 478d6a38a4d30a80ef2040342b6bebe88ad1a57a Mon Sep 17 00:00:00 2001 From: diluculo Date: Wed, 2 Jan 2019 19:09:49 +0900 Subject: [PATCH] Renamed ModelMinimizationResult to NonlinearMinimizationResult. --- .../Optimization/LevenbergMarquardtMinimizer.cs | 12 ++++++------ ...ationResult.cs => NonlinearMinimizationResult.cs} | 4 ++-- .../Optimization/Subproblems/DogLegSubproblem.cs | 1 - .../Optimization/Subproblems/NewtonCGSubproblem.cs | 1 - .../Optimization/TrustRegionMinimizerBase.cs | 12 ++++++------ 5 files changed, 14 insertions(+), 16 deletions(-) rename src/Numerics/Optimization/{ModelMinimizationResult.cs => NonlinearMinimizationResult.cs} (90%) diff --git a/src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs b/src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs index 2b54d194..ddae4d72 100644 --- a/src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs +++ b/src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs @@ -44,7 +44,7 @@ namespace MathNet.Numerics.Optimization MaximumIterations = maximumIterations; } - public ModelMinimizationResult FindMinimum(IObjectiveModel objective, Vector initialGuess) + public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, Vector initialGuess) { if (objective == null) throw new ArgumentNullException("objective"); @@ -54,7 +54,7 @@ namespace MathNet.Numerics.Optimization return Minimum(objective, initialGuess, InitialMu, FunctionTolerance, GradientTolerance, StepTolerance, MaximumIterations); } - public ModelMinimizationResult FindMinimum(IObjectiveModel objective, double[] initialGuess) + public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, double[] initialGuess) { if (objective == null) throw new ArgumentNullException("objective"); @@ -75,7 +75,7 @@ namespace MathNet.Numerics.Optimization /// The stopping threshold for L2 norm of the residuals. /// The max iterations. /// The result of the Levenberg-Marquardt minimization - public static ModelMinimizationResult Minimum(IObjectiveModel objective, Vector initialGuess, double initialMu = 1E-3, double gradientTolerance = 1E-18, double stepTolerance = 1E-18, double functionTolerance = 1E-18, int maximumIterations = -1) + public static NonlinearMinimizationResult Minimum(IObjectiveModel objective, Vector initialGuess, double initialMu = 1E-3, double gradientTolerance = 1E-18, double stepTolerance = 1E-18, double functionTolerance = 1E-18, int maximumIterations = -1) { // Non-linear least square fitting by the Levenberg-Marduardt algorithm. // @@ -141,7 +141,7 @@ namespace MathNet.Numerics.Optimization if (double.IsNaN(RSS)) { exitCondition = ExitCondition.InvalidValues; - return new ModelMinimizationResult(objective, -1, exitCondition); + return new NonlinearMinimizationResult(objective, -1, exitCondition); } // When only function evaluation is needed, set maximumIterations to zero, @@ -171,7 +171,7 @@ namespace MathNet.Numerics.Optimization if (exitCondition != ExitCondition.None) { objective.EvaluateCovariance(P); - return new ModelMinimizationResult(objective, -1, exitCondition); + return new NonlinearMinimizationResult(objective, -1, exitCondition); } double mu = initialMu * diagonalOfHessian.Max(); // μ @@ -261,7 +261,7 @@ namespace MathNet.Numerics.Optimization // finalize objective.EvaluateCovariance(P); - return new ModelMinimizationResult(objective, iterations, exitCondition); + return new NonlinearMinimizationResult(objective, iterations, exitCondition); } } } diff --git a/src/Numerics/Optimization/ModelMinimizationResult.cs b/src/Numerics/Optimization/NonlinearMinimizationResult.cs similarity index 90% rename from src/Numerics/Optimization/ModelMinimizationResult.cs rename to src/Numerics/Optimization/NonlinearMinimizationResult.cs index baaf3710..a88569ba 100644 --- a/src/Numerics/Optimization/ModelMinimizationResult.cs +++ b/src/Numerics/Optimization/NonlinearMinimizationResult.cs @@ -6,7 +6,7 @@ using System.Text; namespace MathNet.Numerics.Optimization { - public class ModelMinimizationResult + public class NonlinearMinimizationResult { public IObjectiveModel ModelInfoAtMinimum { get; private set; } @@ -42,7 +42,7 @@ namespace MathNet.Numerics.Optimization public int Iterations { get; private set; } public ExitCondition ReasonForExit { get; private set; } - public ModelMinimizationResult(IObjectiveModel modelInfo, int iterations, ExitCondition reasonForExit) + public NonlinearMinimizationResult(IObjectiveModel modelInfo, int iterations, ExitCondition reasonForExit) { ModelInfoAtMinimum = modelInfo; Iterations = iterations; diff --git a/src/Numerics/Optimization/Subproblems/DogLegSubproblem.cs b/src/Numerics/Optimization/Subproblems/DogLegSubproblem.cs index 8d41288d..83671ce7 100644 --- a/src/Numerics/Optimization/Subproblems/DogLegSubproblem.cs +++ b/src/Numerics/Optimization/Subproblems/DogLegSubproblem.cs @@ -10,7 +10,6 @@ namespace MathNet.Numerics.Optimization.Subproblems public void Solve(IObjectiveModel objective, double delta) { - var Jacobian = objective.Jacobian; var Gradient = objective.Gradient; var Hessian = objective.Hessian; diff --git a/src/Numerics/Optimization/Subproblems/NewtonCGSubproblem.cs b/src/Numerics/Optimization/Subproblems/NewtonCGSubproblem.cs index ba6f9a6c..04c98214 100644 --- a/src/Numerics/Optimization/Subproblems/NewtonCGSubproblem.cs +++ b/src/Numerics/Optimization/Subproblems/NewtonCGSubproblem.cs @@ -11,7 +11,6 @@ namespace MathNet.Numerics.Optimization.Subproblems public void Solve(IObjectiveModel objective, double delta) { - var Jacobian = objective.Jacobian; var Gradient = objective.Gradient; var Hessian = objective.Hessian; diff --git a/src/Numerics/Optimization/TrustRegionMinimizerBase.cs b/src/Numerics/Optimization/TrustRegionMinimizerBase.cs index f4125e8f..50711a69 100644 --- a/src/Numerics/Optimization/TrustRegionMinimizerBase.cs +++ b/src/Numerics/Optimization/TrustRegionMinimizerBase.cs @@ -46,7 +46,7 @@ namespace MathNet.Numerics.Optimization MaximumIterations = maximumIterations; } - public ModelMinimizationResult FindMinimum(IObjectiveModel objective, Vector initialGuess) + public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, Vector initialGuess) { if (objective == null) throw new ArgumentNullException("objective"); @@ -56,7 +56,7 @@ namespace MathNet.Numerics.Optimization return Minimum(objective, initialGuess, Subproblem, GradientTolerance, StepTolerance, FunctionTolerance, RadiusTolerance, MaximumIterations); } - public ModelMinimizationResult FindMinimum(IObjectiveModel objective, double[] initialGuess) + public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, double[] initialGuess) { if (objective == null) throw new ArgumentNullException("objective"); @@ -78,7 +78,7 @@ namespace MathNet.Numerics.Optimization /// The stopping threshold for trust region radius /// The max iterations. /// - public static ModelMinimizationResult Minimum(IObjectiveModel objective, Vector initialGuess, ITrustRegionSubproblem subproblem, double gradientTolerance = 1E-8, double stepTolerance = 1E-8, double functionTolerance = 1E-8, double radiusTolerance = 1E-18, int maximumIterations = -1) + public static NonlinearMinimizationResult Minimum(IObjectiveModel objective, Vector initialGuess, ITrustRegionSubproblem subproblem, double gradientTolerance = 1E-8, double stepTolerance = 1E-8, double functionTolerance = 1E-8, double radiusTolerance = 1E-18, int maximumIterations = -1) { // Non-linear least square fitting by the trust-region algorithm. // @@ -144,7 +144,7 @@ namespace MathNet.Numerics.Optimization if (double.IsNaN(RSS)) { exitCondition = ExitCondition.InvalidValues; - return new ModelMinimizationResult(objective, -1, exitCondition); + return new NonlinearMinimizationResult(objective, -1, exitCondition); } // When only function evaluation is needed, set maximumIterations to zero, @@ -174,7 +174,7 @@ namespace MathNet.Numerics.Optimization { // finalize objective.EvaluateCovariance(P); - return new ModelMinimizationResult(objective, -1, exitCondition); + return new NonlinearMinimizationResult(objective, -1, exitCondition); } // initialize trust-region radius, Δ @@ -256,7 +256,7 @@ namespace MathNet.Numerics.Optimization // finalize objective.EvaluateCovariance(P); - return new ModelMinimizationResult(objective, iterations, exitCondition); + return new NonlinearMinimizationResult(objective, iterations, exitCondition); } } }