Browse Source

Renamed ModelMinimizationResult to NonlinearMinimizationResult.

arrays
diluculo 8 years ago
parent
commit
478d6a38a4
  1. 12
      src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs
  2. 4
      src/Numerics/Optimization/NonlinearMinimizationResult.cs
  3. 1
      src/Numerics/Optimization/Subproblems/DogLegSubproblem.cs
  4. 1
      src/Numerics/Optimization/Subproblems/NewtonCGSubproblem.cs
  5. 12
      src/Numerics/Optimization/TrustRegionMinimizerBase.cs

12
src/Numerics/Optimization/LevenbergMarquardtMinimizer.cs

@ -44,7 +44,7 @@ namespace MathNet.Numerics.Optimization
MaximumIterations = maximumIterations;
}
public ModelMinimizationResult FindMinimum(IObjectiveModel objective, Vector<double> initialGuess)
public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, Vector<double> 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
/// <param name="functionTolerance">The stopping threshold for L2 norm of the residuals.</param>
/// <param name="maximumIterations">The max iterations.</param>
/// <returns>The result of the Levenberg-Marquardt minimization</returns>
public static ModelMinimizationResult Minimum(IObjectiveModel objective, Vector<double> 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<double> 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);
}
}
}

4
src/Numerics/Optimization/ModelMinimizationResult.cs → 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;

1
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;

1
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;

12
src/Numerics/Optimization/TrustRegionMinimizerBase.cs

@ -46,7 +46,7 @@ namespace MathNet.Numerics.Optimization
MaximumIterations = maximumIterations;
}
public ModelMinimizationResult FindMinimum(IObjectiveModel objective, Vector<double> initialGuess)
public NonlinearMinimizationResult FindMinimum(IObjectiveModel objective, Vector<double> 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
/// <param name="radiusTolerance">The stopping threshold for trust region radius</param>
/// <param name="maximumIterations">The max iterations.</param>
/// <returns></returns>
public static ModelMinimizationResult Minimum(IObjectiveModel objective, Vector<double> 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<double> 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);
}
}
}

Loading…
Cancel
Save