public ParallelGA(int GeneSize, int GenerationSize, int GenerationCarryover, int NumThreads, FittnessDelegate fittness)
        {
            this.generationSize      = GenerationSize;
            this._fittness           = fittness;
            this.generationCarryover = GenerationCarryover;
            this._numThreads         = NumThreads;

            this.CompletedTesting = new List <chromosome>();
            this.NextGeneration   = new List <chromosome>();

            //genrate rangom 0th generation
            Random rand = new Random();

            for (int i = 0; i < generationSize; i++)
            {
                chromosome c = new chromosome();
                c.gene = Enumerable.Range(0, GeneSize)
                         .Select(j => new Tuple <int, int>(rand.Next(GeneSize), j))
                         .OrderBy(k => k.Item1)
                         .Select(l => l.Item2).ToList();

                this.CurrentGeneration.Add(c);
            }

            this.generation          = 0;
            this.HighScore           = Int64.MaxValue;
            this.HighScoreGeneration = -1;
        }
        public StandardGA(int GeneSize, int GenerationSize, int GenerationCarryover, FittnessDelegate fittness)
        {
            this.generationSize      = GenerationSize;
            this.generationCarryover = GenerationCarryover;

            this._fittness = fittness;

            //create random generation 0
            Random rand = new Random();

            for (int i = 0; i < generationSize; i++)
            {
                chromosome c = new chromosome();
                c.gene = Enumerable.Range(0, GeneSize)
                         .Select(j => new Tuple <int, int>(rand.Next(GeneSize), j))
                         .OrderBy(k => k.Item1)
                         .Select(l => l.Item2).ToList();

                this.CurrentGeneration.Add(c);
            }

            this.generation          = 0;
            this.HighScore           = Int64.MaxValue;
            this.HighScoreGeneration = -1;
        }