Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.Designer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.Designer.cs	(revision 10006)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.Designer.cs	(revision 10007)
@@ -25,4 +25,5 @@
     private void InitializeComponent() {
       this.testConvexHullButton = new System.Windows.Forms.Button();
+      this.resultsTextBox = new System.Windows.Forms.TextBox();
       this.SuspendLayout();
       // 
@@ -31,9 +32,20 @@
       this.testConvexHullButton.Location = new System.Drawing.Point(3, 3);
       this.testConvexHullButton.Name = "testConvexHullButton";
-      this.testConvexHullButton.Size = new System.Drawing.Size(97, 23);
+      this.testConvexHullButton.Size = new System.Drawing.Size(130, 23);
       this.testConvexHullButton.TabIndex = 0;
-      this.testConvexHullButton.Text = "Test Convex Hull";
+      this.testConvexHullButton.Text = "Calculate Convex Hull";
       this.testConvexHullButton.UseVisualStyleBackColor = true;
       this.testConvexHullButton.Click += new System.EventHandler(this.testConvexHullButton_Click);
+      // 
+      // resultsTextBox
+      // 
+      this.resultsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.resultsTextBox.Location = new System.Drawing.Point(3, 33);
+      this.resultsTextBox.Multiline = true;
+      this.resultsTextBox.Name = "resultsTextBox";
+      this.resultsTextBox.Size = new System.Drawing.Size(638, 254);
+      this.resultsTextBox.TabIndex = 1;
       // 
       // ConvexHullView
@@ -41,8 +53,10 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.resultsTextBox);
       this.Controls.Add(this.testConvexHullButton);
       this.Name = "ConvexHullView";
-      this.Size = new System.Drawing.Size(486, 175);
+      this.Size = new System.Drawing.Size(641, 290);
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -51,4 +65,5 @@
 
     private System.Windows.Forms.Button testConvexHullButton;
+    private System.Windows.Forms.TextBox resultsTextBox;
 
   }
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.cs	(revision 10006)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/ConvexHullView.cs	(revision 10007)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Linq;
 using System.Windows.Forms;
@@ -26,5 +27,4 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using MIConvexHull;
 
 namespace HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views {
@@ -48,18 +48,17 @@
 
     private void testConvexHullButton_Click(object sender, System.EventArgs e) {
-      var sols = Content.GetSolutionsFromGeneration(1);
-      var input = sols.Select(x => ConvertPermutationToVertex(x.GetPermutation()));
-      //TODO: HyperHull.Calculate(Content);
-      //HyperHull.CalculateUsingSMO(Content.GetSolutionsFromGeneration(1));
+      for (int i = 0; i < 20; i++) {
+        var sols = Content.GetSolutionsFromGeneration(i);
 
-
-      //var result = ConvexHull.Create(input);
-
-      //TODO
+        var input = sols.Select(x => ConvertPermutationToVertex(x.GetPermutation())).ToArray();
+        var convexHull = HyperHull.CalculateUsingSMO(input);
+        resultsTextBox.Text += "Nr. of Points in Generation " + i + ": " + convexHull.Count + Environment.NewLine;
+        resultsTextBox.Text += "Volume of Convex Hull in Generation " + i + " is: " +
+                               ConvexHullMeasures.CalculateVolume(convexHull) + Environment.NewLine;
+      }
     }
 
-    private DefaultVertex ConvertPermutationToVertex(Permutation p) {
-      DefaultVertex vertex = new DefaultVertex();
-      vertex.Position = p.Select(x => (double)x).ToArray();
+    private double[] ConvertPermutationToVertex(Permutation p) {
+      double[] vertex = p.Select(x => (double)x).ToArray();
       return vertex;
     }
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ConvexHullMeasures.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ConvexHullMeasures.cs	(revision 10007)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ConvexHullMeasures.cs	(revision 10007)
@@ -0,0 +1,53 @@
+﻿#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.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Analysis.AlgorithmBehavior.Analyzers {
+  public static class ConvexHullMeasures {
+    //TODO: Calculates only the volumne of a d-simplex
+    public static double CalculateVolume(List<double[]> hyperHull) {
+      double[,] diffs = new double[hyperHull.Count, hyperHull.Count];
+
+      for (int i = 0; i < hyperHull.Count; i++) {
+        for (int j = 0; j < hyperHull.Count; j++) {
+          diffs[i, j] = CalculateVectorDiff(hyperHull[i], hyperHull[j]);
+        }
+      }
+
+      double det = alglib.rmatrixdet(diffs);
+      double result = det / hyperHull[0].Count().Fact();
+
+      return result;
+    }
+
+    private static double CalculateVectorDiff(double[] vector1, double[] vector2) {
+      double result = 0.0;
+
+      for (int i = 0; i < vector1.Length; i++) {
+        result += vector1[i] - vector2[i];
+      }
+
+      return result;
+    }
+  }
+}
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 10006)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj	(revision 10007)
@@ -38,4 +38,9 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="ALGLIB-3.7.0, Version=3.7.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\ALGLIB-3.7.0.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="HeuristicLab.Algorithms.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -126,4 +131,6 @@
     <Compile Include="CombinedOperators\QAPAfterCrossoverCombinedOperator.cs" />
     <Compile Include="HyperHull.cs" />
+    <Compile Include="ConvexHullMeasures.cs" />
+    <Compile Include="IntegerExtensions.cs" />
     <Compile Include="SolutionsCaching\AfterCrossoverSolutionCachingAnalyzer.cs" />
     <Compile Include="SolutionsCaching\SolutionCachingAnalyzer.cs" />
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/IntegerExtensions.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/IntegerExtensions.cs	(revision 10007)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/IntegerExtensions.cs	(revision 10007)
@@ -0,0 +1,36 @@
+﻿#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
+
+namespace HeuristicLab.Analysis.AlgorithmBehavior.Analyzers {
+  public static class IntegerExtensions {
+    public static int Fact(this int n) {
+      if (n == 0) return 1;
+      if (n == 1) return 1;
+      int result = 1;
+
+      for (int i = 2; i <= n; i++) {
+        result *= i;
+      }
+      return result;
+    }
+
+  }
+}
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/SolutionsCaching/PermutationInformation.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/SolutionsCaching/PermutationInformation.cs	(revision 10006)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/SolutionsCaching/PermutationInformation.cs	(revision 10007)
@@ -77,4 +77,5 @@
     public override bool Equals(object obj) {
       PermutationInformation pi = obj as PermutationInformation;
+      if (pi == null) return false;
 
       if (ProducedBy == pi.ProducedBy && Generation == pi.Generation) {
