Accord.Tests.Math.BroydenFletcherGoldfarbShannoTest.lbfgsTest C# (CSharp) Method

lbfgsTest() private method

private lbfgsTest ( ) : void
return void
        public void lbfgsTest()
        {
            Func<double[], double> f = rosenbrockFunction;
            Func<double[], double[]> g = rosenbrockGradient;

            Assert.AreEqual(104, f(new[] { -1.0, 2.0 }));


            int n = 2; // number of variables
            double[] initial = { -1.2, 1 };

            var lbfgs = new BroydenFletcherGoldfarbShanno(n, f, g);

            double expected = 0;
            Assert.IsTrue(lbfgs.Minimize(initial));

            bool success = lbfgs.Minimize();
            double actual = lbfgs.Value;
            Assert.IsTrue(success);

            Assert.AreEqual(expected, actual, 1e-10);

            double[] result = lbfgs.Solution;

            Assert.AreEqual(1.0, result[0], 1e-5);
            Assert.AreEqual(1.0, result[1], 1e-5);

            double y = f(result);
            double[] d = g(result);

            Assert.AreEqual(0, y, 1e-10);
            Assert.AreEqual(0, d[0], 1e-6);
            Assert.AreEqual(0, d[1], 1e-6);
        }