Index: branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/KnowledgeCenterViewBase.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/KnowledgeCenterViewBase.cs	(revision 13751)
+++ branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/KnowledgeCenterViewBase.cs	(revision 13752)
@@ -50,4 +50,5 @@
       RegisterContentProblemEvents();
       RegisterContentProblemInstancesEvents();
+      RegisterContentProblemCharacteristicsEvents();
       RegisterContentSolutionSeedingPoolEvents();
       RegisterContentSuggestedInstancesEvents();
@@ -70,4 +71,12 @@
     }
 
+    private void RegisterContentProblemCharacteristicsEvents() {
+      Content.ProblemCharacteristics.ItemsAdded += ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.ItemsReplaced += ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.ItemsRemoved += ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.CheckedItemsChanged += ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.CollectionReset += ContentOnProblemCharacteristicsChanged;
+    }
+
     private void RegisterContentSolutionSeedingPoolEvents() {
       Content.SolutionSeedingPool.CheckedItemsChanged += ContentOnSolutionSeedingPoolChanged;
@@ -92,4 +101,5 @@
       DeregisterContentProblemEvents();
       DeregisterContentProblemInstancesEvents();
+      DeregisterContentProblemCharacteristicsEvents();
       DeregisterContentSolutionSeedingPoolEvents();
       DeregisterContentSuggestedInstancesEvents();
@@ -110,4 +120,12 @@
       Content.ProblemInstances.CollectionReset -= ContentOnProblemInstancesChanged;
       Content.ProblemInstances.ItemChanged -= ContentOnProblemInstancesChanged;
+    }
+
+    private void DeregisterContentProblemCharacteristicsEvents() {
+      Content.ProblemCharacteristics.ItemsAdded -= ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.ItemsReplaced -= ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.ItemsRemoved -= ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.CheckedItemsChanged -= ContentOnProblemCharacteristicsChanged;
+      Content.ProblemCharacteristics.CollectionReset -= ContentOnProblemCharacteristicsChanged;
     }
 
@@ -136,4 +154,5 @@
     protected virtual void OnProblemSolutionsChanged() { }
     protected virtual void OnProblemInstancesChanged() { }
+    protected virtual void OnProblemCharacteristicsChanged() { }
     protected virtual void OnSolutionSeedingPoolChanged() { }
     protected virtual void OnSuggestedInstancesChanged() { }
@@ -175,4 +194,9 @@
     }
 
+    private void ContentOnProblemCharacteristicsChanged(object sender, EventArgs e) {
+      if (InvokeRequired) Invoke((Action)OnProblemCharacteristicsChanged);
+      else OnProblemCharacteristicsChanged();
+    }
+
     private void ContentOnSolutionSeedingPoolChanged(object sender, EventArgs e) {
       if (InvokeRequired) Invoke((Action)OnSolutionSeedingPoolChanged);
Index: branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.Designer.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.Designer.cs	(revision 13751)
+++ branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.Designer.cs	(revision 13752)
@@ -52,7 +52,6 @@
       this.problemInstancesTabControl = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
       this.mapTabPage = new System.Windows.Forms.TabPage();
-      this.instancesTabPage = new System.Windows.Forms.TabPage();
-      this.problemInstancesView = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.mapSplitContainer = new System.Windows.Forms.SplitContainer();
+      this.showCharacteristicsCheckBox = new System.Windows.Forms.CheckBox();
       this.invPropCheckBox = new System.Windows.Forms.CheckBox();
       this.sizeLabel = new System.Windows.Forms.Label();
@@ -61,12 +60,13 @@
       this.sizeComboBox = new System.Windows.Forms.ComboBox();
       this.projectionComboBox = new System.Windows.Forms.ComboBox();
-      this.showCharacteristicsCheckBox = new System.Windows.Forms.CheckBox();
+      this.instancesTabPage = new System.Windows.Forms.TabPage();
+      this.problemInstancesView = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.problemInstancesTabControl.SuspendLayout();
       this.mapTabPage.SuspendLayout();
-      this.instancesTabPage.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.mapSplitContainer)).BeginInit();
       this.mapSplitContainer.Panel1.SuspendLayout();
       this.mapSplitContainer.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.instanceMapChart)).BeginInit();
