Index: /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs
===================================================================
--- /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs	(revision 15674)
+++ /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs	(revision 15675)
@@ -23,4 +23,5 @@
 using System.Linq;
 using System.Threading;
+using HeuristicLab.Algorithms.DataAnalysis.GradientBoostedTrees;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -52,66 +53,84 @@
 
     #region ParameterProperties
-    public IFixedValueParameter<IntValue> IterationsParameter {
+    public IFixedValueParameter<IntValue> IterationsParameter
+    {
       get { return (IFixedValueParameter<IntValue>)Parameters[IterationsParameterName]; }
     }
-    public IFixedValueParameter<IntValue> MaxSizeParameter {
+    public IFixedValueParameter<IntValue> MaxSizeParameter
+    {
       get { return (IFixedValueParameter<IntValue>)Parameters[MaxSizeParameterName]; }
     }
-    public IFixedValueParameter<DoubleValue> NuParameter {
+    public IFixedValueParameter<DoubleValue> NuParameter
+    {
       get { return (IFixedValueParameter<DoubleValue>)Parameters[NuParameterName]; }
     }
-    public IFixedValueParameter<DoubleValue> RParameter {
+    public IFixedValueParameter<DoubleValue> RParameter
+    {
       get { return (IFixedValueParameter<DoubleValue>)Parameters[RParameterName]; }
     }
-    public IFixedValueParameter<DoubleValue> MParameter {
+    public IFixedValueParameter<DoubleValue> MParameter
+    {
       get { return (IFixedValueParameter<DoubleValue>)Parameters[MParameterName]; }
     }
-    public IFixedValueParameter<IntValue> SeedParameter {
+    public IFixedValueParameter<IntValue> SeedParameter
+    {
       get { return (IFixedValueParameter<IntValue>)Parameters[SeedParameterName]; }
     }
-    public FixedValueParameter<BoolValue> SetSeedRandomlyParameter {
+    public FixedValueParameter<BoolValue> SetSeedRandomlyParameter
+    {
       get { return (FixedValueParameter<BoolValue>)Parameters[SetSeedRandomlyParameterName]; }
     }
-    public IConstrainedValueParameter<ILossFunction> LossFunctionParameter {
+    public IConstrainedValueParameter<ILossFunction> LossFunctionParameter
+    {
       get { return (IConstrainedValueParameter<ILossFunction>)Parameters[LossFunctionParameterName]; }
     }
-    public IFixedValueParameter<IntValue> UpdateIntervalParameter {
+    public IFixedValueParameter<IntValue> UpdateIntervalParameter
+    {
       get { return (IFixedValueParameter<IntValue>)Parameters[UpdateIntervalParameterName]; }
     }
-    public IFixedValueParameter<BoolValue> CreateSolutionParameter {
-      get { return (IFixedValueParameter<BoolValue>)Parameters[CreateSolutionParameterName]; }
+    private IFixedValueParameter<EnumValue<ModelStorage>> CreateSolutionParameter
+    {
+      get { return (IFixedValueParameter<EnumValue<ModelStorage>>)Parameters[CreateSolutionParameterName]; }
     }
     #endregion
 
     #region Properties
-    public int Iterations {
+    public int Iterations
+    {
       get { return IterationsParameter.Value.Value; }
       set { IterationsParameter.Value.Value = value; }
     }
-    public int Seed {
+    public int Seed
+    {
       get { return SeedParameter.Value.Value; }
       set { SeedParameter.Value.Value = value; }
     }
-    public bool SetSeedRandomly {
+    public bool SetSeedRandomly
+    {
       get { return SetSeedRandomlyParameter.Value.Value; }
       set { SetSeedRandomlyParameter.Value.Value = value; }
     }
-    public int MaxSize {
+    public int MaxSize
+    {
       get { return MaxSizeParameter.Value.Value; }
       set { MaxSizeParameter.Value.Value = value; }
     }
-    public double Nu {
+    public double Nu
+    {
       get { return NuParameter.Value.Value; }
       set { NuParameter.Value.Value = value; }
     }
-    public double R {
+    public double R
+    {
       get { return RParameter.Value.Value; }
       set { RParameter.Value.Value = value; }
     }
-    public double M {
+    public double M
+    {
       get { return MParameter.Value.Value; }
       set { MParameter.Value.Value = value; }
     }
-    public bool CreateSolution {
+    public ModelStorage CreateSolution
+    {
       get { return CreateSolutionParameter.Value.Value; }
       set { CreateSolutionParameter.Value.Value = value; }
@@ -120,9 +139,11 @@
 
     #region ResultsProperties
-    private double ResultsBestQuality {
+    private double ResultsBestQuality
+    {
       get { return ((DoubleValue)Results["Best Quality"].Value).Value; }
       set { ((DoubleValue)Results["Best Quality"].Value).Value = value; }
     }
-    private DataTable ResultsQualities {
+    private DataTable ResultsQualities
+    {
       get { return ((DataTable)Results["Qualities"].Value); }
     }
@@ -152,5 +173,5 @@
       Parameters.Add(new FixedValueParameter<IntValue>(UpdateIntervalParameterName, "", new IntValue(100)));
       Parameters[UpdateIntervalParameterName].Hidden = true;
-      Parameters.Add(new FixedValueParameter<BoolValue>(CreateSolutionParameterName, "Flag that indicates if a solution should be produced at the end of the run", new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<EnumValue<ModelStorage>>(CreateSolutionParameterName, "Flag that indicates what kind of solution should be produced at the end of the run", new EnumValue<ModelStorage>(ModelStorage.Parameter)));
       Parameters[CreateSolutionParameterName].Hidden = true;
 
@@ -164,4 +185,6 @@
       // BackwardsCompatibility3.4
       #region Backwards compatible code, remove with 3.5
+
+      #region LossFunction
       // parameter type has been changed
       var lossFunctionParam = Parameters[LossFunctionParameterName] as ConstrainedValueParameter<StringValue>;
@@ -182,4 +205,17 @@
       }
       #endregion
+
+      #region CreateSolution
+      // parameter type has been changed
+      var createSolutionParam = Parameters[CreateSolutionParameterName] as FixedValueParameter<BoolValue>;
+      if (createSolutionParam != null) {
+        Parameters.Remove(CreateSolutionParameterName);
+
+        ModelStorage value = createSolutionParam.Value.Value ? ModelStorage.Parameter : ModelStorage.Quality;
+        Parameters.Add(new FixedValueParameter<EnumValue<ModelStorage>>(CreateSolutionParameterName, "Flag that indicates what kind of solution should be produced at the end of the run", new EnumValue<ModelStorage>(value)));
+        Parameters[CreateSolutionParameterName].Hidden = true;
+      }
+      #endregion
+      #endregion
     }
 
@@ -248,5 +284,5 @@
 
       // produce solution 
-      if (CreateSolution) {
+      if (CreateSolution == ModelStorage.Parameter) {
         var model = state.GetModel();
 
Index: /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelStorage.cs
===================================================================
--- /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelStorage.cs	(revision 15675)
+++ /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelStorage.cs	(revision 15675)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * and the BEACON Center for the Study of Evolution in Action.
+ * 
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Algorithms.DataAnalysis.GradientBoostedTrees {
+
+  /// <summary>
+  /// Defines what part of the Model should be stored.
+  /// Quality - only the resulting Quality will be stored.
+  /// Parameter - only the parameters will be stored, the models can be calculated afterwards
+  /// Complete - the complete model will be stored (consider the amount of memory needed)
+  /// </summary>
+  public enum ModelStorage {
+    Quality,
+    Parameter,
+    Complete
+  }
+}
Index: /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj
===================================================================
--- /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 15674)
+++ /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 15675)
@@ -308,4 +308,5 @@
     <Compile Include="GradientBoostedTrees\LossFunctions\SquaredErrorLoss.cs" />
     <Compile Include="GradientBoostedTrees\GradientBoostedTreesSolution.cs" />
+    <Compile Include="GradientBoostedTrees\ModelStorage.cs" />
     <Compile Include="GradientBoostedTrees\RegressionTreeBuilder.cs" />
     <Compile Include="GradientBoostedTrees\RegressionTreeModel.cs" />
Index: /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs
===================================================================
--- /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs	(revision 15674)
+++ /branches/2883_GBTModelStorage/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs	(revision 15675)
@@ -26,5 +26,5 @@
   /// Plugin class for HeuristicLab.Algorithms.DataAnalysis plugin.
   /// </summary>
-  [Plugin("HeuristicLab.Algorithms.DataAnalysis", "Provides wrappers for data analysis algorithms implemented in external libraries (linear regression, linear discriminant analysis, k-means clustering, support vector classification and regression)", "3.4.11.15589")]
+  [Plugin("HeuristicLab.Algorithms.DataAnalysis", "Provides wrappers for data analysis algorithms implemented in external libraries (linear regression, linear discriminant analysis, k-means clustering, support vector classification and regression)", "3.4.11.15670")]
   [PluginFile("HeuristicLab.Algorithms.DataAnalysis-3.4.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.ALGLIB", "3.7.0")]
