public void ConstructorTest1() { Func<double[], double> function = // min f(x) = 10 * (x+1)^2 + y^2 x => 10.0 * Math.Pow(x[0] + 1.0, 2.0) + Math.Pow(x[1], 2.0); Subplex solver = new Subplex(2, function); Assert.IsTrue(solver.Minimize()); double minimum = solver.Value; double[] solution = solver.Solution; Assert.AreEqual(0, minimum, 1e-10); Assert.AreEqual(-1, solution[0], 1e-5); Assert.AreEqual(0, solution[1], 1e-5); double expectedMinimum = function(solver.Solution); Assert.AreEqual(expectedMinimum, minimum); }
public void ConstructorTest5() { var function = new NonlinearObjectiveFunction(2, x => 10.0 * Math.Pow(x[0] * x[0] - x[1], 2.0) + Math.Pow(1.0 + x[0], 2.0)); Subplex solver = new Subplex(function); Assert.IsTrue(solver.Minimize()); double minimum = solver.Value; double[] solution = solver.Solution; Assert.AreEqual(-0, minimum, 1e-6); Assert.AreEqual(-1, solution[0], 1e-3); Assert.AreEqual(+1, solution[1], 1e-3); double expectedMinimum = function.Function(solver.Solution); Assert.AreEqual(expectedMinimum, minimum); }
public void ConstructorTest1() { Func <double[], double> function = // min f(x) = 10 * (x+1)^2 + y^2 x => 10.0 * Math.Pow(x[0] + 1.0, 2.0) + Math.Pow(x[1], 2.0); Subplex solver = new Subplex(2, function); Assert.IsTrue(solver.Minimize()); double minimum = solver.Value; double[] solution = solver.Solution; Assert.AreEqual(0, minimum, 1e-10); Assert.AreEqual(-1, solution[0], 1e-5); Assert.AreEqual(0, solution[1], 1e-5); double expectedMinimum = function(solver.Solution); Assert.AreEqual(expectedMinimum, minimum); }
public void ConstructorTest4() { // Weak version of Rosenbrock's problem. var function = new NonlinearObjectiveFunction(2, x => Math.Pow(x[0] * x[0] - x[1], 2.0) + Math.Pow(1.0 + x[0], 2.0)); Subplex solver = new Subplex(function); Assert.IsTrue(solver.Minimize()); double minimum = solver.Value; double[] solution = solver.Solution; Assert.AreEqual(2, solution.Length); Assert.AreEqual(0, minimum, 1e-10); Assert.AreEqual(-1, solution[0], 1e-5); Assert.AreEqual(1, solution[1], 1e-4); double expectedMinimum = function.Function(solver.Solution); Assert.AreEqual(expectedMinimum, minimum); }