private void Init( int numberOfGenerations, CompareEvaluate compareTwo, Evaluate evaluate, CrossOver crossoverOp, Generate generator, List <IIndividual> population) { Maximize = false; EliminatedPercent = 0.2f; ElitismPercent = 0.1f; _NumberOfGenerations = numberOfGenerations; if (population != null) { _Population = population .Select(i => i.ToEI()) .ToList(); _PopSize = population.Count; } _Tournament = null; _GenerationCount = 0; _Compare = compareTwo; _Eval = evaluate; _Generate = generator; _Crossover = crossoverOp; _Champions = new List <EvaluatedIndividual>(_NumberOfGenerations); VariationSettings = new VariationSettings(6, 4, 2); _Rng = new Random(); _mutationProbability = 0.6f; _mutationSigma = 1; Threads = 4; }
public Ages( int numberOfGenerations, CompareEvaluate compareTwo, CrossOver crossoverOp, Generate generator, List <IIndividual> population) { Init(numberOfGenerations, compareTwo, null, crossoverOp, generator, population); }
public Ages( int numberOfGenerations, CompareEvaluate compareTwo, CrossOver crossoverOp, Generate generator, int popSize) { Init(numberOfGenerations, compareTwo, null, crossoverOp, generator, null); _PopSize = popSize; }
public QuickTournament( IReadOnlyList <IIndividual> population, CompareEvaluate comparer, TournamentComplete callback, Random rng = null) { _Rng = rng ?? new Random(); //std vals _individuals = population.ToList(); _begin = 0; _end = _individuals.Count - 1; //piv vals var pivot = _Rng.Next(0, _individuals.Count); _pivotIndividual = _individuals[pivot]; _swap(_individuals, _end, pivot); //changing vals _pivotIndex = 0; _betterIndividuals = new List <IIndividual>(); _worseIndividuals = new List <IIndividual>(); _queue = new List <QuickSortPair>(); _queueIndex = 0; _queue.Add(new QuickSortPair(0, _end)); //callbacks Compare = comparer; //Roughly speakin is A > B OnCompleteCallBack = callback; //check var _done = false; _executing = false; CompCount = 0; DrawCount = 0; /*0-9,10-19,20-29,30-39,40-49,50-59, 60+*/ _histogram = new int[] { 0, 0, 0, 0, 0, 0, 0 }; Console.WriteLine("Current Pivot is " + _pivotIndividual.Name); }