Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs	(revision 13698)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs	(revision 13700)
@@ -33,5 +33,5 @@
   [StorableClass]
   [Item("RegressionEnsembleModel", "A regression model that contains an ensemble of multiple regression models")]
-  public class RegressionEnsembleModel : NamedItem, IRegressionEnsembleModel {
+  public sealed class RegressionEnsembleModel : NamedItem, IRegressionEnsembleModel {
 
     private List<IRegressionModel> models;
@@ -46,4 +46,16 @@
     }
 
+    [Storable]
+    private bool averageModelEstimates = true;
+    public bool AverageModelEstimates {
+      get { return averageModelEstimates; }
+      set {
+        if (averageModelEstimates != value) {
+          averageModelEstimates = value;
+          OnAverageModelEstimatesChanged();
+        }
+      }
+    }
+
     #region backwards compatiblity 3.3.5
     [Storable(Name = "models", AllowOneWay = true)]
@@ -54,8 +66,12 @@
 
     [StorableConstructor]
-    protected RegressionEnsembleModel(bool deserializing) : base(deserializing) { }
-    protected RegressionEnsembleModel(RegressionEnsembleModel original, Cloner cloner)
+    private RegressionEnsembleModel(bool deserializing) : base(deserializing) { }
+    private RegressionEnsembleModel(RegressionEnsembleModel original, Cloner cloner)
       : base(original, cloner) {
-      this.models = original.Models.Select(m => cloner.Clone(m)).ToList();
+      this.models = original.Models.Select(cloner.Clone).ToList();
+      this.averageModelEstimates = original.averageModelEstimates;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RegressionEnsembleModel(this, cloner);
     }
 
@@ -68,12 +84,9 @@
     }
 
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RegressionEnsembleModel(this, cloner);
-    }
-
     #region IRegressionEnsembleModel Members
     public void Add(IRegressionModel model) {
       models.Add(model);
     }
+
     public void Remove(IRegressionModel model) {
       models.Remove(model);
@@ -99,9 +112,24 @@
         int currentRow = rowsEnumerator.Current;
 
-        var filteredEstimates = models.Zip(estimatedValuesEnumerators.Current,
-          (m, e) => new { Model = m, EstimatedValue = e }).Where(f => modelSelectionPredicate(currentRow, f.Model));
+        var filteredEstimates = models.Zip(estimatedValuesEnumerators.Current, (m, e) => new { Model = m, EstimatedValue = e })
+                                      .Where(f => modelSelectionPredicate(currentRow, f.Model))
+                                      .Select(f => f.EstimatedValue).DefaultIfEmpty(double.NaN);
 
-        yield return filteredEstimates.Select(f => f.EstimatedValue).DefaultIfEmpty(double.NaN).Average();
+        yield return AggregateEstimatedValues(filteredEstimates);
       }
+    }
+
+    private double AggregateEstimatedValues(IEnumerable<double> estimatedValuesVector) {
+      if (AverageModelEstimates)
+        return estimatedValuesVector.Average();
+      else
+        return estimatedValuesVector.Sum();
+    }
+
+    public event EventHandler AverageModelEstimatesChanged;
+    private void OnAverageModelEstimatesChanged() {
+      var handler = AverageModelEstimatesChanged;
+      if (handler != null)
+        handler(this, EventArgs.Empty);
     }
     #endregion
@@ -110,5 +138,5 @@
     public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) {
       foreach (var estimatedValuesVector in GetEstimatedValueVectors(dataset, rows)) {
-        yield return estimatedValuesVector.Average();
+        yield return AggregateEstimatedValues(estimatedValuesVector);
       }
     }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionEnsembleModel.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionEnsembleModel.cs	(revision 13698)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Regression/IRegressionEnsembleModel.cs	(revision 13700)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -26,5 +26,9 @@
     void Add(IRegressionModel model);
     void Remove(IRegressionModel model);
+
     IEnumerable<IRegressionModel> Models { get; }
+
+    bool AverageModelEstimates { get; set; }
+    event EventHandler AverageModelEstimatesChanged;
 
     IEnumerable<IEnumerable<double>> GetEstimatedValueVectors(IDataset dataset, IEnumerable<int> rows);
