private ClassificationEnsembleSolution(ClassificationEnsembleSolution original, Cloner cloner)
      : base(original, cloner) {
      trainingPartitions = new Dictionary<IClassificationModel, IntRange>();
      testPartitions = new Dictionary<IClassificationModel, IntRange>();
      foreach (var pair in original.trainingPartitions) {
        trainingPartitions[cloner.Clone(pair.Key)] = cloner.Clone(pair.Value);
      }
      foreach (var pair in original.testPartitions) {
        testPartitions[cloner.Clone(pair.Key)] = cloner.Clone(pair.Value);
      }

      trainingEvaluationCache = new Dictionary<int, double>(original.ProblemData.TrainingIndices.Count());
      testEvaluationCache = new Dictionary<int, double>(original.ProblemData.TestIndices.Count());

      classificationSolutions = cloner.Clone(original.classificationSolutions);
      RegisterClassificationSolutionsEventHandler();
    }
        private ClassificationEnsembleSolution(ClassificationEnsembleSolution original, Cloner cloner)
            : base(original, cloner)
        {
            trainingPartitions = new Dictionary <IClassificationModel, IntRange>();
            testPartitions     = new Dictionary <IClassificationModel, IntRange>();
            foreach (var pair in original.trainingPartitions)
            {
                trainingPartitions[cloner.Clone(pair.Key)] = cloner.Clone(pair.Value);
            }
            foreach (var pair in original.testPartitions)
            {
                testPartitions[cloner.Clone(pair.Key)] = cloner.Clone(pair.Value);
            }

            trainingEvaluationCache = new Dictionary <int, double>(original.ProblemData.TrainingIndices.Count());
            testEvaluationCache     = new Dictionary <int, double>(original.ProblemData.TestIndices.Count());

            classificationSolutions = cloner.Clone(original.classificationSolutions);
            RegisterClassificationSolutionsEventHandler();
        }