private void CreateNewPairIndividuals(int indexTo, Individual firstIndividual, Individual secondIndividual)
 {
     for (int i = 0; i < indexTo; i++)
     {
         int   secondIndividualPermutationElementAtCurrentIndexI = secondIndividual.Permutation.ElementAt(i);
         int[] hybridizationTmpArray = new int[indexTo];
         Array.Copy(firstIndividual.Permutation, hybridizationTmpArray, indexTo);
         if (WasHere(hybridizationTmpArray, secondIndividualPermutationElementAtCurrentIndexI))
         {
             Permutator.Swap(firstIndividual.Permutation, i, FindThisNumberInArray(firstIndividual.Permutation, secondIndividualPermutationElementAtCurrentIndexI));
             Permutator.SwapBeetweenArrays(firstIndividual.Permutation, secondIndividual.Permutation, i);
         }
     }
 }
 private void DoMutation()
 {
     for (int i = 0; i < POPULATION_SIZE; i++)
     {
         Individual tmp = individuals.ElementAt(i);
         for (int j = 0; j < Dimension; j++)
         {
             int randomNumber = random.Next(MAX_PROBABILITY);
             if (MUTATION_PROBABILITY > randomNumber)
             {
                 int randomIndex = random.Next(Dimension);
                 while (j == randomIndex)
                 {
                     randomIndex = random.Next(Dimension);
                 }
                 //MUTATE
                 Permutator.Swap(tmp.Permutation, j, randomIndex);
                 tmp.Cost = CostCounter.CountCost(tmp.Permutation);
             }
         }
     }
 }