+      this.instancesTabPage.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -96,29 +96,4 @@
       this.mapTabPage.UseVisualStyleBackColor = true;
       // 
-      // instancesTabPage
-      // 
-      this.instancesTabPage.Controls.Add(this.problemInstancesView);
-      this.instancesTabPage.Location = new System.Drawing.Point(4, 22);
-      this.instancesTabPage.Name = "instancesTabPage";
-      this.instancesTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.instancesTabPage.Size = new System.Drawing.Size(992, 734);
-      this.instancesTabPage.TabIndex = 0;
-      this.instancesTabPage.Text = "Instances";
-      this.instancesTabPage.UseVisualStyleBackColor = true;
-      // 
-      // problemInstancesView
-      // 
-      this.problemInstancesView.Caption = "View";
-      this.problemInstancesView.Content = null;
-      this.problemInstancesView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.problemInstancesView.Enabled = false;
-      this.problemInstancesView.Location = new System.Drawing.Point(3, 3);
-      this.problemInstancesView.Name = "problemInstancesView";
-      this.problemInstancesView.ReadOnly = false;
-      this.problemInstancesView.Size = new System.Drawing.Size(986, 728);
-      this.problemInstancesView.TabIndex = 0;
-      this.problemInstancesView.ViewsLabelVisible = true;
-      this.problemInstancesView.ViewType = null;
-      // 
       // mapSplitContainer
       // 
@@ -138,7 +113,20 @@
       this.mapSplitContainer.Panel1.Controls.Add(this.projectionComboBox);
       this.mapSplitContainer.Panel1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 0);
+      this.mapSplitContainer.Panel2Collapsed = true;
       this.mapSplitContainer.Size = new System.Drawing.Size(986, 728);
       this.mapSplitContainer.SplitterDistance = 847;
       this.mapSplitContainer.TabIndex = 12;
+      // 
+      // showCharacteristicsCheckBox
+      // 
+      this.showCharacteristicsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.showCharacteristicsCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
+      this.showCharacteristicsCheckBox.Location = new System.Drawing.Point(957, 4);
+      this.showCharacteristicsCheckBox.Name = "showCharacteristicsCheckBox";
+      this.showCharacteristicsCheckBox.Size = new System.Drawing.Size(26, 23);
+      this.showCharacteristicsCheckBox.TabIndex = 18;
+      this.showCharacteristicsCheckBox.Text = "Detail";
+      this.showCharacteristicsCheckBox.UseVisualStyleBackColor = true;
+      this.showCharacteristicsCheckBox.CheckedChanged += new System.EventHandler(this.showCharacteristicsCheckBox_CheckedChanged);
       // 
       // invPropCheckBox
@@ -153,4 +141,5 @@
       this.invPropCheckBox.Text = "inverse proportional";
       this.invPropCheckBox.UseVisualStyleBackColor = true;
+      this.invPropCheckBox.CheckedChanged += new System.EventHandler(this.InvPropCheckBoxOnCheckedChanged);
       // 
       // sizeLabel
@@ -203,5 +192,5 @@
       this.instanceMapChart.Series.Add(series1);
       this.instanceMapChart.Series.Add(series2);
-      this.instanceMapChart.Size = new System.Drawing.Size(841, 692);
+      this.instanceMapChart.Size = new System.Drawing.Size(980, 692);
       this.instanceMapChart.TabIndex = 12;
       // 
@@ -214,4 +203,5 @@
       this.sizeComboBox.Size = new System.Drawing.Size(273, 21);
       this.sizeComboBox.TabIndex = 13;
+      this.sizeComboBox.SelectedIndexChanged += new System.EventHandler(this.SizeComboBoxOnSelectedIndexChanged);
       // 
       // projectionComboBox
@@ -223,15 +213,30 @@
       this.projectionComboBox.Size = new System.Drawing.Size(158, 21);
       this.projectionComboBox.TabIndex = 14;
