private IItem CreateSolution()
        {
            var problemData           = ProblemData;
            var ds                    = problemData.Dataset;
            var targetVariable        = problemData.TargetVariable;
            var allowedInputVariables = problemData.AllowedInputVariables.ToArray();
            var trainingRows          = problemData.TrainingIndices.ToArray();

            lock (problemStateLocker) {
                var model = new GaussianProcessModel(ds, targetVariable, allowedInputVariables, trainingRows, bestHyperParameters, (IMeanFunction)meanFunc.Clone(), (ICovarianceFunction)covFunc.Clone());
                model.FixParameters();
                return(model.CreateRegressionSolution((IRegressionProblemData)ProblemData.Clone()));
            }
        }