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