Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesHistoryView.Designer.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesHistoryView.Designer.cs	(revision 5838)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Views {
-  partial class CoordinatesHistoryView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-    }
-
-    #endregion
-  }
-}
Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesHistoryView.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesHistoryView.cs	(revision 5838)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Data;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Analysis.Views {
-  [View("Coordinates History")]
-  [Content(typeof(CoordinatesHistory), IsDefaultView = true)]
-  public partial class CoordinatesHistoryView : MovieView<DoubleMatrix> {
-    public CoordinatesHistoryView() {
-      InitializeComponent();
-      itemsGroupBox.Text = "Coordinates History";
-    }
-  }
-}
Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.Designer.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.Designer.cs	(revision 5838)
+++ 	(revision )
@@ -1,77 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Views {
-  partial class CoordinatesView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.pictureBox = new System.Windows.Forms.PictureBox();
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // pictureBox
-      // 
-      this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.pictureBox.Location = new System.Drawing.Point(0, 0);
-      this.pictureBox.Name = "pictureBox";
-      this.pictureBox.Size = new System.Drawing.Size(454, 406);
-      this.pictureBox.TabIndex = 0;
-      this.pictureBox.TabStop = false;
-      this.pictureBox.SizeChanged += new System.EventHandler(this.pictureBox_SizeChanged);
-      // 
-      // CoordinatesView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.pictureBox);
-      this.Name = "CoordinatesView";
-      this.Size = new System.Drawing.Size(454, 406);
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.PictureBox pictureBox;
-  }
-}
Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.cs	(revision 5838)
+++ 	(revision )
@@ -1,129 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Drawing.Text;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.Data;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Analysis.Views {
-  [View("Coordinates View")]
-  [Content(typeof(DoubleMatrix), IsDefaultView = false)]
-  public partial class CoordinatesView : AsynchronousContentView {
-    private Bitmap bitmap;
-
-    public new DoubleMatrix Content {
-      get { return (DoubleMatrix)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public CoordinatesView() {
-      InitializeComponent();
-    }
-
-    #region Register Content Events
-    protected override void DeregisterContentEvents() {
-      Content.Reset -= new EventHandler(Content_Reset);
-      Content.ItemChanged -= new EventHandler<EventArgs<int, int>>(Content_Reset);
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.Reset += new EventHandler(Content_Reset);
-      Content.ItemChanged += new EventHandler<EventArgs<int, int>>(Content_Reset);
-    }
-
-    void Content_Reset(object sender, EventArgs<int, int> e) {
-      GenerateImage();
-    }
-
-    void Content_Reset(object sender, EventArgs e) {
-      GenerateImage();
-    }
-    #endregion
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        pictureBox.Image = null;
-      } else {
-        GenerateImage();
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      pictureBox.Enabled = Content != null;
-    }
-
-    private void GenerateImage() {
-      DoubleMatrix coordinates = Content;
-      if (coordinates == null || coordinates.Rows < 1 || coordinates.Columns != 2) return;
-
-      Bitmap newBitmap = new Bitmap(pictureBox.Width, pictureBox.Height);
-      double xMin = double.MaxValue, yMin = double.MaxValue, xMax = double.MinValue, yMax = double.MinValue;
-      for (int i = 0; i < coordinates.Rows; i++) {
-        if (xMin > coordinates[i, 0]) xMin = coordinates[i, 0];
-        if (yMin > coordinates[i, 1]) yMin = coordinates[i, 1];
-        if (xMax < coordinates[i, 0]) xMax = coordinates[i, 0];
-        if (yMax < coordinates[i, 1]) yMax = coordinates[i, 1];
-      }
-
-      int border = 20;
-      double xStep = xMax != xMin ? (pictureBox.Width - 2 * border) / (xMax - xMin) : 1;
-      double yStep = yMax != yMin ? (pictureBox.Height - 2 * border) / (yMax - yMin) : 1;
-
-      Point[] points = new Point[coordinates.Rows];
-      for (int i = 0; i < coordinates.Rows; i++)
-        points[i] = new Point(border + ((int)((coordinates[i, 0] - xMin) * xStep)),
-                              newBitmap.Height - (border + ((int)((coordinates[i, 1] - yMin) * yStep))));
-
-      using (Graphics graphics = Graphics.FromImage(newBitmap)) {
-        graphics.SmoothingMode = SmoothingMode.AntiAlias;
-        graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
-
-        for (int i = 0; i < points.Length; i++) {
-          Point p = new Point(points[i].X - 3, points[i].Y - 3);
-          graphics.FillRectangle(Brushes.Black, p.X, p.Y, 8, 8);
-          graphics.DrawString(i.ToString(), Font, Brushes.Black, p.X, p.Y + 10);
-        }
-      }
-
-      pictureBox.Image = newBitmap;
-      if (bitmap != null) bitmap.Dispose();
-      if (newBitmap != null) bitmap = newBitmap;
-      else bitmap = null;
-    }
-
-    private void pictureBox_SizeChanged(object sender, System.EventArgs e) {
-      GenerateImage();
-    }
-
-    #region Event Handlers
-    // TODO: Put event handlers here
-    #endregion
-  }
-}
Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.resx
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/CoordinatesView.resx	(revision 5838)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: branches/QAP/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj
===================================================================
--- branches/QAP/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj	(revision 5838)
+++ branches/QAP/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj	(revision 5840)
@@ -154,16 +154,4 @@
       <DependentUpon>AlleleFrequencyCollectionView.cs</DependentUpon>
     </Compile>
-    <Compile Include="CoordinatesHistoryView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="CoordinatesHistoryView.Designer.cs">
-      <DependentUpon>CoordinatesHistoryView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="CoordinatesView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="CoordinatesView.Designer.cs">
-      <DependentUpon>CoordinatesView.cs</DependentUpon>
-    </Compile>
     <Compile Include="HeatMapHistoryView.cs">
       <SubType>UserControl</SubType>
@@ -233,7 +221,4 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="CoordinatesView.resx">
-      <DependentUpon>CoordinatesView.cs</DependentUpon>
-    </EmbeddedResource>
     <EmbeddedResource Include="HeatMapView.resx">
       <DependentUpon>HeatMapView.cs</DependentUpon>
Index: branches/QAP/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
===================================================================
--- branches/QAP/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 5838)
+++ branches/QAP/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 5840)
@@ -159,7 +159,5 @@
     <Compile Include="DataVisualization\HeatMap.cs" />
     <Compile Include="DataVisualization\HeatMapHistory.cs" />
