private static ITermination GetTermination()
        {
            int termination_n;

            do
            {
                Console.Clear();
                Console.WriteLine("Choose termination method:" +
                                  "\n[1] Fitness Stagnation" +
                                  "\n[2] Generation Number" +
                                  "\n[3] Time Evolving");
                try
                {
                    termination_n = int.Parse(Console.ReadKey().KeyChar.ToString());
                }
                catch
                {
                    termination_n = -1;
                }
            } while (!(1 <= termination_n && termination_n <= 3));

            return(ParameterParser.ParseTermination(termination_n, 100));
        }
        private static ICrossover GetCrossover()
        {
            int crossover_n;

            do
            {
                Console.Clear();
                Console.WriteLine("Choose crossover method:" +
                                  "\n[1] Uniform" +
                                  "\n[2] One Point" +
                                  "\n[3] Three Parent");
                try
                {
                    crossover_n = int.Parse(Console.ReadKey().KeyChar.ToString());
                }
                catch
                {
                    crossover_n = -1;
                }
            } while (!(1 <= crossover_n && crossover_n <= 3));

            return(ParameterParser.ParserCrossover(crossover_n, 0.5f));
        }
        private static IMutation GetMutation()
        {
            int mutation_n;

            do
            {
                Console.Clear();
                Console.WriteLine("Choose mutation method:" +
                                  "\n[1] Flip Bit" +
                                  "\n[2] Reverse Sequence" +
                                  "\n[3] Twors" +
                                  "\n[4] Uniform");
                try
                {
                    mutation_n = int.Parse(Console.ReadKey().KeyChar.ToString());
                }
                catch
                {
                    mutation_n = -1;
                }
            } while (!(1 <= mutation_n && mutation_n <= 4));

            return(ParameterParser.ParseMutation(mutation_n));
        }
        private static ISelection GetSelection()
        {
            int selection_n;

            do
            {
                Console.Clear();
                Console.WriteLine("Choose selection method" +
                                  "\n[1] Elite" +
                                  "\n[2] Roulette Wheel" +
                                  "\n[3] Stochastic Universal Sampling" +
                                  "\n[4] Tournament");
                try
                {
                    selection_n = int.Parse(Console.ReadKey().KeyChar.ToString());
                }
                catch
                {
                    selection_n = -1;
                }
            } while (!(1 <= selection_n && selection_n <= 4));

            return(ParameterParser.ParseSelection(selection_n));
        }