Index: branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj
===================================================================
--- branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj	(revision 10082)
+++ branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj	(revision 10090)
@@ -72,4 +72,9 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="HeuristicLab.Operators-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>
@@ -118,4 +123,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="RealVectorConvexHullSolutionCacheAnalyzer.cs" />
     <Compile Include="DistanceMatrixToPoints.cs" />
     <Compile Include="VertexComparer.cs" />
@@ -161,4 +167,11 @@
     <None Include="Properties\AssemblyInfo.cs.frame" />
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Analysis.SolutionCaching\3.3\HeuristicLab.Analysis.SolutionCaching-3.3.csproj">
+      <Project>{a05aa272-14ec-4422-ac70-c9ca42164441}</Project>
+      <Name>HeuristicLab.Analysis.SolutionCaching-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/RealVectorConvexHullSolutionCacheAnalyzer.cs
===================================================================
--- branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/RealVectorConvexHullSolutionCacheAnalyzer.cs	(revision 10090)
+++ branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/RealVectorConvexHullSolutionCacheAnalyzer.cs	(revision 10090)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * 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
+
+using System.Linq;
+using HeuristicLab.Analysis.SolutionCaching;
+using HeuristicLab.Analysis.SolutionCaching.RealVectorEncoding;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Analysis.AlgorithmBehavior.Analyzers {
+  [StorableClass]
+  [Item("RealVectorConvexHullSolutionCacheAnalyzer", "Calculates convex hull-based measures from real vector solution caches.")]
+  public class RealVectorConvexHullSolutionCacheAnalyzer : SolutionCacheAnalyzer<RealVector, RealVectorSolutionInformation> {
+    [StorableConstructor]
+    private RealVectorConvexHullSolutionCacheAnalyzer(bool deserializing) : base(deserializing) { }
+    private RealVectorConvexHullSolutionCacheAnalyzer(RealVectorConvexHullSolutionCacheAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RealVectorConvexHullSolutionCacheAnalyzer(this, cloner);
+    }
+
+    public RealVectorConvexHullSolutionCacheAnalyzer() : base() { }
+
+    public override void ExecuteAnalysis(ResultCollection results, SolutionCache<RealVector, RealVectorSolutionInformation> solutionCache) {
+      int i = 0;
+      var sols = solutionCache.GetSolutionsFromGeneration(i);
+      DataTable dt = new DataTable("Convex Hull Volume over Generations");
+      DataRow dtVolumeRow = new DataRow("Volume");
+      DataRow dtNrPointsRow = new DataRow("Nr. of Points");
+      dt.Rows.Add(dtVolumeRow);
+      dt.Rows.Add(dtNrPointsRow);
+
+      while (sols.Count != 0) {
+        var input = sols.Select(x => ConvertPermutationToVertex(x)).ToArray();
+        var convexHull = LPHull.Calculate(input);
+        var volume = ConvexHullMeasures.CalculateVolume(convexHull);
+        dtVolumeRow.Values.Add(volume);
+        dtNrPointsRow.Values.Add(convexHull.Count);
+
+        sols = solutionCache.GetSolutionsFromGeneration(++i);
+      }
+
+      results.Add(new Result("Convex Hull Measures", dt));
+    }
+
+    private double[] ConvertPermutationToVertex(RealVector p) {
+      double[] vertex = p.Select(x => (double)x).ToArray();
+      return vertex;
+    }
+  }
+}
