Browse Source

Optimization: rename Output to Result

v3
Christoph Ruegg 12 years ago
committed by Erik Ovegard
parent
commit
8527827c04
  1. 6
      src/Numerics/Numerics.csproj
  2. 2
      src/Numerics/Optimization/IUnconstrainedMinimizer.cs
  3. 4
      src/Numerics/Optimization/Implementation/LineSearchResult.cs
  4. 10
      src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs
  5. 4
      src/Numerics/Optimization/MinimizationResult.cs
  6. 4
      src/Numerics/Optimization/MinimizationWithLineSearchResult.cs
  7. 9
      src/Numerics/Optimization/NewtonMinimizer.cs

6
src/Numerics/Numerics.csproj

@ -127,12 +127,12 @@
<Compile Include="Optimization\ObjectiveFunctions\GradientObjectiveFunction.cs" /> <Compile Include="Optimization\ObjectiveFunctions\GradientObjectiveFunction.cs" />
<Compile Include="Optimization\ObjectiveFunctions\GradientHessianObjectiveFunction.cs" /> <Compile Include="Optimization\ObjectiveFunctions\GradientHessianObjectiveFunction.cs" />
<Compile Include="Optimization\IObjectiveFunction.cs" /> <Compile Include="Optimization\IObjectiveFunction.cs" />
<Compile Include="Optimization\Implementation\LineSearchOutput.cs" /> <Compile Include="Optimization\Implementation\LineSearchResult.cs" />
<Compile Include="Optimization\Implementation\CheckedObjectiveFunction.cs" /> <Compile Include="Optimization\Implementation\CheckedObjectiveFunction.cs" />
<Compile Include="Optimization\Implementation\WeakWolfeLineSearch.cs" /> <Compile Include="Optimization\Implementation\WeakWolfeLineSearch.cs" />
<Compile Include="Optimization\IUnconstrainedMinimizer.cs" /> <Compile Include="Optimization\IUnconstrainedMinimizer.cs" />
<Compile Include="Optimization\MinimizationOutput.cs" /> <Compile Include="Optimization\MinimizationResult.cs" />
<Compile Include="Optimization\MinimizationWithLineSearchOutput.cs" /> <Compile Include="Optimization\MinimizationWithLineSearchResult.cs" />
<Compile Include="Optimization\NewtonMinimizer.cs" /> <Compile Include="Optimization\NewtonMinimizer.cs" />
<Compile Include="Precision.Comparison.cs" /> <Compile Include="Precision.Comparison.cs" />
<Compile Include="Precision.Equality.cs" /> <Compile Include="Precision.Equality.cs" />

2
src/Numerics/Optimization/IUnconstrainedMinimizer.cs

@ -4,6 +4,6 @@ namespace MathNet.Numerics.Optimization
{ {
public interface IUnconstrainedMinimizer public interface IUnconstrainedMinimizer
{ {
MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector<double> initialGuess); MinimizationResult FindMinimum(IObjectiveFunction objective, Vector<double> initialGuess);
} }
} }

4
src/Numerics/Optimization/Implementation/LineSearchOutput.cs → src/Numerics/Optimization/Implementation/LineSearchResult.cs