-    <Compile Include="MultidimensionalScaling\CoordinatesHistory.cs" />
     <Compile Include="MultidimensionalScaling\MultidimensionalScaling.cs" />
-    <Compile Include="MultidimensionalScaling\PopulationDiversityMDSAnalyzer.cs" />
     <Compile Include="MultiObjective\RankBasedParetoFrontAnalyzer.cs" />
     <Compile Include="MultiObjective\ParetoFrontAnalyzer.cs" />
Index: branches/QAP/HeuristicLab.Analysis/3.3/MultidimensionalScaling/CoordinatesHistory.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis/3.3/MultidimensionalScaling/CoordinatesHistory.cs	(revision 5838)
+++ 	(revision )
@@ -1,47 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Drawing;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Analysis {
-  [Item("CoordinatesHistory", "Stores a history of coordinates which can be plotted over time.")]
-  [StorableClass]
-  public class CoordinatesHistory : ItemCollection<DoubleMatrix> {
-    public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Cab; }
-    }
-
-    [StorableConstructor]
-    protected CoordinatesHistory(bool deserializing) : base(deserializing) { }
-    protected CoordinatesHistory(CoordinatesHistory original, Cloner cloner) : base(original, cloner) { }
-    public CoordinatesHistory() : base() { }
-    public CoordinatesHistory(IEnumerable<DoubleMatrix> collection) : base(new ItemCollection<DoubleMatrix>(collection)) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new CoordinatesHistory(this, cloner);
-    }
-  }
-}
Index: branches/QAP/HeuristicLab.Analysis/3.3/MultidimensionalScaling/PopulationDiversityMDSAnalyzer.cs
===================================================================
--- branches/QAP/HeuristicLab.Analysis/3.3/MultidimensionalScaling/PopulationDiversityMDSAnalyzer.cs	(revision 5838)
+++ 	(revision )
@@ -1,96 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Analysis {
-  [Item("PopulationDiversityMDSAnalyzer", "Transforms the population similarity HeatMap into coordinates by making use of multidimensional scaling.")]
-  [StorableClass]
-  public class PopulationDiversityMDSAnalyzer : SingleSuccessorOperator, IAnalyzer {
-    public ILookupParameter<ResultCollection> ResultsParameter {
-      get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }
-    }
-    public ILookupParameter<ResultCollection> PopulationDiversityAnalyzerResultsParameter {
-      get { return (ILookupParameter<ResultCollection>)Parameters["PopulationDiversityAnalyzer Results"]; }
-    }
-    public ILookupParameter<HeatMap> SolutionSimilaritiesParameter {
-      get { return (ILookupParameter<HeatMap>)Parameters["Solution Similarities"]; }
-    }
-    /*public ILookupParameter<CoordinatesHistroy> CoordinatesHistoryParameter {
-      get { return (ILookupParameter<CoordinatesHistroy>)Parameters["CoordinatesHistory"]; }
-    }*/
-
-    [StorableConstructor]
-    protected PopulationDiversityMDSAnalyzer(bool deserializing) : base(deserializing) { }
-    protected PopulationDiversityMDSAnalyzer(PopulationDiversityMDSAnalyzer original, Cloner cloner) : base(original, cloner) { }
-    public PopulationDiversityMDSAnalyzer() {
-      Parameters.Add(new LookupParameter<ResultCollection>("Results", "The results collection in which the population diversity analyzer injects its result collection."));
-      Parameters.Add(new LookupParameter<ResultCollection>("PopulationDiversityAnalyzer Results", "The result collection in which the diversity analyzer injects its results."));
-      Parameters.Add(new LookupParameter<HeatMap>("Solution Similarities", "The HeatMap that stores the solution similarities."));
-      //Parameters.Add(new LookupParameter<CoordinatesHistroy>("CoordinatesHistory", "The history of the assigned coordinates."));
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PopulationDiversityMDSAnalyzer(this, cloner);
-    }
-
-    public override IOperation Apply() {
-      ResultCollection results = ResultsParameter.ActualValue;
-      ResultCollection popDivResults = (results[PopulationDiversityAnalyzerResultsParameter.ActualName] as IResult).Value as ResultCollection;
-      if (popDivResults == null) throw new InvalidOperationException("Results collection of population diversity analyzer cannot be found.");
-      HeatMap similarites = (popDivResults[SolutionSimilaritiesParameter.ActualName] as IResult).Value as HeatMap;
-      if (similarites == null) throw new InvalidOperationException("HeatMap cannot be found in the results collection of the population diversity analyzer.");
-      if (similarites.Rows != similarites.Columns) throw new InvalidOperationException("HeatMap is not a square matrix.");
-
-      CoordinatesHistory history = null;
-      if (popDivResults.ContainsKey("MDS"))
-        history = popDivResults["MDS"].Value as CoordinatesHistory;
-      else {
-        history = new CoordinatesHistory();
-        popDivResults.Add(new Result("MDS", history));
-      }
-      int dimension = similarites.Rows;
-      DoubleMatrix distances = new DoubleMatrix(dimension, dimension);
-      for (int i = 0; i < dimension; i++) {
-        for (int j = 0; j < dimension; j++) {
-          if (i == j) continue;
-          distances[i, j] = 1.0 - similarites[i, j];
-        }
-      }
-      double stress;
-      DoubleMatrix coordinates = null;
-      if (history.Count == 0) {
-        coordinates = MultidimensionalScaling.MetricByDistance(distances, out stress);
-      } else coordinates = MultidimensionalScaling.MetricByDistance(distances, out stress, history.Last().Clone() as DoubleMatrix);
-      history.Add(coordinates);
-
-      return base.Apply();
-    }
-  }
-}
