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)); }
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); }
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 + " "); } }