Browse Source

Optimization: rename Output to Result

unified_optimization
Christoph Ruegg 12 years ago
parent
commit
ba40d217ec
  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

@ -112,12 +112,12 @@
<Compile Include="Optimization\ObjectiveFunctions\GradientObjectiveFunction.cs" />
<Compile Include="Optimization\ObjectiveFunctions\GradientHessianObjectiveFunction.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\WeakWolfeLineSearch.cs" />
<Compile Include="Optimization\IUnconstrainedMinimizer.cs" />
<Compile Include="Optimization\MinimizationOutput.cs" />
<Compile Include="Optimization\MinimizationWithLineSearchOutput.cs" />
<Compile Include="Optimization\MinimizationResult.cs" />
<Compile Include="Optimization\MinimizationWithLineSearchResult.cs" />
<Compile Include="Optimization\NewtonMinimizer.cs" />
<Compile Include="Precision.Comparison.cs" />
<Compile Include="Precision.Equality.cs" />

2
src/Numerics/Optimization/IUnconstrainedMinimizer.cs

@ -4,6 +4,6 @@ namespace MathNet.Numerics.Optimization
{
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
{
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;

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

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

9
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<double>;
namespace MathNet.Numerics.Optimization
{
@ -18,7 +17,7 @@ namespace MathNet.Numerics.Optimization
UseLineSearch = useLineSearch;
}
public MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector<double> initialGuess)
public MinimizationResult FindMinimum(IObjectiveFunction objective, Vector<double> 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<double> gradient)

Loading…
Cancel
Save