Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 public Ages(
     int numberOfGenerations,
     CompareEvaluate compareTwo,
     CrossOver crossoverOp,
     Generate generator,
     List <IIndividual> population)
 {
     Init(numberOfGenerations,
          compareTwo,
          null,
          crossoverOp,
          generator,
          population);
 }
Esempio n. 3
0
 public Ages(
     int numberOfGenerations,
     CompareEvaluate compareTwo,
     CrossOver crossoverOp,
     Generate generator,
     int popSize)
 {
     Init(numberOfGenerations,
          compareTwo,
          null,
          crossoverOp,
          generator,
          null);
     _PopSize = popSize;
 }
Esempio n. 4
0
        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);
        }