public void GA_Start()
        {
            string          filePath    = @"D:\PhDWorkwc\PhDWorks\trunk\trunk\ResearchProgramming\DeterministicApproach-GA\StatisticalApproach-GA-NewFlow\bin\Debug\OUT\STDGA\bestmove";
            string          output      = null;
            LocalFileAccess lfa         = new LocalFileAccess();
            double          bestFitness = -1;
            int             generation  = 0;

            FitnessEvaVect();
            PopulationGen();
            bestFitness = enVar.population.OrderByDescending(x => x.Value).First().Value;
            Console.WriteLine("{0},{1}", generation, bestFitness);
            output = "gen: " + generation + " Fitness: " + bestFitness;
            lfa.StoreListToLinesAppend(filePath, new List <string>()
            {
                output
            });
            while (generation <= 500)
            {
                Reproduction();
                FitnessEvaVect();
                PopulationGen();
                bestFitness = enVar.population.OrderByDescending(x => x.Value).First().Value;

                enVar.genFitRecord[0] = generation;
                enVar.genFitRecord[1] = bestFitness;
                generation++;
                Console.WriteLine("{0},{1}", generation, bestFitness);
                output = "gen: " + generation + " Fitness: " + bestFitness;
                lfa.StoreListToLinesAppend(filePath, new List <string>()
                {
                    output
                });
                enVar.continueIndicate = false;
                while (enVar.continueIndicate == false)
                {
                    ;
                }
            }
            enVar.finishIndicate = true;
        }
        public async Task <int> Invoke(EnvironmentVar enVar)
        {
            Dictionary <string, object> sutParam = SUT.SelectSUT(_selectSUT);

            sutParam["SUTPath"] = _sutPath;
            _record.sutInfo     = sutParam;
            Task taskInitialSUT = Task.Run(() => {
                LocalFileAccess lfa = new LocalFileAccess();
                List <string> list  = new List <string>();
                lfa.StoreLinesToList(_sutPath.ToString(), list);
                DataTable dt = new DataTable();
                dt.Columns.Add("Input", Type.GetType("System.String"));
                for (int i = 0; i < (int)sutParam["NumOfCE"]; i++)
                {
                    dt.Columns.Add((i + 1).ToString(), Type.GetType("System.String"));
                }

                foreach (string s in list)
                {
                    int length = dt.Rows.Count;

                    if (length == 0)
                    {
                        int c             = Convert.ToInt32(s.Substring(s.IndexOf(' ', s.IndexOf(' ') + 1))) + 1;
                        object[] coverSeq = new object[(int)sutParam["NumOfCE"] + 1];
                        for (int i = 0; i < coverSeq.Length; i++)
                        {
                            coverSeq[i] = 0.0;
                        }
                        coverSeq[c] = 1.0;
                        coverSeq[0] = s.Substring(0, s.IndexOf(' ', s.IndexOf(' ') + 1));
                        dt.Rows.Add(
                            coverSeq
                            );
                    }
                    else if (s.Substring(0, s.IndexOf(' ', s.IndexOf(' ') + 1))
                             == dt.Rows[length - 1].ItemArray[0].ToString())
                    {
                        int c = Convert.ToInt32(s.Substring(s.IndexOf(' ', s.IndexOf(' ') + 1) + 1)) + 1;
                        dt.Rows[length - 1][c] = 1.0;
                    }
                    else
                    {
                        int c             = Convert.ToInt32(s.Substring(s.IndexOf(' ', s.IndexOf(' ') + 1))) + 1;
                        object[] coverSeq = new object[(int)sutParam["NumOfCE"] + 1];
                        for (int i = 0; i < coverSeq.Length; i++)
                        {
                            coverSeq[i] = 0.0;
                        }
                        coverSeq[c] = 1.0;
                        coverSeq[0] = s.Substring(0, s.IndexOf(' ', s.IndexOf(' ') + 1));
                        dt.Rows.Add(
                            coverSeq
                            );
                    }
                }
                sutParam["Map"] = dt.AsEnumerable()
                                  .ToDictionary <DataRow, string, double[]>(
                    row => row.Field <string>(0),
                    row =>
                {
                    double[] coverSeq = new double[(int)sutParam["NumOfCE"]];
                    for (int i = 0; i < (int)sutParam["NumOfCE"]; i++)
                    {
                        coverSeq[i] = Convert.ToDouble(row.ItemArray[i + 1]);
                    }
                    return(coverSeq);
                });
            });

            await taskInitialSUT;

            await _next(enVar);

            Console.WriteLine("All tasks are done");
            return(0);
        }