Accord.Tests.Interop.Math.LibBFGSComparisonTest.LibBFGSComparisonTest C# (CSharp) Method

LibBFGSComparisonTest() public method

public LibBFGSComparisonTest ( ) : Accord.Math.Optimization
return Accord.Math.Optimization
        public LibBFGSComparisonTest()
        {
            var list = new List<Specification>();

            list.Add(new Specification(2,
                (x) =>
                {
                    double a = x[1] - x[0] * x[0];
                    double b = 1 - x[0];
                    return b * b + 100 * a * a;
                },
                (x) =>
                {
                    double a = x[1] - x[0] * x[0];
                    double b = 1 - x[0];

                    double f0 = -2 * b - 400 * x[0] * a;
                    double f1 = 200 * a;

                    return new[] { f0, f1 };
                }, new[] { 0.0, 0 }));

            list.Add(new Specification(2,
                (x) => -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)),
                (x) => new double[] 
                {
                    // df/dx = {-2 e^(-    (x-1)^2) (x-1)}
                    2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1),

                    // df/dy = {-  e^(-1/2 (y-2)^2) (y-2)}
                    Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2)
                }, null));

            list.Add(new Specification(2,
                x => 10.0 * Math.Pow(x[0] + 1.0, 2.0) + Math.Pow(x[1], 2.0),
                x => new[] { 20 * (x[0] + 1), 2 * x[1] },
                new double[2]));

            list.Add(new Specification(3, // uses a constant value
                x => 10.0 * Math.Pow(x[0] + 1.0, 2.0) + Math.Pow(x[1], 2.0),
                x => new[] { 20 * (x[0] + 1), 2 * x[1], 0 },
                new double[3]));

            problems = list;
        }