public List <Individual> Cross(Individual individual1, Individual individual2)
        {
            var newIndividual1 = new Individual();
            var newIndividual2 = new Individual();

            _crossedIndividuals = new List <Individual>();
            Random random        = new Random();
            var    crossingPoint = random.Next(individual1.GetArgsVector().Count);

            for (var i = 0; i < crossingPoint; i++)
            {
                newIndividual1.AddArgument(individual1.GetArgsVector()[i]);
                newIndividual2.AddArgument(individual2.GetArgsVector()[i]);
            }

            for (var j = crossingPoint; j < individual1.GetArgsVector().Count; j++)
            {
                newIndividual1.AddArgument(individual2.GetArgsVector()[j]);
                newIndividual2.AddArgument(individual1.GetArgsVector()[j]);
            }
            _crossedIndividuals.Add(newIndividual1);
            _crossedIndividuals.Add(newIndividual2);

            return(_crossedIndividuals);
        }