-      // 
-      // showCharacteristicsCheckBox
-      // 
-      this.showCharacteristicsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.showCharacteristicsCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
-      this.showCharacteristicsCheckBox.Location = new System.Drawing.Point(818, 4);
-      this.showCharacteristicsCheckBox.Name = "showCharacteristicsCheckBox";
-      this.showCharacteristicsCheckBox.Size = new System.Drawing.Size(26, 23);
-      this.showCharacteristicsCheckBox.TabIndex = 18;
-      this.showCharacteristicsCheckBox.Text = "Detail";
-      this.showCharacteristicsCheckBox.UseVisualStyleBackColor = true;
+      this.projectionComboBox.SelectedIndexChanged += new System.EventHandler(this.ProjectionComboBoxOnSelectedIndexChanged);
+      // 
+      // instancesTabPage
+      // 
+      this.instancesTabPage.Controls.Add(this.problemInstancesView);
+      this.instancesTabPage.Location = new System.Drawing.Point(4, 22);
+      this.instancesTabPage.Name = "instancesTabPage";
+      this.instancesTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.instancesTabPage.Size = new System.Drawing.Size(992, 734);
+      this.instancesTabPage.TabIndex = 0;
+      this.instancesTabPage.Text = "Instances";
+      this.instancesTabPage.UseVisualStyleBackColor = true;
+      // 
+      // problemInstancesView
+      // 
+      this.problemInstancesView.Caption = "View";
+      this.problemInstancesView.Content = null;
+      this.problemInstancesView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.problemInstancesView.Enabled = false;
+      this.problemInstancesView.Location = new System.Drawing.Point(3, 3);
+      this.problemInstancesView.Name = "problemInstancesView";
+      this.problemInstancesView.ReadOnly = false;
+      this.problemInstancesView.Size = new System.Drawing.Size(986, 728);
+      this.problemInstancesView.TabIndex = 0;
+      this.problemInstancesView.ViewsLabelVisible = true;
+      this.problemInstancesView.ViewType = null;
       // 
       // UnderstandingProblemInstanceView
@@ -244,5 +249,4 @@
       this.problemInstancesTabControl.ResumeLayout(false);
       this.mapTabPage.ResumeLayout(false);
-      this.instancesTabPage.ResumeLayout(false);
       this.mapSplitContainer.Panel1.ResumeLayout(false);
       this.mapSplitContainer.Panel1.PerformLayout();
@@ -250,4 +254,5 @@
       this.mapSplitContainer.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.instanceMapChart)).EndInit();
+      this.instancesTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
 
Index: branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.cs	(revision 13751)
+++ branches/PerformanceComparison/HeuristicLab.OptimizationExpertSystem/3.3/Views/UnderstandingProblemInstanceView.cs	(revision 13752)
@@ -20,5 +20,8 @@
 #endregion
 
+using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
 using HeuristicLab.MainForm;
 using HeuristicLab.OptimizationExpertSystem.Common;
@@ -27,4 +30,5 @@
 using System.Linq;
 using System.Text.RegularExpressions;
+using System.Windows.Forms;
 using System.Windows.Forms.DataVisualization.Charting;
 
@@ -34,7 +38,14 @@
   public sealed partial class UnderstandingProblemInstanceView : KnowledgeCenterViewBase {
     private bool SuppressEvents { get; set; }
-
+    private readonly CheckedItemListView<StringValue> characteristicsView;
+ 
     public UnderstandingProblemInstanceView() {
       InitializeComponent();
+      showCharacteristicsCheckBox.Text = string.Empty;
+      showCharacteristicsCheckBox.Image = VSImageLibrary.Properties;
+      characteristicsView = new CheckedItemListView<StringValue>() {
+        Dock = DockStyle.Fill
+      };
+      mapSplitContainer.Panel2.Controls.Add(characteristicsView);
     }
 
@@ -43,8 +54,10 @@
       if (Content == null) {
         problemInstancesView.Content = null;
+        characteristicsView.Content = null;
         instanceMapChart.Series["InstancesSeries"].Points.Clear();
         instanceMapChart.Series["CurrentInstanceSeries"].Points.Clear();
       } else {
         problemInstancesView.Content = Content.ProblemInstances;
+        characteristicsView.Content = Content.ProblemCharacteristics;
         UpdateProjectionComboBox();
         UpdateSizeComboBox();
@@ -175,4 +188,8 @@
       UpdateProjection();
     }
+
+    private void showCharacteristicsCheckBox_CheckedChanged(object sender, EventArgs e) {
+      mapSplitContainer.Panel2Collapsed = !showCharacteristicsCheckBox.Checked;
+    }
     #endregion
   }
