diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj
index 370d2a0d..b273b872 100644
--- a/src/Numerics/Numerics.csproj
+++ b/src/Numerics/Numerics.csproj
@@ -116,10 +116,11 @@
+
-
+
-
+
diff --git a/src/Numerics/Optimization/BaseEvaluation.cs b/src/Numerics/Optimization/BaseObjectiveFunction.cs
similarity index 90%
rename from src/Numerics/Optimization/BaseEvaluation.cs
rename to src/Numerics/Optimization/BaseObjectiveFunction.cs
index b2ac67b3..b41d2dbc 100644
--- a/src/Numerics/Optimization/BaseEvaluation.cs
+++ b/src/Numerics/Optimization/BaseObjectiveFunction.cs
@@ -2,7 +2,7 @@
namespace MathNet.Numerics.Optimization
{
- public abstract class BaseEvaluation : IEvaluation
+ public abstract class BaseObjectiveFunction : IObjectiveFunction
{
public EvaluationStatus Status { get; protected set; }
@@ -14,7 +14,7 @@ namespace MathNet.Numerics.Optimization
public bool GradientSupported { get; private set; }
public bool HessianSupported { get; private set; }
- protected BaseEvaluation(bool gradientSupported, bool hessianSupported)
+ protected BaseObjectiveFunction(bool gradientSupported, bool hessianSupported)
{
Status = EvaluationStatus.None;
GradientSupported = gradientSupported;
@@ -74,6 +74,6 @@ namespace MathNet.Numerics.Optimization
protected abstract void SetValue();
protected abstract void SetGradient();
protected abstract void SetHessian();
- public abstract IEvaluation CreateNew();
+ public abstract IObjectiveFunction CreateNew();
}
}
diff --git a/src/Numerics/Optimization/Exceptions.cs b/src/Numerics/Optimization/Exceptions.cs
index 741a9815..13560bde 100644
--- a/src/Numerics/Optimization/Exceptions.cs
+++ b/src/Numerics/Optimization/Exceptions.cs
@@ -19,18 +19,18 @@ namespace MathNet.Numerics.Optimization
public class EvaluationException : OptimizationException
{
- public IEvaluation Evaluation { get; private set; }
+ public IObjectiveFunction ObjectiveFunction { get; private set; }
- public EvaluationException(string message, IEvaluation eval)
+ public EvaluationException(string message, IObjectiveFunction eval)
: base(message)
{
- this.Evaluation = eval;
+ this.ObjectiveFunction = eval;
}
- public EvaluationException(string message, IEvaluation eval, Exception inner_exception)
+ public EvaluationException(string message, IObjectiveFunction eval, Exception inner_exception)
: base(message, inner_exception)
{
- this.Evaluation = eval;
+ this.ObjectiveFunction = eval;
}
//public EvaluationException(string message, IEvaluation1D eval)
diff --git a/src/Numerics/Optimization/IEvaluation.cs b/src/Numerics/Optimization/IObjectiveFunction.cs
similarity index 85%
rename from src/Numerics/Optimization/IEvaluation.cs
rename to src/Numerics/Optimization/IObjectiveFunction.cs
index 678e970b..65c58230 100644
--- a/src/Numerics/Optimization/IEvaluation.cs
+++ b/src/Numerics/Optimization/IObjectiveFunction.cs
@@ -6,10 +6,10 @@ namespace MathNet.Numerics.Optimization
[Flags]
public enum EvaluationStatus { None = 0, Value = 1, Gradient = 2, Hessian = 4 }
- public interface IEvaluation
+ public interface IObjectiveFunction
{
Vector Point { get; set; }
- IEvaluation CreateNew();
+ IObjectiveFunction CreateNew();
// Used by algorithm
bool GradientSupported { get; }
diff --git a/src/Numerics/Optimization/IUnconstrainedMinimizer.cs b/src/Numerics/Optimization/IUnconstrainedMinimizer.cs
index ad2ba208..e565edb2 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(IEvaluation objective, Vector initialGuess);
+ MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector initialGuess);
}
}
diff --git a/src/Numerics/Optimization/Implementation/LineSearchOutput.cs b/src/Numerics/Optimization/Implementation/LineSearchOutput.cs
index b20a0f20..85469013 100644
--- a/src/Numerics/Optimization/Implementation/LineSearchOutput.cs
+++ b/src/Numerics/Optimization/Implementation/LineSearchOutput.cs
@@ -4,7 +4,7 @@
{
public double FinalStep { get; private set; }
- public LineSearchOutput(IEvaluation functionInfo, int iterations, double finalStep, ExitCondition reasonForExit)
+ public LineSearchOutput(IObjectiveFunction functionInfo, int iterations, double finalStep, ExitCondition reasonForExit)
: base(functionInfo, iterations, reasonForExit)
{
FinalStep = finalStep;
diff --git a/src/Numerics/Optimization/Implementation/NullEvaluation.cs b/src/Numerics/Optimization/Implementation/NullObjectiveFunction.cs
similarity index 77%
rename from src/Numerics/Optimization/Implementation/NullEvaluation.cs
rename to src/Numerics/Optimization/Implementation/NullObjectiveFunction.cs
index 32caece2..159da526 100644
--- a/src/Numerics/Optimization/Implementation/NullEvaluation.cs
+++ b/src/Numerics/Optimization/Implementation/NullObjectiveFunction.cs
@@ -3,9 +3,9 @@ using MathNet.Numerics.LinearAlgebra;
namespace MathNet.Numerics.Optimization.Implementation
{
- public class NullEvaluation : BaseEvaluation
+ public class NullObjectiveFunction : BaseObjectiveFunction
{
- public NullEvaluation(Vector point)
+ public NullObjectiveFunction(Vector point)
: base(false, false)
{
Point = point;
@@ -25,7 +25,7 @@ namespace MathNet.Numerics.Optimization.Implementation
throw new NotImplementedException();
}
- public override IEvaluation CreateNew()
+ public override IObjectiveFunction CreateNew()
{
throw new NotImplementedException();
}
diff --git a/src/Numerics/Optimization/Implementation/ObjectiveChecker.cs b/src/Numerics/Optimization/Implementation/ObjectiveChecker.cs
index 961366e0..2cd5db1f 100644
--- a/src/Numerics/Optimization/Implementation/ObjectiveChecker.cs
+++ b/src/Numerics/Optimization/Implementation/ObjectiveChecker.cs
@@ -3,20 +3,20 @@ using MathNet.Numerics.LinearAlgebra;
namespace MathNet.Numerics.Optimization.Implementation
{
- public class CheckedEvaluation : IEvaluation
+ public class CheckedObjectiveFunction : IObjectiveFunction
{
private bool _valueChecked;
private bool _gradientChecked;
private bool _hessianChecked;
- public IEvaluation InnerEvaluation { get; private set; }
- public Action ValueChecker { get; private set; }
- public Action GradientChecker { get; private set; }
- public Action HessianChecker { get; private set; }
+ public IObjectiveFunction InnerObjectiveFunction { get; private set; }
+ public Action ValueChecker { get; private set; }
+ public Action GradientChecker { get; private set; }
+ public Action HessianChecker { get; private set; }
- public CheckedEvaluation(IEvaluation objective, Action valueChecker, Action gradientChecker, Action hessianChecker)
+ public CheckedObjectiveFunction(IObjectiveFunction objective, Action valueChecker, Action gradientChecker, Action hessianChecker)
{
- InnerEvaluation = objective;
+ InnerObjectiveFunction = objective;
ValueChecker = valueChecker;
GradientChecker = gradientChecker;
HessianChecker = hessianChecker;
@@ -24,8 +24,8 @@ namespace MathNet.Numerics.Optimization.Implementation
public Vector Point
{
- get { return InnerEvaluation.Point; }
- set { InnerEvaluation.Point = value; }
+ get { return InnerObjectiveFunction.Point; }
+ set { InnerObjectiveFunction.Point = value; }
}
public double Value
@@ -38,16 +38,16 @@ namespace MathNet.Numerics.Optimization.Implementation
double tmp;
try
{
- tmp = InnerEvaluation.Value;
+ tmp = InnerObjectiveFunction.Value;
}
catch (Exception e)
{
- throw new EvaluationException("Objective function evaluation failed.", InnerEvaluation, e);
+ throw new EvaluationException("Objective function evaluation failed.", InnerObjectiveFunction, e);
}
- ValueChecker(InnerEvaluation);
+ ValueChecker(InnerObjectiveFunction);
_valueChecked = true;
}
- return InnerEvaluation.Value;
+ return InnerObjectiveFunction.Value;
}
}
@@ -61,16 +61,16 @@ namespace MathNet.Numerics.Optimization.Implementation
Vector tmp;
try
{
- tmp = InnerEvaluation.Gradient;
+ tmp = InnerObjectiveFunction.Gradient;
}
catch (Exception e)
{
- throw new EvaluationException("Objective gradient evaluation failed.", InnerEvaluation, e);
+ throw new EvaluationException("Objective gradient evaluation failed.", InnerObjectiveFunction, e);
}
- GradientChecker(InnerEvaluation);
+ GradientChecker(InnerObjectiveFunction);
_gradientChecked = true;
}
- return InnerEvaluation.Gradient;
+ return InnerObjectiveFunction.Gradient;
}
}
@@ -84,32 +84,32 @@ namespace MathNet.Numerics.Optimization.Implementation
Matrix tmp;
try
{
- tmp = InnerEvaluation.Hessian;
+ tmp = InnerObjectiveFunction.Hessian;
}
catch (Exception e)
{
- throw new EvaluationException("Objective hessian evaluation failed.", InnerEvaluation, e);
+ throw new EvaluationException("Objective hessian evaluation failed.", InnerObjectiveFunction, e);
}
- HessianChecker(InnerEvaluation);
+ HessianChecker(InnerObjectiveFunction);
_hessianChecked = true;
}
- return InnerEvaluation.Hessian;
+ return InnerObjectiveFunction.Hessian;
}
}
- public IEvaluation CreateNew()
+ public IObjectiveFunction CreateNew()
{
- return new CheckedEvaluation(InnerEvaluation, ValueChecker, GradientChecker, HessianChecker);
+ return new CheckedObjectiveFunction(InnerObjectiveFunction, ValueChecker, GradientChecker, HessianChecker);
}
public bool GradientSupported
{
- get { return InnerEvaluation.GradientSupported; }
+ get { return InnerObjectiveFunction.GradientSupported; }
}
public bool HessianSupported
{
- get { return InnerEvaluation.HessianSupported; }
+ get { return InnerObjectiveFunction.HessianSupported; }
}
}
}
diff --git a/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs b/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs
index c5ace961..6003ba20 100644
--- a/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs
+++ b/src/Numerics/Optimization/Implementation/WeakWolfeLineSearch.cs
@@ -19,11 +19,11 @@ namespace MathNet.Numerics.Optimization.Implementation
}
// Implemented following http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf
- public LineSearchOutput FindConformingStep(IEvaluation objective, IEvaluation startingPoint, Vector searchDirection, double initialStep)
+ public LineSearchOutput FindConformingStep(IObjectiveFunction objective, IObjectiveFunction startingPoint, Vector searchDirection, double initialStep)
{
- if (!(objective is CheckedEvaluation))
+ if (!(objective is CheckedObjectiveFunction))
{
- objective = new CheckedEvaluation(objective, ValidateValue, ValidateGradient, null);
+ objective = new CheckedObjectiveFunction(objective, ValidateValue, ValidateGradient, null);
}
double lowerBound = 0.0;
@@ -36,7 +36,7 @@ namespace MathNet.Numerics.Optimization.Implementation
double initialDd = searchDirection * initialGradient;
int ii;
- IEvaluation candidateEval = objective.CreateNew();
+ IObjectiveFunction candidateEval = objective.CreateNew();
MinimizationOutput.ExitCondition reasonForExit = MinimizationOutput.ExitCondition.None;
for (ii = 0; ii < _maximumIterations; ++ii)
{
@@ -89,7 +89,7 @@ namespace MathNet.Numerics.Optimization.Implementation
return new LineSearchOutput(candidateEval, ii, step, reasonForExit);
}
- bool Conforms(IEvaluation startingPoint, Vector searchDirection, double step, IEvaluation endingPoint)
+ bool Conforms(IObjectiveFunction startingPoint, Vector searchDirection, double step, IObjectiveFunction endingPoint)
{
bool sufficientDecrease = endingPoint.Value <= startingPoint.Value + _c1 * step * (startingPoint.Gradient * searchDirection);
bool notTooSteep = endingPoint.Gradient * searchDirection >= _c2 * startingPoint.Gradient * searchDirection;
@@ -97,7 +97,7 @@ namespace MathNet.Numerics.Optimization.Implementation
return step > 0 && sufficientDecrease && notTooSteep;
}
- void ValidateValue(IEvaluation eval)
+ void ValidateValue(IObjectiveFunction eval)
{
if (!IsFinite(eval.Value))
{
@@ -105,7 +105,7 @@ namespace MathNet.Numerics.Optimization.Implementation
}
}
- void ValidateGradient(IEvaluation eval)
+ void ValidateGradient(IObjectiveFunction eval)
{
foreach (double x in eval.Gradient)
{
diff --git a/src/Numerics/Optimization/MinimizationOutput.cs b/src/Numerics/Optimization/MinimizationOutput.cs
index 3d4d3827..d9b4bd75 100644
--- a/src/Numerics/Optimization/MinimizationOutput.cs
+++ b/src/Numerics/Optimization/MinimizationOutput.cs
@@ -7,11 +7,11 @@ namespace MathNet.Numerics.Optimization
public enum ExitCondition { None, RelativeGradient, LackOfProgress, AbsoluteGradient, WeakWolfeCriteria, BoundTolerance, StrongWolfeCriteria, LackOfFunctionImprovement }
public Vector MinimizingPoint { get { return FunctionInfoAtMinimum.Point; } }
- public IEvaluation FunctionInfoAtMinimum { get; private set; }
+ public IObjectiveFunction FunctionInfoAtMinimum { get; private set; }
public int Iterations { get; private set; }
public ExitCondition ReasonForExit { get; private set; }
- public MinimizationOutput(IEvaluation functionInfo, int iterations, ExitCondition reasonForExit)
+ public MinimizationOutput(IObjectiveFunction functionInfo, int iterations, ExitCondition reasonForExit)
{
FunctionInfoAtMinimum = functionInfo;
Iterations = iterations;
diff --git a/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs b/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs
index e7f2aadf..2d3df000 100644
--- a/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs
+++ b/src/Numerics/Optimization/MinimizationWithLineSearchOutput.cs
@@ -5,7 +5,7 @@
public int TotalLineSearchIterations { get; private set; }
public int IterationsWithNonTrivialLineSearch { get; private set; }
- public MinimizationWithLineSearchOutput(IEvaluation functionInfo, int iterations, ExitCondition reasonForExit, int totalLineSearchIterations, int iterationsWithNonTrivialLineSearch)
+ public MinimizationWithLineSearchOutput(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 8d399122..2654c477 100644
--- a/src/Numerics/Optimization/NewtonMinimizer.cs
+++ b/src/Numerics/Optimization/NewtonMinimizer.cs
@@ -18,7 +18,7 @@ namespace MathNet.Numerics.Optimization
UseLineSearch = useLineSearch;
}
- public MinimizationOutput FindMinimum(IEvaluation objective, Vector initialGuess)
+ public MinimizationOutput FindMinimum(IObjectiveFunction objective, Vector initialGuess)
{
if (!objective.GradientSupported)
throw new IncompatibleObjectiveException("Gradient not supported in objective function, but required for Newton minimization.");
@@ -26,10 +26,10 @@ namespace MathNet.Numerics.Optimization
if (!objective.HessianSupported)
throw new IncompatibleObjectiveException("Hessian not supported in objective function, but required for Newton minimization.");
- if (!(objective is CheckedEvaluation))
- objective = new CheckedEvaluation(objective, ValidateObjective, ValidateGradient, ValidateHessian);
+ if (!(objective is CheckedObjectiveFunction))
+ objective = new CheckedObjectiveFunction(objective, ValidateObjective, ValidateGradient, ValidateHessian);
- IEvaluation initialEval = objective.CreateNew();
+ IObjectiveFunction initialEval = objective.CreateNew();
initialEval.Point = initialGuess;
// Check that we're not already done
@@ -40,7 +40,7 @@ namespace MathNet.Numerics.Optimization
var lineSearcher = new WeakWolfeLineSearch(1e-4, 0.9, 1e-4, maxIterations: 1000);
// Declare state variables
- IEvaluation candidatePoint = initialEval;
+ IObjectiveFunction candidatePoint = initialEval;
// Subsequent steps
int iterations = 0;
@@ -92,7 +92,7 @@ namespace MathNet.Numerics.Optimization
return gradient.Norm(2.0) < GradientTolerance;
}
- private void ValidateGradient(IEvaluation eval)
+ private void ValidateGradient(IObjectiveFunction eval)
{
foreach (var x in eval.Gradient)
{
@@ -101,13 +101,13 @@ namespace MathNet.Numerics.Optimization
}
}
- private void ValidateObjective(IEvaluation eval)
+ private void ValidateObjective(IObjectiveFunction eval)
{
if (Double.IsNaN(eval.Value) || Double.IsInfinity(eval.Value))
throw new EvaluationException("Non-finite objective function returned.", eval);
}
- private void ValidateHessian(IEvaluation eval)
+ private void ValidateHessian(IObjectiveFunction eval)
{
for (int ii = 0; ii < eval.Hessian.RowCount; ++ii)
{
diff --git a/src/UnitTests/OptimizationTests/RosenbrockFunction.cs b/src/UnitTests/OptimizationTests/RosenbrockFunction.cs
index e27b6147..76b0b277 100644
--- a/src/UnitTests/OptimizationTests/RosenbrockFunction.cs
+++ b/src/UnitTests/OptimizationTests/RosenbrockFunction.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using MathNet.Numerics.LinearAlgebra;
+using MathNet.Numerics.LinearAlgebra.Double;
namespace MathNet.Numerics.UnitTests.OptimizationTests
{
@@ -16,7 +13,7 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
public static Vector Gradient(Vector input)
{
- Vector output = new MathNet.Numerics.LinearAlgebra.Double.DenseVector(2);
+ Vector output = new DenseVector(2);
output[0] = -2 * (1 - input[0]) + 200 * (input[1] - input[0] * input[0]) * (-2 * input[0]);
output[1] = 2 * 100 * (input[1] - input[0] * input[0]);
return output;
@@ -24,8 +21,7 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
public static Matrix Hessian(Vector input)
{
-
- Matrix output = new MathNet.Numerics.LinearAlgebra.Double.DenseMatrix(2, 2);
+ Matrix output = new DenseMatrix(2, 2);
output[0, 0] = 2 - 400 * input[1] + 1200 * input[0] * input[0];
output[1, 1] = 200;
output[0, 1] = -400 * input[0];
@@ -50,6 +46,5 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
{
return 100.0 * RosenbrockFunction.Hessian(input / 100.0);
}
-
}
}
diff --git a/src/UnitTests/OptimizationTests/TestNewtonMinimizer.cs b/src/UnitTests/OptimizationTests/TestNewtonMinimizer.cs
index de23f090..d7f910d7 100644
--- a/src/UnitTests/OptimizationTests/TestNewtonMinimizer.cs
+++ b/src/UnitTests/OptimizationTests/TestNewtonMinimizer.cs
@@ -1,37 +1,33 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using NUnit.Framework;
+using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.Optimization;
+using NUnit.Framework;
namespace MathNet.Numerics.UnitTests.OptimizationTests
{
- public class RosenbrockEvaluation : BaseEvaluation
+ public class RosenbrockObjectiveFunction : BaseObjectiveFunction
{
- public RosenbrockEvaluation()
+ public RosenbrockObjectiveFunction()
: base(true, true) { }
protected override void SetValue()
{
- this.ValueRaw = RosenbrockFunction.Value(this.Point);
+ ValueRaw = RosenbrockFunction.Value(Point);
}
protected override void SetGradient()
{
- this.GradientRaw = RosenbrockFunction.Gradient(this.Point);
+ GradientRaw = RosenbrockFunction.Gradient(Point);
}
protected override void SetHessian()
{
- this.HessianRaw = RosenbrockFunction.Hessian(this.Point);
+ HessianRaw = RosenbrockFunction.Hessian(Point);
}
- public override IEvaluation CreateNew()
+ public override IObjectiveFunction CreateNew()
{
- return new RosenbrockEvaluation();
+ return new RosenbrockObjectiveFunction();
}
}
@@ -42,10 +38,10 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Rosenbrock_Easy()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { 1.2, 1.2 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { 1.2, 1.2 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));
@@ -54,9 +50,9 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Rosenbrock_Hard()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { -1.2, 1.0 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { -1.2, 1.0 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));
@@ -65,9 +61,9 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Rosenbrock_Overton()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { -0.9, -0.5 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { -0.9, -0.5 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));
@@ -76,9 +72,9 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Linesearch_Rosenbrock_Easy()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000, true);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { 1.2, 1.2 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { 1.2, 1.2 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));
@@ -87,9 +83,9 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Linesearch_Rosenbrock_Hard()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000, true);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { -1.2, 1.0 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { -1.2, 1.0 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));
@@ -98,9 +94,9 @@ namespace MathNet.Numerics.UnitTests.OptimizationTests
[Test]
public void FindMinimum_Linesearch_Rosenbrock_Overton()
{
- var obj = new RosenbrockEvaluation();
+ var obj = new RosenbrockObjectiveFunction();
var solver = new NewtonMinimizer(1e-5, 1000, true);
- var result = solver.FindMinimum(obj, new MathNet.Numerics.LinearAlgebra.Double.DenseVector(new double[] { -0.9, -0.5 }));
+ var result = solver.FindMinimum(obj, new DenseVector(new[] { -0.9, -0.5 }));
Assert.That(Math.Abs(result.MinimizingPoint[0] - 1.0), Is.LessThan(1e-3));
Assert.That(Math.Abs(result.MinimizingPoint[1] - 1.0), Is.LessThan(1e-3));