diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 32dc2b7c..bf35d659 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -112,12 +112,12 @@ - + - - + + diff --git a/src/Numerics/Optimization/IUnconstrainedMinimizer.cs b/src/Numerics/Optimization/IUnconstrainedMinimizer.cs index e565edb2..3c88e8ca 100644 --- a/src/Numerics/Optimization/IUnconstrainedMinimizer.cs +++ b/src/Numerics/Optimization/IUnconstrainedMinimizer.cs @@ -4,6 +4,6 @@ namespace MathNet.Numerics.Optimization { public interface IUnconstrainedMinimizer { - MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector initialGuess); + MinimizationResult FindMinimum(IObjectiveFunction objective, Vector initialGuess); } } diff --git a/src/Numerics/Optimization/Implementation/LineSearchOutput.cs b/src/Numerics/Optimization/Implementation/LineSearchResult.cs similarity index 72% rename from src/Numerics/Optimization/Implementation/LineSearchOutput.cs rename to src/Numerics/Optimization/Implementation/LineSearchResult.cs index 85469013..70673ca1 100644 --- a/src/Numerics/Optimization/Implementation/LineSearchOutput.cs +++ b/src/Numerics/Optimization/Implementation/LineSearchResult.cs @@ -1,10 +1,10 @@ namespace MathNet.Numerics.Optimization.Implementation { - public class LineSearchOutput : MinimizationOutput + public class LineSearchResult : MinimizationResult { public double FinalStep { get; private set; } - public LineSearchOutput(IObjectiveFunction functionInfo, int iterations, double finalStep, ExitCondition reasonForExit) + public LineSearchResult(IObjectiveFunction functionInfo, int iterations, double finalStep, ExitCondition reasonForExit) : base(functionInfo, iterations, reasonForExit) { FinalStep = finalStep; diff --git a/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs b/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs index 2901418e..4edf7cae 100644 --- a/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs +++ b/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs @@ -19,7 +19,7 @@ namespace MathNet.Numerics.Optimization.Implementation } // Implemented following http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf - public LineSearchOutput FindConformingStep(IObjectiveFunctionEvaluation startingPoint, Vector searchDirection, double initialStep) + public LineSearchResult FindConformingStep(IObjectiveFunctionEvaluation startingPoint, Vector searchDirection, double initialStep) { double lowerBound = 0.0; double upperBound = Double.PositiveInfinity; @@ -33,7 +33,7 @@ namespace MathNet.Numerics.Optimization.Implementation var objective = startingPoint.CreateNew(); int ii; - MinimizationOutput.ExitCondition reasonForExit = MinimizationOutput.ExitCondition.None; + MinimizationResult.ExitCondition reasonForExit = MinimizationResult.ExitCondition.None; for (ii = 0; ii < _maximumIterations; ++ii) { objective.EvaluateAt(initialPoint + searchDirection * step); @@ -54,7 +54,7 @@ namespace MathNet.Numerics.Optimization.Implementation } else { - reasonForExit = MinimizationOutput.ExitCondition.WeakWolfeCriteria; + reasonForExit = MinimizationResult.ExitCondition.WeakWolfeCriteria; break; } @@ -68,7 +68,7 @@ namespace MathNet.Numerics.Optimization.Implementation } if (maxRelChange < _parameterTolerance) { - reasonForExit = MinimizationOutput.ExitCondition.LackOfProgress; + reasonForExit = MinimizationResult.ExitCondition.LackOfProgress; break; } } @@ -84,7 +84,7 @@ namespace MathNet.Numerics.Optimization.Implementation throw new MaximumIterationsException(String.Format("Maximum iterations ({0}) reached.", _maximumIterations)); } - return new LineSearchOutput(objective, ii, step, reasonForExit); + return new LineSearchResult(objective, ii, step, reasonForExit); } bool Conforms(IObjectiveFunction startingPoint, Vector searchDirection, double step, IObjectiveFunction endingPoint) diff --git a/src/Numerics/Optimization/MinimizationOutput.cs b/src/Numerics/Optimization/MinimizationResult.cs similarity index 89% rename from src/Numerics/Optimization/MinimizationOutput.cs rename to src/Numerics/Optimization/MinimizationResult.cs index 802a3522..77cc389c 100644 --- a/src/Numerics/Optimization/MinimizationOutput.cs +++ b/src/Numerics/Optimization/MinimizationResult.cs @@ -2,7 +2,7 @@ namespace MathNet.Numerics.Optimization { - public class MinimizationOutput + public class MinimizationResult { public enum ExitCondition { @@ -21,7 +21,7 @@ namespace MathNet.Numerics.Optimization public int Iterations { get; private set; } public ExitCondition ReasonForExit { get; private set; } - public MinimizationOutput(IObjectiveFunction functionInfo, int iterations, ExitCondition reasonForExit) + public MinimizationResult(IObjectiveFunction functionInfo, int iterations, ExitCondition reasonForExit) { FunctionInfoAtMinimum = functionInfo; Iterations = iterations; diff --git a/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs b/src/Numerics/Optimization/MinimizationWithLineSearchResult.cs similarity index 80% rename from src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs rename to src/Numerics/Optimization/MinimizationWithLineSearchResult.cs index 2d3df000..72002bee 100644 --- a/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs +++ b/src/Numerics/Optimization/MinimizationWithLineSearchResult.cs @@ -1,11 +1,11 @@ namespace MathNet.Numerics.Optimization { - public class MinimizationWithLineSearchOutput : MinimizationOutput + public class MinimizationWithLineSearchResult : MinimizationResult { public int TotalLineSearchIterations { get; private set; } public int IterationsWithNonTrivialLineSearch { get; private set; } - public MinimizationWithLineSearchOutput(IObjectiveFunction functionInfo, int iterations, ExitCondition reasonForExit, int totalLineSearchIterations, int iterationsWithNonTrivialLineSearch) + public MinimizationWithLineSearchResult(IObjectiveFunction functionInfo, int iterations, ExitCondition reasonForExit, int totalLineSearchIterations, int iterationsWithNonTrivialLineSearch) : base(functionInfo, iterations, reasonForExit) { TotalLineSearchIterations = totalLineSearchIterations; diff --git a/src/Numerics/Optimization/NewtonMinimizer.cs b/src/Numerics/Optimization/NewtonMinimizer.cs index 79a18249..e2e04420 100644 --- a/src/Numerics/Optimization/NewtonMinimizer.cs +++ b/src/Numerics/Optimization/NewtonMinimizer.cs @@ -1,7 +1,6 @@ using System; using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.Optimization.Implementation; -using LU = MathNet.Numerics.LinearAlgebra.Factorization.LU; namespace MathNet.Numerics.Optimization { @@ -18,7 +17,7 @@ namespace MathNet.Numerics.Optimization UseLineSearch = useLineSearch; } - public MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector initialGuess) + public MinimizationResult FindMinimum(IObjectiveFunction objective, Vector initialGuess) { if (!objective.IsGradientSupported) { @@ -35,7 +34,7 @@ namespace MathNet.Numerics.Optimization ValidateGradient(objective); if (ExitCriteriaSatisfied(objective.Gradient)) { - return new MinimizationOutput(objective, 0, MinimizationOutput.ExitCondition.AbsoluteGradient); + return new MinimizationResult(objective, 0, MinimizationResult.ExitCondition.AbsoluteGradient); } // Set up line search algorithm @@ -59,7 +58,7 @@ namespace MathNet.Numerics.Optimization if (UseLineSearch || tmpLineSearch) { - LineSearchOutput result; + LineSearchResult result; try { result = lineSearcher.FindConformingStep(objective, searchDirection, 1.0); @@ -89,7 +88,7 @@ namespace MathNet.Numerics.Optimization throw new MaximumIterationsException(String.Format("Maximum iterations ({0}) reached.", MaximumIterations)); } - return new MinimizationWithLineSearchOutput(objective, iterations, MinimizationOutput.ExitCondition.AbsoluteGradient, totalLineSearchSteps, iterationsWithNontrivialLineSearch); + return new MinimizationWithLineSearchResult(objective, iterations, MinimizationResult.ExitCondition.AbsoluteGradient, totalLineSearchSteps, iterationsWithNontrivialLineSearch); } bool ExitCriteriaSatisfied(Vector gradient)