Esempio n. 1
0
        protected override List <IParticle> CreateParticles(SwarmCreationParameters parameters)
        {
            List <IParticle> particles = new List <IParticle>();

            for (UInt32 index = 0; index < parameters.NumberOfParameters; index++)
            {
                List <Double> newParameterList = new List <double>();
                List <Double> newSpeedsList    = new List <double>();
                this.CreateRandomsList(parameters.MaximumParameterValue, parameters.MinimumParameterValue, parameters.NumberOfParameters, ref newSpeedsList, ref newParameterList);
                ISolution newParticleSolution = new ClassicSolution(parameters.SolutionFunction, parameters.AuxData, parameters.MinimumParameterValue, parameters.MaximumParameterValue);
                newParticleSolution.Parameters = newParameterList;
                newParticleSolution.UpdateFitness();
                FrankensteinParticleCreationParameters creationParams = new FrankensteinParticleCreationParameters();
                creationParams.Speeds              = newSpeedsList;
                creationParams.Solution            = newParticleSolution;
                creationParams.InertiaMax          = this.InertiaMax;
                creationParams.InertiaMin          = this.InertiaMin;
                creationParams.InertiaMaxTime      = this.InertiaMaxTime;
                creationParams.FinalTopologyUpdate = this.FinalTopologyUpdate;
                creationParams.Particles           = this.Particles;
                int[] connectedIds = new int[parameters.NumberOfParameters];
                for (int i = 0; i < parameters.NumberOfParticles; i++)
                {
                    connectedIds[i] = i;
                }
                creationParams.ConnectedIds    = new LinkedList <int>(connectedIds);
                creationParams.RandomGenerator = this.RandomGenerator;
                particles.Add(new FrankensteinParticle(creationParams));
            }
            return(particles);
        }
Esempio n. 2
0
 protected void FillParameters(FrankensteinParticleCreationParameters parameters)
 {
     base.FillParameters((InertiaParticleCreationParameters)parameters);
     this.Particles           = parameters.Particles;
     this.ConnectedIds        = parameters.ConnectedIds;
     this.FinalTopologyUpdate = parameters.FinalTopologyUpdate;
     this.RandomGenerator     = parameters.RandomGenerator;
 }
        public void PrepareFrankensteinParticlesTests()
        {
            var mockedSolution = new Mock<ISolution>();
            mockedSolution.Name = "original";
            var copySolution = new Mock<ISolution>();
            copySolution.Name = "copy";
            mockedSolution.Setup(s => s.Fitness).Returns(1.0);
            copySolution.Setup(s => s.Fitness).Returns(2.0);
            mockedSolution.Setup(s => s.Copy()).Returns(copySolution.Object);
            mockedSolution.Setup(s => s.Parameters).Returns(new List<Double>(new Double[3] { 1.0, 1.0, 1.0 }));
            copySolution.Setup(s => s.Parameters).Returns(new List<Double>(new Double[3] { 1.0, 1.0, 1.0 }));

            this.MockedSolution = mockedSolution;
            this.CopySolution = copySolution;
            this.Speeds = new List<Double>(new Double[3] { 1.0, 1.0, 1.0 });

            FrankensteinParticleCreationParameters creationParams = new FrankensteinParticleCreationParameters();
            creationParams.Speeds = this.Speeds;
            creationParams.Solution = mockedSolution.Object;
            creationParams.InertiaMax = 1.0;
            creationParams.InertiaMin = 1.0;
            creationParams.InertiaMaxTime = 0;
            creationParams.Particles = this.CreateMockedConnectedParticles();
            int[] ids = new int[7];
            for (int i = 0; i < 7; i++)
            {
                ids[i] = i;
            }
            Random gen = new Random();
            creationParams.RandomGenerator = gen;
            creationParams.FinalTopologyUpdate = 8;
            creationParams.ConnectedIds = new LinkedList<int>(ids);
            this.Particle = new FrankensteinParticle(creationParams);
            this.Particle.Id = 0;
            creationParams.Particles.Insert(0, this.Particle);
        }
Esempio n. 4
0
 public FrankensteinParticle(FrankensteinParticleCreationParameters parameters)
 {
     this.Id = Particle.CurrentId;
     this.CurrentIteration = 0;
     this.FillParameters(parameters);
 }