Index: trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/DefaultClassificationAlgorithmOperators.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/DefaultClassificationAlgorithmOperators.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/DefaultClassificationAlgorithmOperators.cs	(revision 2344)
@@ -55,28 +55,7 @@
       testAccuracy.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
 
-      ConfusionMatrixEvaluator trainingConfusionMatrix = new ConfusionMatrixEvaluator();
-      trainingConfusionMatrix.Name = "TrainingConfusionMatrixEvaluator";
-      trainingConfusionMatrix.GetVariableInfo("ConfusionMatrix").ActualName = "TrainingConfusionMatrix";
-      trainingConfusionMatrix.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      trainingConfusionMatrix.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
-
-      ConfusionMatrixEvaluator validationConfusionMatrix = new ConfusionMatrixEvaluator();
-      validationConfusionMatrix.Name = "ValidationConfusionMatrixEvaluator";
-      validationConfusionMatrix.GetVariableInfo("ConfusionMatrix").ActualName = "ValidationConfusionMatrix";
-      validationConfusionMatrix.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";
-      validationConfusionMatrix.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";
-
-      ConfusionMatrixEvaluator testConfusionMatrix = new ConfusionMatrixEvaluator();
-      testConfusionMatrix.Name = "TestConfusionMatrixEvaluator";
-      testConfusionMatrix.GetVariableInfo("ConfusionMatrix").ActualName = "TestConfusionMatrix";
-      testConfusionMatrix.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
-      testConfusionMatrix.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
-
       individualProc.AddSubOperator(trainingAccuracy);
       individualProc.AddSubOperator(validationAccuracy);
       individualProc.AddSubOperator(testAccuracy);
-      individualProc.AddSubOperator(trainingConfusionMatrix);
-      individualProc.AddSubOperator(validationConfusionMatrix);
-      individualProc.AddSubOperator(testConfusionMatrix);
       return seq;
     }
@@ -92,4 +71,10 @@
       return op;
     }
+
+    internal static void SetModelData(IAnalyzerModel model, IScope scope) {
+      model.SetResult("TrainingAccuracy", scope.GetVariableValue<DoubleData>("TrainingAccuracy", true).Data);
+      model.SetResult("ValidationAccuracy", scope.GetVariableValue<DoubleData>("ValidationAccuracy", true).Data);
+      model.SetResult("TestAccuracy", scope.GetVariableValue<DoubleData>("TestAccuracy", true).Data);
+    }
   }
 }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs	(revision 2344)
@@ -34,4 +34,10 @@
       return DefaultClassificationAlgorithmOperators.CreatePostProcessingOperator();
     }
+
+    protected override IAnalyzerModel CreateGPModel() {
+      IAnalyzerModel model = base.CreateGPModel();
+      DefaultClassificationAlgorithmOperators.SetModelData(model, Engine.GlobalScope.SubScopes[0]);
+      return model;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs	(revision 2344)
@@ -27,6 +27,16 @@
 namespace HeuristicLab.GP.StructureIdentification.Classification {
   public class StandardGP : HeuristicLab.GP.StructureIdentification.StandardGP, IClassificationAlgorithm {
+    protected override IOperator CreateProblemInjector() {
+      return DefaultClassificationAlgorithmOperators.CreateProblemInjector();
+    }
+    
     protected override IOperator CreatePostProcessingOperator() {
       return DefaultClassificationAlgorithmOperators.CreatePostProcessingOperator();
+    }
+
+    protected override IAnalyzerModel CreateGPModel() {
+      IAnalyzerModel model = base.CreateGPModel();
+      DefaultClassificationAlgorithmOperators.SetModelData(model, Engine.GlobalScope.SubScopes[0]);
+      return model;
     }
   }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/DefaultTimeSeriesOperators.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/DefaultTimeSeriesOperators.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/DefaultTimeSeriesOperators.cs	(revision 2344)
@@ -94,4 +94,10 @@
       return seq;
     }
+
+    internal static void SetModelData(IAnalyzerModel model, IScope scope) {
+      model.SetResult("TrainingTheilInequalityCoefficient", scope.GetVariableValue<DoubleData>("TrainingTheilInequalityCoefficient", true).Data);
+      model.SetResult("ValidationTheilInequalityCoefficient", scope.GetVariableValue<DoubleData>("ValidationTheilInequalityCoefficient", true).Data);
+      model.SetResult("TestTheilInequalityCoefficient", scope.GetVariableValue<DoubleData>("TestTheilInequalityCoefficient", true).Data);
+    }
   }
 }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs	(revision 2344)
