Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs	(revision 15617)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs	(revision 15646)
@@ -67,4 +67,45 @@
     }
 
+    private static int GetBinCount(Solution solution) {
+      return solution.NrOfBins;
+    }
+
+    private static int GetNumberOfResidualSpaces(Solution solution) {
+      var cnt = 0;
+      foreach (var binPacking in solution.Bins) {
+        foreach (var item in ((BinPacking3D)binPacking).ExtremePoints) {
+          cnt += item.Value.Count();
+        }
+      }
+      return cnt;
+    }
+
+    public Tuple<int, double, int> Evaluate1(Solution solution) {
+
+
+      var res = Tuple.Create<int, double, int>(
+        GetBinCount(solution),
+        CalculateBinUtilizationFirstBin(solution),
+        GetNumberOfResidualSpaces(solution)
+        );
+
+      return res;
+    }
+
+    private static double CalculateBinUtilizationFirstBin(Solution solution) {
+      if (solution.NrOfBins <= 0) {
+        return 0.0;
+      }
+
+      double totalUsedSpace = 0;
+      double totalUsableSpace = 0;
+
+      totalUsableSpace += solution.Bins[0].BinShape.Volume;
+      totalUsedSpace += solution.Bins[0].Items.Sum(kvp => kvp.Value.Volume);
+
+      return totalUsedSpace / totalUsableSpace;
+    }
+
+
     #endregion
   }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs	(revision 15617)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs	(revision 15646)
@@ -21,4 +21,5 @@
 
 using HeuristicLab.Core;
+using System;
 
 namespace HeuristicLab.Problems.BinPacking3D {
@@ -34,4 +35,11 @@
     /// <returns>Returns the value of the evaluated solution depending on the implementation</returns>
     double Evaluate(Solution solution);
+
+    /// <summary>
+    /// Returns a tuple of (number of bins, bin utilization, number of residual spaces)
+    /// </summary>
+    /// <param name="solution"></param>
+    /// <returns></returns>
+    Tuple<int, double, int> Evaluate1(Solution solution);
   }
 }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs	(revision 15617)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs	(revision 15646)
@@ -84,4 +84,44 @@
     }
 
+    private static int GetBinCount(Solution solution) {
+      return solution.NrOfBins;
+    }
+
+    private static int GetNumberOfResidualSpaces(Solution solution) {
+      var cnt = 0;
+      foreach (var binPacking in solution.Bins) {
+        foreach (var item in ((BinPacking3D)binPacking).ExtremePoints) {
+          cnt += item.Value.Count();
+        }
+      }
+      return cnt;
+    }
+
+    public Tuple<int, double, int> Evaluate1(Solution solution) {
+
+
+      var res = Tuple.Create<int, double, int>(
+        GetBinCount(solution),
+        CalculateBinUtilizationFirstBin(solution),
+        GetNumberOfResidualSpaces(solution)
+        );
+
+      return res;
+    }
+
+    private static double CalculateBinUtilizationFirstBin(Solution solution) {
+      if (solution.NrOfBins <= 0) {
+        return 0.0;
+      }
+
+      double totalUsedSpace = 0;
+      double totalUsableSpace = 0;
+
+      totalUsableSpace += solution.Bins[0].BinShape.Volume;
+      totalUsedSpace += solution.Bins[0].Items.Sum(kvp => kvp.Value.Volume);
+
+      return totalUsedSpace / totalUsableSpace;
+    }
+
     #endregion
   }
