Esempio n. 1
0
        public static void Run()
        {
            int seed = 1;
            var rng  = new Random(seed);

            OptimizationProblem optimizationProblem = new Ackley(2);

            var builder = new ParticleSwarmOptimizationAlgorithm.Builder(optimizationProblem);

            builder.SwarmSize             = 10;
            builder.PhiP                  = 2.0;
            builder.PhiG                  = 2.0;
            builder.Omega                 = 0.2;
            builder.ConvergenceCriterion  = new MaxFunctionEvaluations(10000);
            builder.Logger                = new NoLogger();
            builder.RandomNumberGenerator = rng;

            IOptimizationAlgorithm pso      = builder.Build();
            IOptimizationAnalyzer  analyzer = new OptimizationAnalyzer(pso);

            analyzer.Optimize();

            double expectedFitness = 0.0;
            var    expectedDesign  = Vector.CreateZero(optimizationProblem.Dimension);

            Assert.Equal(expectedFitness, pso.BestFitness, 3);
            Assert.True(Vector.CreateFromArray(pso.BestPosition).Equals(expectedDesign, 1E-4));
        }
Esempio n. 2
0
        public void Evaluate()
        {
            Ackley function = new Ackley();
            Vector v1       = new Vector(new double[] { 1, 2, 3 });
            Vector v2       = new Vector(new double[] { 0, 0, 0 });

            Assert.AreEqual(7.0164536, function.Evaluate(v1), 1e-8);
            Assert.AreEqual(0, function.Evaluate(v2), 1e-8);
        }
Esempio n. 3
0
        public static void Main(string[] args)
        {
            var param = new Parametrii();

            param.W  = 0.729;
            param.C1 = 1.49445;
            param.C2 = 1.49445;

            param.DimensiuneProblema = 3;

            // Rastrigin
            // param.Max = 5.12;
            // param.Min = -5.12;

            // Ackley
            // param.Min = -32.768;
            // param.Max = 32.768;

            // nGriewank
            param.Min = -600;
            param.Max = 600;

            param.NumarIteratii  = 1000;
            param.NumarParticule = 50;
            param.VitezaMaxima   = 1;

            ProblemaDeBaza p   = new Rastrigin();
            var            rez = p.Rezolva(param);

            Console.WriteLine("Cost: " + rez.Cost);
            foreach (var weight in rez.Pozitie)
            {
                Console.Write(weight + " ");
            }

            Console.WriteLine("\nRosenbrock");
            p   = new Rosenbrock();
            rez = p.Rezolva(param);

            Console.WriteLine("Cost: " + rez.Cost);
            foreach (var weight in rez.Pozitie)
            {
                Console.Write(weight + " ");
            }

            Console.WriteLine("\nAckley");
            p   = new Ackley();
            rez = p.Rezolva(param);

            Console.WriteLine("Cost: " + rez.Cost);
            foreach (var weight in rez.Pozitie)
            {
                Console.Write(weight + " ");
            }

            Console.WriteLine("\nGriewank");
            p   = new Griewank();
            rez = p.Rezolva(param);

            Console.WriteLine("Cost: " + rez.Cost);
            foreach (var weight in rez.Pozitie)
            {
                Console.Write(weight + " ");
            }
        }