Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.Designer.cs	(revision 11239)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.Designer.cs	(revision 11240)
@@ -59,4 +59,5 @@
       this.valueTabPage.SuspendLayout();
       this.tourGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
       this.splitContainer.Panel2.SuspendLayout();
@@ -67,12 +68,12 @@
       // pictureBox
       // 
-      this.pictureBox.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.pictureBox.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.pictureBox.BackColor = System.Drawing.Color.White;
       this.pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
       this.pictureBox.Location = new System.Drawing.Point(6, 6);
       this.pictureBox.Name = "pictureBox";
-      this.pictureBox.Size = new System.Drawing.Size(403, 288);
+      this.pictureBox.Size = new System.Drawing.Size(403, 322);
       this.pictureBox.TabIndex = 0;
       this.pictureBox.TabStop = false;
@@ -81,7 +82,8 @@
       // tabControl
       // 
-      this.tabControl.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.tabControl.AllowDrop = true;
+      this.tabControl.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.tabControl.Controls.Add(this.visualizationTabPage);
       this.tabControl.Controls.Add(this.valueTabPage);
@@ -89,5 +91,5 @@
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(423, 326);
+      this.tabControl.Size = new System.Drawing.Size(423, 360);
       this.tabControl.TabIndex = 0;
       // 
@@ -98,5 +100,5 @@
       this.visualizationTabPage.Name = "visualizationTabPage";
       this.visualizationTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.visualizationTabPage.Size = new System.Drawing.Size(415, 300);
+      this.visualizationTabPage.Size = new System.Drawing.Size(415, 334);
       this.visualizationTabPage.TabIndex = 0;
       this.visualizationTabPage.Text = "Visualization";
@@ -116,7 +118,7 @@
       // tourGroupBox
       // 
-      this.tourGroupBox.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.tourGroupBox.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.tourGroupBox.Controls.Add(this.tourViewHost);
       this.tourGroupBox.Location = new System.Drawing.Point(6, 6);
@@ -129,8 +131,10 @@
       // tourViewHost
       // 
-      this.tourViewHost.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.tourViewHost.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.tourViewHost.Caption = "View";
       this.tourViewHost.Content = null;
+      this.tourViewHost.Enabled = false;
       this.tourViewHost.Location = new System.Drawing.Point(6, 19);
       this.tourViewHost.Name = "tourViewHost";
@@ -138,4 +142,5 @@
       this.tourViewHost.Size = new System.Drawing.Size(391, 263);
       this.tourViewHost.TabIndex = 0;
+      this.tourViewHost.ViewsLabelVisible = true;
       this.tourViewHost.ViewType = null;
       // 
@@ -155,16 +160,16 @@
       this.splitContainer.Panel2.Controls.Add(this.tabControl);
       this.splitContainer.Size = new System.Drawing.Size(423, 402);
-      this.splitContainer.SplitterDistance = 69;
+      this.splitContainer.SplitterDistance = 35;
       this.splitContainer.TabIndex = 0;
       // 
       // qualityGroupBox
       // 
-      this.qualityGroupBox.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.qualityGroupBox.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.qualityGroupBox.Controls.Add(this.qualityViewHost);
       this.qualityGroupBox.Location = new System.Drawing.Point(0, 0);
       this.qualityGroupBox.Name = "qualityGroupBox";
-      this.qualityGroupBox.Size = new System.Drawing.Size(423, 66);
+      this.qualityGroupBox.Size = new System.Drawing.Size(423, 32);
       this.qualityGroupBox.TabIndex = 0;
       this.qualityGroupBox.TabStop = false;
@@ -173,18 +178,20 @@
       // qualityViewHost
       // 
-      this.qualityViewHost.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.qualityViewHost.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.qualityViewHost.Caption = "View";
       this.qualityViewHost.Content = null;
+      this.qualityViewHost.Enabled = false;
       this.qualityViewHost.Location = new System.Drawing.Point(6, 19);
       this.qualityViewHost.Name = "qualityViewHost";
       this.qualityViewHost.ReadOnly = false;
-      this.qualityViewHost.Size = new System.Drawing.Size(411, 41);
+      this.qualityViewHost.Size = new System.Drawing.Size(411, 7);
       this.qualityViewHost.TabIndex = 0;
+      this.qualityViewHost.ViewsLabelVisible = true;
       this.qualityViewHost.ViewType = null;
       // 
       // OrienteeringSolutionView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.splitContainer);
@@ -198,7 +205,9 @@
       this.splitContainer.Panel1.ResumeLayout(false);
       this.splitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
       this.splitContainer.ResumeLayout(false);
       this.qualityGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
+
     }
 
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.cs	(revision 11239)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering.Views/3.3/OrienteeringSolutionView.cs	(revision 11240)
@@ -22,4 +22,5 @@
 using System;
 using System.Drawing;
+using System.Linq;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
@@ -41,4 +42,5 @@
       Content.QualityChanged -= new EventHandler(Content_QualityChanged);
       Content.CoordinatesChanged -= new EventHandler(Content_CoordinatesChanged);
+      Content.ScoresChanged -= new EventHandler(Content_ScoresChanged);
       Content.IntegerVectorChanged -= new EventHandler(Content_IntegerVectorChanged);
       base.DeregisterContentEvents();
@@ -48,4 +50,5 @@
       Content.QualityChanged += new EventHandler(Content_QualityChanged);
       Content.CoordinatesChanged += new EventHandler(Content_CoordinatesChanged);
