public void FindBestData()
        {
            List <GenomeScore> bestScores = new List <GenomeScore>();

            for (int i = 0; i < m_instanceCount; i++)
            {
                GenomeScore score = new GenomeScore(m_instances[i].GenomeData, m_results[i]);

                if (bestScores.Count < m_surviveCount)
                {
                    bestScores.Add(score);
                }
                else
                {
                    for (int e = 0; e < bestScores.Count; e++)
                    {
                        if (score.score > bestScores[e].score)
                        {
                            bestScores.Insert(e, score);
                            bestScores.RemoveAt(bestScores.Count - 1);
                            break;
                        }
                    }
                }
            }

            m_currentGenomes.Clear();

            for (int i = 0; i < bestScores.Count; i++)
            {
                m_currentGenomes.Add(bestScores[i].genome);
            }
        }
        public GenomeScore ExtractBestData()
        {
            GenomeScore genomeScore = new GenomeScore(m_instances[0].GenomeData, m_results[0]);

            for (int i = 1; i < m_instanceCount; i++)
            {
                if (m_results[i] > genomeScore.score)
                {
                    genomeScore = new GenomeScore(m_instances[i].GenomeData, m_results[i]);
                }
            }

            return(genomeScore);
        }