static void Mutate(ref ga_struct member)
 {
     int tsize = GA_TARGET.Length;
     int ipos = random.Next(tsize);
     int delta = random.Next(90) + 32;
     var mutated = member.Str.ToCharArray();
     Convert.ToChar((member.Str[ipos] + delta)%123).ToString().CopyTo(0, mutated, ipos, 1);
     member.Str = mutated.ToString();
 }
 static void InitPopulation(ref ga_vector population, ref ga_vector buffer)
 {
     int tsize = GA_TARGET.Length;
     for (int i = 0; i < GA_POPSIZE; i++)
     {
         var citizen = new ga_struct(string.Empty, 0);
         
         for (int j = 0; j < tsize; j++)
         {
             citizen.Str += Convert.ToChar(random.Next(90) + 32);
         }
         population.Add(citizen);
         buffer.Add(new ga_struct(string.Empty, 0));
     }
 }
 static int FitnessSort(ga_struct x, ga_struct y)
 {
     return x.Fitness.CompareTo(y.Fitness);
 }