@@ -65,4 +65,9 @@
     }
 
+    protected override IAnalyzerModel CreateGPModel() {
+      IAnalyzerModel model = base.CreateGPModel();
+      DefaultTimeSeriesOperators.SetModelData(model, Engine.GlobalScope.SubScopes[0]);
+      return model;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs	(revision 2344)
@@ -63,4 +63,10 @@
       return injector;
     }
+
+    protected override IAnalyzerModel CreateGPModel() {
+      IAnalyzerModel model = base.CreateGPModel();
+      DefaultTimeSeriesOperators.SetModelData(model, Engine.GlobalScope.SubScopes[0]);
+      return model;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/DefaultStructureIdentificationOperators.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/DefaultStructureIdentificationOperators.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/DefaultStructureIdentificationOperators.cs	(revision 2344)
@@ -282,19 +282,24 @@
       model.TestSamplesEnd = bestModelScope.GetVariableValue<IntData>("TestSamplesEnd", true).Data;
 
-      model.TrainingMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TrainingMSE", false).Data;
-      model.ValidationMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("ValidationMSE", false).Data;
-      model.TestMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TestMSE", false).Data;
-      model.TrainingCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data;
-      model.ValidationCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data;
-      model.TestCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data;
-      model.TrainingMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data;
-      model.ValidationMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data;
-      model.TestMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data;
-      model.TrainingMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data;
-      model.ValidationMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data;
-      model.TestMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data;
-      model.TrainingVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data;
-      model.ValidationVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data;
-      model.TestVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data;
+      model.SetResult("TrainingMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("TrainingMSE", false).Data);
+      model.SetResult("ValidationMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("ValidationMSE", false).Data);
+      model.SetResult("TestMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("TestMSE", false).Data);
+      model.SetResult("TrainingCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data);
+      model.SetResult("ValidationCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data);
+      model.SetResult("TestCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data);
+      model.SetResult("TrainingVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data);
+      model.SetResult("ValidationVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data);
+      model.SetResult("TestVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data);
+
+      model.SetMetaData("EvaluatedSolutions", bestModelScope.GetVariableValue<DoubleData>("EvaluatedSolutions", true).Data);
+      IGeneticProgrammingModel gpModel = bestModelScope.GetVariableValue<IGeneticProgrammingModel>("FunctionTree", true);
+      model.SetMetaData("TreeSize", gpModel.Size);
+      model.SetMetaData("TreeHeight", gpModel.Height);
 
       ItemList evaluationImpacts = bestModelScope.GetVariableValue<ItemList>("VariableEvaluationImpacts", false);
Index: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs	(revision 2344)
@@ -146,7 +146,9 @@
     }
 
-    private IAnalyzerModel CreateGPModel() {
+    protected virtual IAnalyzerModel CreateGPModel() {
       IScope bestModelScope = Engine.GlobalScope.SubScopes[0];
-      return DefaultStructureIdentificationAlgorithmOperators.CreateGPModel(bestModelScope);
+      IAnalyzerModel model = DefaultStructureIdentificationAlgorithmOperators.CreateGPModel(bestModelScope);
+      model.SetMetaData("SelectionPressure", bestModelScope.GetVariableValue<DoubleData>("SelectionPressure", true).Data);
+      return model;
     }
   }
Index: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 2344)
@@ -145,7 +145,8 @@
     }
 
-    private IAnalyzerModel CreateGPModel() {
+    protected virtual IAnalyzerModel CreateGPModel() {
       IScope bestModelScope = Engine.GlobalScope.SubScopes[0];
-      return DefaultStructureIdentificationAlgorithmOperators.CreateGPModel(bestModelScope);
+      IAnalyzerModel model = DefaultStructureIdentificationAlgorithmOperators.CreateGPModel(bestModelScope);
+      return model;
     }
   }
Index: trunk/sources/HeuristicLab.LinearRegression/3.2/LinearRegression.cs
===================================================================
--- trunk/sources/HeuristicLab.LinearRegression/3.2/LinearRegression.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.LinearRegression/3.2/LinearRegression.cs	(revision 2344)
@@ -276,19 +276,23 @@
       IAnalyzerModel model = new AnalyzerModel();
       model.Predictor = bestModelScope.GetVariableValue<IPredictor>("Predictor", true);
-      model.TrainingMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TrainingQuality", false).Data;
-      model.ValidationMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("ValidationQuality", false).Data;
-      model.TestMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TestQuality", false).Data;
-      model.TrainingCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data;
-      model.ValidationCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data;
-      model.TestCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data;
-      model.TrainingMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data;
-      model.ValidationMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data;
-      model.TestMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data;
-      model.TrainingMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data;
-      model.ValidationMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data;
-      model.TestMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data;
-      model.TrainingVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data;
-      model.ValidationVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data;
-      model.TestVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data;
+      model.SetResult("TrainingMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("TrainingQuality", false).Data);
+      model.SetResult("ValidationMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("ValidationQuality", false).Data);
+      model.SetResult("TestMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("TestQuality", false).Data);
+      model.SetResult("TrainingCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data);
+      model.SetResult("ValidationCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data);
+      model.SetResult("TestCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data);
+      model.SetResult("TrainingVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data);
+      model.SetResult("ValidationVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data);
+      model.SetResult("TestVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data);
+
+      IGeneticProgrammingModel gpModel = bestModelScope.GetVariableValue<IGeneticProgrammingModel>("LinearRegressionModel", false);
+      model.SetMetaData("TreeSize", gpModel.Size);
+      model.SetMetaData("TreeHeight", gpModel.Height);
 
       HeuristicLab.DataAnalysis.Dataset ds = bestModelScope.GetVariableValue<Dataset>("Dataset", true);
Index: trunk/sources/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/DatabaseService.cs
===================================================================
--- trunk/sources/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/DatabaseService.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/DatabaseService.cs	(revision 2344)
@@ -38,5 +38,5 @@
       Connect();
       if (!ctx.DatabaseExists())
-        ctx.CreateDatabase();      
+        ctx.CreateDatabase();
     }
 
@@ -109,14 +109,19 @@
 
       using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
-        //get all double properties to save as modelResult
-        IEnumerable<PropertyInfo> modelResultInfos = model.GetType().GetProperties().Where(
-          info => info.PropertyType == typeof(double));
-        foreach (PropertyInfo modelResultInfo in modelResultInfos) {
-          Result result = GetOrCreateResult(modelResultInfo.Name);
-          double value = (double)modelResultInfo.GetValue(model, null);
-          ctx.ModelResults.InsertOnSubmit(new ModelResult(m, result, value));
+        foreach (KeyValuePair<string, double> pair in model.Results) {
+          Result result = GetOrCreateResult(pair.Key);
+          ctx.ModelResults.InsertOnSubmit(new ModelResult(m, result, pair.Value));
         }
         ctx.SubmitChanges();
       }
+
+      // code to store meta-information for models (gkronber (8.9.09))
+      //using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
+      //  foreach (KeyValuePair<string, double> pair in model.MetaData) {
+      //    MetaData metaData = GetOrCreateMetaData(pair.Key);
+      //    ctx.ModelMetaData.InsertOnSubmit(new ModelMetaData(m, metaData, pair.Value));
+      //  }
+      //  ctx.SubmitChanges();
+      //}
 
       using (ModelingDataContext ctx = new ModelingDataContext(connection)) {
Index: trunk/sources/HeuristicLab.Modeling/3.2/AnalyzerModel.cs
===================================================================
--- trunk/sources/HeuristicLab.Modeling/3.2/AnalyzerModel.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.Modeling/3.2/AnalyzerModel.cs	(revision 2344)
@@ -61,80 +61,28 @@
     }
 
-    private double trainingMSE;
-    public double TrainingMeanSquaredError {
-      get { return trainingMSE; }
-      set { trainingMSE = value; }
+    private Dictionary<string, double> results = new Dictionary<string, double>();
+    public IEnumerable<KeyValuePair<string, double>> Results {
+      get { return results; }
     }
 
-    private double validationMSE;
-    public double ValidationMeanSquaredError {
-      get { return validationMSE; }
-      set { validationMSE = value; }
+    public void SetResult(string name, double value) {
+      results.Add(name, value);
     }
 
-    private double testMSE;
-    public double TestMeanSquaredError {
-      get { return testMSE; }
-      set { testMSE = value; }
+    public double GetResult(string name) {
+      return results[name];
     }
 
-    public double TrainingMeanAbsolutePercentageError {
-      get;
-      set;
+    private Dictionary<string, object> metadata = new Dictionary<string, object>();
+    public IEnumerable<KeyValuePair<string, object>> MetaData {
+      get { return metadata; }
     }
 
-    public double ValidationMeanAbsolutePercentageError {
-      get;
-      set;
+    public void SetMetaData(string name, object value) {
+      metadata.Add(name, value);
     }
 
-    public double TestMeanAbsolutePercentageError {
-      get;
-      set;
-    }
-
-    public double TrainingMeanAbsolutePercentageOfRangeError {
-      get;
-      set;
-    }
-
-    public double ValidationMeanAbsolutePercentageOfRangeError {
-      get;
-      set;
-    }
-
-    public double TestMeanAbsolutePercentageOfRangeError {
-      get;
-      set;
-    }
-
-    public double TrainingCoefficientOfDetermination {
-      get;
-      set;
-    }
-
-    public double ValidationCoefficientOfDetermination {
-      get;
-      set;
-    }
-
-    public double TestCoefficientOfDetermination {
-      get;
-      set;
-    }
-
-    public double TrainingVarianceAccountedFor {
-      get;
-      set;
-    }
-
-    public double ValidationVarianceAccountedFor {
-      get;
-      set;
-    }
-
-    public double TestVarianceAccountedFor {
-      get;
-      set;
+    public object GetMetaData(string name) {
+      return metadata[name];
     }
 
Index: trunk/sources/HeuristicLab.Modeling/3.2/IAnalyzerModel.cs
===================================================================
--- trunk/sources/HeuristicLab.Modeling/3.2/IAnalyzerModel.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.Modeling/3.2/IAnalyzerModel.cs	(revision 2344)
@@ -27,8 +27,11 @@
 
 namespace HeuristicLab.Modeling {
-   public interface IAnalyzerModel {
+  public interface IAnalyzerModel {
+    IPredictor Predictor { get; set; }
     Dataset Dataset { get; set; }
     string TargetVariable { get; set; }
     IEnumerable<string> InputVariables { get; }
+    IEnumerable<KeyValuePair<string, double>> Results { get; }
+    IEnumerable<KeyValuePair<string, object>> MetaData { get; }
     int TrainingSamplesStart { get; set; }
     int TrainingSamplesEnd { get; set; }
@@ -37,19 +40,8 @@
     int TestSamplesStart { get; set; }
     int TestSamplesEnd { get; set; }
-    double TrainingMeanSquaredError { get; set; }
-    double ValidationMeanSquaredError { get; set; }
-    double TestMeanSquaredError { get; set; }
-    double TrainingMeanAbsolutePercentageError { get; set; }
-    double ValidationMeanAbsolutePercentageError { get; set; }
-    double TestMeanAbsolutePercentageError { get; set; }
-    double TrainingMeanAbsolutePercentageOfRangeError { get; set; }
-    double ValidationMeanAbsolutePercentageOfRangeError { get; set; }
-    double TestMeanAbsolutePercentageOfRangeError { get; set; }
-    double TrainingCoefficientOfDetermination { get; set; }
-    double ValidationCoefficientOfDetermination { get; set; }
-    double TestCoefficientOfDetermination { get; set; }
-    double TrainingVarianceAccountedFor { get; set; }
-    double ValidationVarianceAccountedFor { get; set; }
-    double TestVarianceAccountedFor { get; set; }
+    void SetResult(string name, double value);
+    double GetResult(string name);
+    void SetMetaData(string name, object data);
+    object GetMetaData(string name);
     double GetVariableEvaluationImpact(string variableName);
     double GetVariableQualityImpact(string variableName);
@@ -57,5 +49,4 @@
     void SetVariableEvaluationImpact(string variableName, double impact);
     void SetVariableQualityImpact(string variableName, double impact);
-    IPredictor Predictor { get; set; }
   }
 }
Index: trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs
===================================================================
--- trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs	(revision 2343)
+++ trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs	(revision 2344)
@@ -412,5 +412,5 @@
       qualImpactCalc.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
       qualImpactCalc.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
-      
+
       seqProc.AddSubOperator(predictorBuilder);
       seqProc.AddSubOperator(evalImpactCalc);
@@ -425,19 +425,22 @@
     protected internal virtual IAnalyzerModel CreateSVMModel(IScope bestModelScope) {
       AnalyzerModel model = new AnalyzerModel();
-      model.TrainingMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("Quality", false).Data;
-      model.ValidationMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("ValidationQuality", false).Data;
-      model.TestMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TestQuality", false).Data;
-      model.TrainingCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ActualTrainingR2", false).Data;
-      model.ValidationCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data;
-      model.TestCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data;
-      model.TrainingMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ActualTrainingMAPE", false).Data;
-      model.ValidationMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data;
-      model.TestMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data;
-      model.TrainingMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ActualTrainingMAPRE", false).Data;
-      model.ValidationMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data;
-      model.TestMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data;
-      model.TrainingVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ActualTrainingVAF", false).Data;
-      model.ValidationVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data;
-      model.TestVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data;
+      model.SetResult("TrainingMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("Quality", false).Data);
+      model.SetResult("ValidationMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("ValidationQuality", false).Data);
+      model.SetResult("TestMeanSquaredError", bestModelScope.GetVariableValue<DoubleData>("TestQuality", false).Data);
+      model.SetResult("TrainingCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("ActualTrainingR2", false).Data);
+      model.SetResult("ValidationCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data);
+      model.SetResult("TestCoefficientOfDetermination", bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("ActualTrainingMAPE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageError", bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data);
+      model.SetResult("TrainingMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("ActualTrainingMAPRE", false).Data);
+      model.SetResult("ValidationMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data);
+      model.SetResult("TestMeanAbsolutePercentageOfRangeError", bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data);
+      model.SetResult("TrainingVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("ActualTrainingVAF", false).Data);
+      model.SetResult("ValidationVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data);
+      model.SetResult("TestVarianceAccountedFor", bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data);
+
+      model.SetMetaData("Cost", bestModelScope.GetVariableValue<DoubleData>("Cost", false).Data);
+      model.SetMetaData("Nu", bestModelScope.GetVariableValue<DoubleData>("Nu", false).Data);
 
       HeuristicLab.DataAnalysis.Dataset ds = bestModelScope.GetVariableValue<Dataset>("Dataset", true);
