コード例 #1
0
        public override List <int> Fill(int size)
        {
            List <int> solution;

            do
            {
                solution = Shuffler.GenereteShuffledOrder(size, rnd);
            } while (!pcConstraint.IsFeasible(solution));
            return(Shuffler.GenereteShuffledOrder(size, rnd));
        }
コード例 #2
0
 protected override void AddToNewPopulation <Element>(List <Individual <Element> > population, List <Individual <Element> > newPopulation)
 {
     if (size == -1)
     {
         size = Convert.ToInt32(population.Count * proportion);
     }
     for (int i = 0; i < population.Count; ++i)
     {
         var indices = Shuffler.GenereteShuffledOrder(population.Count, new Random());
         newPopulation.Add(new Individual <Element>(TournamentWinner(population, indices)));
     }
 }
コード例 #3
0
        private void RemoveItems(Individual <bool> individual)
        {
            Shuffler   shuffler = new Shuffler(this.seed);
            List <int> order;

            if (this.seed == null)
            {
                order = shuffler.GenereteShuffledOrder(populationSize, new Random());
            }
            else
            {
                order = shuffler.GenereteShuffledOrder(populationSize, new Random(this.seed.Value));
            }
            foreach (var geneIndex in order)
            {
                individual.Genotype[geneIndex] = false;
                if (isValid(individual))
                {
                    break;
                }
            }
        }
        protected override bool RunIteration(long itertionNumber, DateTime startTime)
        {
            List <int> optOrder = shuffler.GenereteShuffledOrder(optimizedSolution.Count, rnd);

            foreach (int order in optOrder)
            {
                optimizedSolution[order] = !optimizedSolution[order];
                if (!CheckNewBest(optimizedSolution, Evaluation.dEvaluate(optimizedSolution)))
                {
                    optimizedSolution[order] = !optimizedSolution[order];
                }
            }
            return(CheckNewBest(optimizedSolution, Evaluation.dEvaluate(optimizedSolution)));
        }