@ -1,10 +1,10 @@
namespace MathNet.Numerics.Optimization.Implementation namespace MathNet.Numerics.Optimization.Implementation
{ {
public class LineSearchOutput : MinimizationOutput public class LineSearchResult : MinimizationResult
{ {
public double FinalStep { get; private set; } 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) : base(functionInfo, iterations, reasonForExit)
{ {
FinalStep = finalStep; FinalStep = finalStep;

10
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 // Implemented following http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf
public LineSearchOutput FindConformingStep(IObjectiveFunctionEvaluation startingPoint, Vector<double> searchDirection, double initialStep) public LineSearchResult FindConformingStep(IObjectiveFunctionEvaluation startingPoint, Vector<double> searchDirection, double initialStep)
{ {
double lowerBound = 0.0; double lowerBound = 0.0;
double upperBound = Double.PositiveInfinity; double upperBound = Double.PositiveInfinity;
@ -33,7 +33,7 @@ namespace MathNet.Numerics.Optimization.Implementation
var objective = startingPoint.CreateNew(); var objective = startingPoint.CreateNew();
int ii; int ii;
MinimizationOutput.ExitCondition reasonForExit = MinimizationOutput.ExitCondition.None; MinimizationResult.ExitCondition reasonForExit = MinimizationResult.ExitCondition.None;
for (ii = 0; ii < _maximumIterations; ++ii) for (ii = 0; ii < _maximumIterations; ++ii)
{ {
objective.EvaluateAt(initialPoint + searchDirection * step); objective.EvaluateAt(initialPoint + searchDirection * step);
@ -54,7 +54,7 @@ namespace MathNet.Numerics.Optimization.Implementation
} }
else else
{ {
reasonForExit = MinimizationOutput.ExitCondition.WeakWolfeCriteria; reasonForExit = MinimizationResult.ExitCondition.WeakWolfeCriteria;
break; break;
} }
@ -68,7 +68,7 @@ namespace MathNet.Numerics.Optimization.Implementation
} }
if (maxRelChange < _parameterTolerance) if (maxRelChange < _parameterTolerance)
{ {
reasonForExit = MinimizationOutput.ExitCondition.LackOfProgress; reasonForExit = MinimizationResult.ExitCondition.LackOfProgress;
break; break;
} }
} }
@ -84,7 +84,7 @@ namespace MathNet.Numerics.Optimization.Implementation
throw new MaximumIterationsException(String.Format("Maximum iterations ({0}) reached.", _maximumIterations)); 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<double> searchDirection, double step, IObjectiveFunction endingPoint) bool Conforms(IObjectiveFunction startingPoint, Vector<double> searchDirection, double step, IObjectiveFunction endingPoint)

4
src/Numerics/Optimization/MinimizationOutput.cs → src/Numerics/Optimization/MinimizationResult.cs

@ -2,7 +2,7 @@
namespace MathNet.Numerics.Optimization namespace MathNet.Numerics.Optimization
{ {
public class MinimizationOutput public class MinimizationResult
{ {
public enum ExitCondition public enum ExitCondition
{ {
@ -21,7 +21,7 @@ namespace MathNet.Numerics.Optimization
public int Iterations { get; private set; } public int Iterations { get; private set; }
public ExitCondition ReasonForExit { 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; FunctionInfoAtMinimum = functionInfo;
Iterations = iterations; Iterations = iterations;

4
src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs → src/Numerics/Optimization/MinimizationWithLineSearchResult.cs

@ -1,11 +1,11 @@
namespace MathNet.Numerics.Optimization namespace MathNet.Numerics.Optimization
{ {
public class MinimizationWithLineSearchOutput : MinimizationOutput public class MinimizationWithLineSearchResult : MinimizationResult
{ {
public int TotalLineSearchIterations { get; private set; } public int TotalLineSearchIterations { get; private set; }
public int IterationsWithNonTrivialLineSearch { 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) : base(functionInfo, iterations, reasonForExit)
{ {
TotalLineSearchIterations = totalLineSearchIterations; TotalLineSearchIterations = totalLineSearchIterations;

9
src/Numerics/Optimization/NewtonMinimizer.cs

@ -1,7 +1,6 @@
using System; using System;
using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.Optimization.Implementation; using MathNet.Numerics.Optimization.Implementation;
using LU = MathNet.Numerics.LinearAlgebra.Factorization.LU<double>;
namespace MathNet.Numerics.Optimization namespace MathNet.Numerics.Optimization
{ {
@ -18,7 +17,7 @@ namespace MathNet.Numerics.Optimization
UseLineSearch = useLineSearch; UseLineSearch = useLineSearch;
} }
public MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector<double> initialGuess) public MinimizationResult FindMinimum(IObjectiveFunction objective, Vector<double> initialGuess)
{ {
if (!objective.IsGradientSupported) if (!objective.IsGradientSupported)
{ {
@ -35,7 +34,7 @@ namespace MathNet.Numerics.Optimization
ValidateGradient(objective); ValidateGradient(objective);
if (ExitCriteriaSatisfied(objective.Gradient)) 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 // Set up line search algorithm
@ -59,7 +58,7 @@ namespace MathNet.Numerics.Optimization
if (UseLineSearch || tmpLineSearch) if (UseLineSearch || tmpLineSearch)
{ {
LineSearchOutput result; LineSearchResult result;
try try
{ {
result = lineSearcher.FindConformingStep(objective, searchDirection, 1.0); 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)); 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<double> gradient) bool ExitCriteriaSatisfied(Vector<double> gradient)

Loading…
Cancel
Save