public List <Chromosome> Cross(Chromosome chromosomeOne, Chromosome chromosomeTwo)
        {
            int numberOfGenes = chromosomeOne.Genes.Count;

            List <Gene> childListOne = new List <Gene>();
            List <Gene> childListTwo = new List <Gene>();

            chromosomeOne.Genes.ForEach(g => childListOne.Add(GeneGenerator.GetSpecificGene(g.Bits)));
            chromosomeTwo.Genes.ForEach(g => childListTwo.Add(GeneGenerator.GetSpecificGene(g.Bits)));

            Chromosome childChromosomeOne = ChromosomeGenerator.GetSpecificChromosome(childListOne);
            Chromosome childChromosomeTwo = ChromosomeGenerator.GetSpecificChromosome(childListTwo);

            //List<double> probabilitiesForGenes = GetProbabilitiesForGenes(numberOfGenes);
            for (int i = 0; i < numberOfGenes; i++)
            {
                int randomPlace = _rand.Next(0, childChromosomeOne.Genes[i].Bits.Length);
                for (int j = 0; j < childChromosomeOne.Genes[i].Bits.Length; j++)
                {
                    if (randomPlace > 0)
                    {
                        randomPlace -= 1;
                    }
                    else
                    {
                        int tempOne = childChromosomeOne.Genes[i].Bits[j];
                        int tempTwo = childChromosomeTwo.Genes[i].Bits[j];

                        if (tempOne != tempTwo)
                        {
                            childChromosomeOne.Genes[i].Bits[j] = tempTwo;
                            childChromosomeTwo.Genes[i].Bits[j] = tempOne;
                        }
                    }
                }
            }
            List <Chromosome> list = new List <Chromosome>();

            list.Add(childChromosomeOne);
            list.Add(childChromosomeTwo);
            return(list);
        }
        public Chromosome Mutate(Chromosome chromosome)
        {
            List <Gene> listOfGenes = new List <Gene>();

            chromosome.Genes.ForEach(g => listOfGenes.Add(GeneGenerator.GetSpecificGene(g.Bits)));
            Chromosome mutatedChromosome = ChromosomeGenerator.GetSpecificChromosome(listOfGenes);

            int numberOfGenes = mutatedChromosome.Genes.Count;

            for (int i = 0; i < numberOfGenes; i++)
            {
                int randomPlace = _rand.Next(0, mutatedChromosome.Genes[i].Bits.Length - 1);
                if (mutatedChromosome.Genes[i].Bits[randomPlace] == 0)
                {
                    mutatedChromosome.Genes[i].Bits[randomPlace] = 1;
                }
                else
                {
                    mutatedChromosome.Genes[i].Bits[randomPlace] = 0;
                }
            }
            return(mutatedChromosome);
        }