+      Content.ScoresChanged += new EventHandler(Content_ScoresChanged);
       Content.IntegerVectorChanged += new EventHandler(Content_IntegerVectorChanged);
     }
@@ -77,4 +80,5 @@
         } else {
           var coordinates = Content.Coordinates;
+          var scores = Content.Scores;
           var integerVector = Content.IntegerVector;
           var bitmap = new Bitmap(pictureBox.Width, pictureBox.Height);
@@ -106,6 +110,13 @@
                 graphics.DrawPolygon(Pens.Black, tour);
               }
-              for (int i = 0; i < points.Length; i++)
-                graphics.FillRectangle(Brushes.Red, points[i].X - 2, points[i].Y - 2, 6, 6);
+
+              double scoreMin = scores.Min();
+              double scoreMax = scores.Max();
+              double scoreRange = scoreMax - scoreMin;
+              for (int i = 0; i < points.Length; i++) {
+                double score = scores[i];
+                int size = (int)Math.Round(((score - scoreMin) / scoreRange) * 9 + 1);
+                graphics.FillRectangle(Brushes.Red, points[i].X - size / 2, points[i].Y - size / 2, size, size);
+              }
             }
           } else {
@@ -135,4 +146,10 @@
         GenerateImage();
     }
+    private void Content_ScoresChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ScoresChanged), sender, e);
+      else
+        GenerateImage();
+    }
     private void Content_IntegerVectorChanged(object sender, EventArgs e) {
       if (InvokeRequired)
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/Analyzers/BestOrienteeringSolutionAnalyser.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/Analyzers/BestOrienteeringSolutionAnalyser.cs	(revision 11239)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/Analyzers/BestOrienteeringSolutionAnalyser.cs	(revision 11240)
@@ -95,8 +95,10 @@
       var solution = BestSolutionParameter.ActualValue;
       var coordinates = CoordinatesParameter.ActualValue;
+      var scores = ScoresParameter.ActualValue;
       if (solution == null) {
         solution = new OrienteeringSolution(
           (IntegerVector)solutions[bestIndex].Clone(),
           coordinates,
+          scores,
           new DoubleValue(qualities[bestIndex].Value));
         BestSolutionParameter.ActualValue = solution;
@@ -105,4 +107,5 @@
         if (solution.Quality.Value < qualities[bestIndex].Value) {
           solution.Coordinates = coordinates;
+          solution.Scores = scores;
           solution.IntegerVector = (IntegerVector)solutions[bestIndex].Clone();
           solution.Quality.Value = qualities[bestIndex].Value;
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/OrienteeringSolution.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/OrienteeringSolution.cs	(revision 11239)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.Orienteering/3.3/OrienteeringSolution.cs	(revision 11240)
@@ -42,4 +42,17 @@
     }
     [Storable]
+    private DoubleArray scores;
+    public DoubleArray Scores {
+      get { return scores; }
+      set {
+        if (scores != value) {
+          if (scores != null) DeregisterScoresEvents();
+          scores = value;
+          if (scores != null) RegisterScoresEvents();
+          OnScoresChanged();
+        }
+      }
+    }
+    [Storable]
     private DoubleValue quality;
     public DoubleValue Quality {
@@ -64,8 +77,9 @@
       Initialize();
     }
-    public OrienteeringSolution(IntegerVector integerVector, DoubleMatrix coordinates, DoubleValue quality)
+    public OrienteeringSolution(IntegerVector integerVector, DoubleMatrix coordinates, DoubleArray scores, DoubleValue quality)
       : base() {
       this.integerVector = integerVector;
       this.coordinates = coordinates;
+      this.scores = scores;
       this.quality = quality;
       Initialize();
@@ -84,4 +98,5 @@
       if (integerVector != null) RegisterIntegerVectorEvents();
       if (coordinates != null) RegisterCoordinatesEvents();
+      if (scores != null) RegisterScoresEvents();
       if (quality != null) RegisterQualityEvents();
     }
@@ -102,4 +117,10 @@
     }
 
+    public event EventHandler ScoresChanged;
+    private void OnScoresChanged() {
+      var changed = ScoresChanged;
+      if (changed != null)
+        changed(this, EventArgs.Empty);
+    }
 
     public event EventHandler QualityChanged;
@@ -126,4 +147,12 @@
       Coordinates.Reset -= new EventHandler(Coordinates_Reset);
     }
+    private void RegisterScoresEvents() {
+      Scores.ItemChanged += new EventHandler<EventArgs<int>>(Scores_ItemChanged);
+      Scores.Reset += new EventHandler(Scores_Reset);
+    }
+    private void DeregisterScoresEvents() {
+      Scores.ItemChanged -= new EventHandler<EventArgs<int>>(Scores_ItemChanged);
+      Scores.Reset -= new EventHandler(Scores_Reset);
+    }
     private void RegisterQualityEvents() {
       Quality.ValueChanged += new EventHandler(Quality_ValueChanged);
@@ -145,4 +174,10 @@
       OnCoordinatesChanged();
     }
+    private void Scores_ItemChanged(object sender, EventArgs<int> e) {
+      OnCoordinatesChanged();
+    }
+    private void Scores_Reset(object sender, EventArgs e) {
+      OnCoordinatesChanged();
+    }
     private void Quality_ValueChanged(object sender, EventArgs e) {
       OnQualityChanged();
