示例#1
0
        public static void Test()
        {
            Func <double, double> f = x => x * x;
            Func <double, double> q = x => f(x - 3) + 2;
            var swarm = new Swarm1D();

            swarm.Minimize(q, -100, 100, 1000, out var X, out var Y);
            Console.WriteLine("X = {0}; Y = {1}", X, Y);
            Console.ReadLine();
        }
示例#2
0
        public void MaximizeInterval()
        {
            var swarm = new Swarm1D();

            swarm.Maximize(
                FNegate,
                (-5, 5),
                IterationCount: 1000,
                out var X,
                out var Y);
            Assert.That.Value(X).IsEqual(-__X0, 5.0e-4);
            Assert.That.Value(Y).IsEqual(-__Y0, 1.0e-7);
        }
示例#3
0
        public void MinimizeInterval()
        {
            var swarm = new Swarm1D();

            swarm.Minimize(
                F,
                (-100, 100),
                IterationCount: 1000,
                out var X,
                out var Y);
            Assert.That.Value(X).IsEqual(__X0, 2e-8);
            Assert.That.Value(Y).IsEqual(__Y0);
        }
示例#4
0
        public void Maximize()
        {
            var swarm = new Swarm1D();

            swarm.Maximize(
                FNegate,
                MinX: -5,
                MaxX: 5,
                IterationCount: 10000,
                out var X,
                out var Y);
            Assert.That.Value(X).IsEqual(-__X0, 6e-5);
            Assert.That.Value(Y).IsEqual(-__Y0, 1e-9);
        }
示例#5
0
        public void Minimize()
        {
            var swarm = new Swarm1D();

            swarm.Minimize(
                F,
                MinX: -100,
                MaxX: 100,
                IterationCount: 1000,
                out var X,
                out var Y);
            Assert.That.Value(X).IsEqual(__X0, 2.0e-8);
            Assert.That.Value(Y).IsEqual(__Y0);
        }