Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 9258)
@@ -20,4 +20,7 @@
 #endregion
 
+using HeuristicLab.Collections;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
 using System;
 using System.Collections.Generic;
@@ -26,7 +29,4 @@
 using System.Windows.Forms;
 using System.Windows.Forms.DataVisualization.Charting;
-using HeuristicLab.Collections;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
 
 namespace HeuristicLab.Analysis.Views {
@@ -115,5 +115,5 @@
     public void ShowConfiguration() {
       if (Content != null) {
-        using (DataTableVisualPropertiesDialog dialog = new DataTableVisualPropertiesDialog(Content)) {
+        using (var dialog = new DataTableVisualPropertiesDialog(Content)) {
           dialog.ShowDialog(this);
         }
@@ -123,5 +123,5 @@
       foreach (var row in rows) {
         RegisterDataRowEvents(row);
-        Series series = new Series(row.Name);
+        var series = new Series(row.Name);
         if (row.VisualProperties.DisplayName.Trim() != String.Empty) series.LegendText = row.VisualProperties.DisplayName;
         else series.LegendText = row.Name;
@@ -231,4 +231,9 @@
       if (!Content.VisualProperties.AxisTitleColor.IsEmpty) area.AxisY2.TitleForeColor = Content.VisualProperties.AxisTitleColor;
       area.AxisY2.Title = Content.VisualProperties.SecondYAxisTitle;
+
+      area.AxisX.IsLogarithmic = Content.VisualProperties.XAxisLogScale;
+      area.AxisX2.IsLogarithmic = Content.VisualProperties.SecondXAxisLogScale;
+      area.AxisY.IsLogarithmic = Content.VisualProperties.YAxisLogScale;
+      area.AxisY2.IsLogarithmic = Content.VisualProperties.SecondYAxisLogScale;
     }
 
@@ -500,9 +505,15 @@
           break;
         default: {
+            bool yLogarithmic = series.YAxisType == AxisType.Primary
+                                  ? Content.VisualProperties.YAxisLogScale
+                                  : Content.VisualProperties.SecondYAxisLogScale;
+            bool xLogarithmic = series.XAxisType == AxisType.Primary
+                                  ? Content.VisualProperties.XAxisLogScale
+                                  : Content.VisualProperties.SecondXAxisLogScale;
             for (int i = 0; i < row.Values.Count; i++) {
               var value = row.Values[i];
-              DataPoint point = new DataPoint();
-              point.XValue = row.VisualProperties.StartIndexZero ? i : i + 1;
-              if (IsInvalidValue(value))
+              var point = new DataPoint();
+              point.XValue = row.VisualProperties.StartIndexZero && !xLogarithmic ? i : i + 1;
+              if (IsInvalidValue(value) || (yLogarithmic && value <= 0))
                 point.IsEmpty = true;
               else
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs	(revision 9258)
@@ -51,4 +51,5 @@
       this.label4 = new System.Windows.Forms.Label();
       this.xAxisPrimaryGroupBox = new System.Windows.Forms.GroupBox();
+      this.xAxisPrimaryLogScaleCheckBox = new System.Windows.Forms.CheckBox();
       this.panel2 = new System.Windows.Forms.Panel();
       this.xAxisPrimaryMaximumFixedRadioButton = new System.Windows.Forms.RadioButton();
@@ -64,4 +65,5 @@
       this.label11 = new System.Windows.Forms.Label();
       this.xAxisSecondaryGroupBox = new System.Windows.Forms.GroupBox();
+      this.xAxisSecondaryLogScaleCheckBox = new System.Windows.Forms.CheckBox();
       this.panel4 = new System.Windows.Forms.Panel();
       this.xAxisSecondaryMaximumFixedRadioButton = new System.Windows.Forms.RadioButton();
@@ -80,4 +82,5 @@
       this.yAxisTabPage = new System.Windows.Forms.TabPage();
       this.yAxisSecondaryGroupBox = new System.Windows.Forms.GroupBox();
+      this.yAxisSecondaryLogScaleCheckBox = new System.Windows.Forms.CheckBox();
       this.panel8 = new System.Windows.Forms.Panel();
       this.yAxisSecondaryMaximumFixedRadioButton = new System.Windows.Forms.RadioButton();
@@ -91,4 +94,5 @@
       this.label14 = new System.Windows.Forms.Label();
       this.yAxisPrimaryGroupBox = new System.Windows.Forms.GroupBox();
+      this.yAxisPrimaryLogScaleCheckBox = new System.Windows.Forms.CheckBox();
       this.panel6 = new System.Windows.Forms.Panel();
       this.yAxisPrimaryMaximumFixedRadioButton = new System.Windows.Forms.RadioButton();
@@ -141,9 +145,9 @@
       // yAxisPrimaryTitleTextBox
       // 
-      this.yAxisPrimaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.yAxisPrimaryTitleTextBox.Location = new System.Drawing.Point(66, 19);
+      this.yAxisPrimaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisPrimaryTitleTextBox.Location = new System.Drawing.Point(74, 19);
       this.yAxisPrimaryTitleTextBox.Name = "yAxisPrimaryTitleTextBox";
-      this.yAxisPrimaryTitleTextBox.Size = new System.Drawing.Size(369, 20);
+      this.yAxisPrimaryTitleTextBox.Size = new System.Drawing.Size(361, 20);
       this.yAxisPrimaryTitleTextBox.TabIndex = 1;
       this.yAxisPrimaryTitleTextBox.Validated += new System.EventHandler(this.yPrimaryTitleTextBox_Validated);
@@ -151,9 +155,9 @@
       // yAxisSecondaryTitleTextBox
       // 
-      this.yAxisSecondaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.yAxisSecondaryTitleTextBox.Location = new System.Drawing.Point(66, 19);
+      this.yAxisSecondaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisSecondaryTitleTextBox.Location = new System.Drawing.Point(74, 19);
       this.yAxisSecondaryTitleTextBox.Name = "yAxisSecondaryTitleTextBox";
-      this.yAxisSecondaryTitleTextBox.Size = new System.Drawing.Size(369, 20);
+      this.yAxisSecondaryTitleTextBox.Size = new System.Drawing.Size(361, 20);
       this.yAxisSecondaryTitleTextBox.TabIndex = 1;
       this.yAxisSecondaryTitleTextBox.Validated += new System.EventHandler(this.ySecondaryTitleTextBox_Validated);
@@ -170,6 +174,7 @@
       // xAxisPrimaryGroupBox
       // 
-      this.xAxisPrimaryGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisPrimaryGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisPrimaryGroupBox.Controls.Add(this.xAxisPrimaryLogScaleCheckBox);
       this.xAxisPrimaryGroupBox.Controls.Add(this.panel2);
       this.xAxisPrimaryGroupBox.Controls.Add(this.panel1);
@@ -182,14 +187,26 @@
       this.xAxisPrimaryGroupBox.Location = new System.Drawing.Point(3, 3);
       this.xAxisPrimaryGroupBox.Name = "xAxisPrimaryGroupBox";
-      this.xAxisPrimaryGroupBox.Size = new System.Drawing.Size(441, 99);
+      this.xAxisPrimaryGroupBox.Size = new System.Drawing.Size(441, 126);
       this.xAxisPrimaryGroupBox.TabIndex = 0;
       this.xAxisPrimaryGroupBox.TabStop = false;
       this.xAxisPrimaryGroupBox.Text = "Primary Axis";
       // 
+      // xAxisPrimaryLogScaleCheckBox
+      // 
+      this.xAxisPrimaryLogScaleCheckBox.AutoSize = true;
+      this.xAxisPrimaryLogScaleCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.xAxisPrimaryLogScaleCheckBox.Location = new System.Drawing.Point(6, 99);
+      this.xAxisPrimaryLogScaleCheckBox.Name = "xAxisPrimaryLogScaleCheckBox";
+      this.xAxisPrimaryLogScaleCheckBox.Size = new System.Drawing.Size(83, 17);
+      this.xAxisPrimaryLogScaleCheckBox.TabIndex = 8;
+      this.xAxisPrimaryLogScaleCheckBox.Text = "Logarithmic:";
+      this.xAxisPrimaryLogScaleCheckBox.UseVisualStyleBackColor = true;
+      this.xAxisPrimaryLogScaleCheckBox.CheckedChanged += new System.EventHandler(this.xAxisPrimaryLogScaleCheckBox_CheckedChanged);
+      // 
       // panel2
       // 
       this.panel2.Controls.Add(this.xAxisPrimaryMaximumFixedRadioButton);
       this.panel2.Controls.Add(this.xAxisPrimaryMaximumAutoRadioButton);
-      this.panel2.Location = new System.Drawing.Point(66, 71);
+      this.panel2.Location = new System.Drawing.Point(74, 71);
       this.panel2.Name = "panel2";
       this.panel2.Size = new System.Drawing.Size(106, 20);
@@ -224,5 +241,5 @@
       this.panel1.Controls.Add(this.xAxisPrimaryMinimumFixedRadioButton);
       this.panel1.Controls.Add(this.xAxisPrimaryMinimumAutoRadioButton);
-      this.panel1.Location = new System.Drawing.Point(66, 45);
+      this.panel1.Location = new System.Drawing.Point(74, 45);
       this.panel1.Name = "panel1";
       this.panel1.Size = new System.Drawing.Size(106, 20);
@@ -255,6 +272,6 @@
       // xAxisPrimaryMinimumFixedTextBox
       // 
-      this.xAxisPrimaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisPrimaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisPrimaryMinimumFixedTextBox.Location = new System.Drawing.Point(191, 45);
       this.xAxisPrimaryMinimumFixedTextBox.Name = "xAxisPrimaryMinimumFixedTextBox";
@@ -265,6 +282,6 @@
       // xAxisPrimaryMaximumFixedTextBox
       // 
-      this.xAxisPrimaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisPrimaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisPrimaryMaximumFixedTextBox.Location = new System.Drawing.Point(191, 71);
       this.xAxisPrimaryMaximumFixedTextBox.Name = "xAxisPrimaryMaximumFixedTextBox";
@@ -293,9 +310,9 @@
       // xAxisPrimaryTitleTextBox
       // 
-      this.xAxisPrimaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.xAxisPrimaryTitleTextBox.Location = new System.Drawing.Point(66, 19);
+      this.xAxisPrimaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisPrimaryTitleTextBox.Location = new System.Drawing.Point(74, 19);
       this.xAxisPrimaryTitleTextBox.Name = "xAxisPrimaryTitleTextBox";
-      this.xAxisPrimaryTitleTextBox.Size = new System.Drawing.Size(369, 20);
+      this.xAxisPrimaryTitleTextBox.Size = new System.Drawing.Size(361, 20);
       this.xAxisPrimaryTitleTextBox.TabIndex = 1;
       this.xAxisPrimaryTitleTextBox.Validated += new System.EventHandler(this.xPrimaryTitleTextBox_Validated);
@@ -312,7 +329,8 @@
       // xAxisSecondaryGroupBox
       // 
-      this.xAxisSecondaryGroupBox.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.xAxisSecondaryGroupBox.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.xAxisSecondaryGroupBox.Controls.Add(this.xAxisSecondaryLogScaleCheckBox);
       this.xAxisSecondaryGroupBox.Controls.Add(this.panel4);
       this.xAxisSecondaryGroupBox.Controls.Add(this.panel3);
@@ -323,16 +341,28 @@
       this.xAxisSecondaryGroupBox.Controls.Add(this.label5);
       this.xAxisSecondaryGroupBox.Controls.Add(this.label6);
-      this.xAxisSecondaryGroupBox.Location = new System.Drawing.Point(3, 108);
+      this.xAxisSecondaryGroupBox.Location = new System.Drawing.Point(3, 135);
       this.xAxisSecondaryGroupBox.Name = "xAxisSecondaryGroupBox";
-      this.xAxisSecondaryGroupBox.Size = new System.Drawing.Size(441, 99);
+      this.xAxisSecondaryGroupBox.Size = new System.Drawing.Size(441, 125);
       this.xAxisSecondaryGroupBox.TabIndex = 1;
       this.xAxisSecondaryGroupBox.TabStop = false;
       this.xAxisSecondaryGroupBox.Text = "Secondary Axis";
       // 
+      // xAxisSecondaryLogScaleCheckBox
+      // 
+      this.xAxisSecondaryLogScaleCheckBox.AutoSize = true;
+      this.xAxisSecondaryLogScaleCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.xAxisSecondaryLogScaleCheckBox.Location = new System.Drawing.Point(6, 99);
+      this.xAxisSecondaryLogScaleCheckBox.Name = "xAxisSecondaryLogScaleCheckBox";
+      this.xAxisSecondaryLogScaleCheckBox.Size = new System.Drawing.Size(83, 17);
+      this.xAxisSecondaryLogScaleCheckBox.TabIndex = 8;
+      this.xAxisSecondaryLogScaleCheckBox.Text = "Logarithmic:";
+      this.xAxisSecondaryLogScaleCheckBox.UseVisualStyleBackColor = true;
+      this.xAxisSecondaryLogScaleCheckBox.CheckedChanged += new System.EventHandler(this.xAxisSecondaryLogScaleCheckBox_CheckedChanged);
+      // 
       // panel4
       // 
       this.panel4.Controls.Add(this.xAxisSecondaryMaximumFixedRadioButton);
       this.panel4.Controls.Add(this.xAxisSecondaryMaximumAutoRadioButton);
-      this.panel4.Location = new System.Drawing.Point(66, 71);
+      this.panel4.Location = new System.Drawing.Point(74, 71);
       this.panel4.Name = "panel4";
       this.panel4.Size = new System.Drawing.Size(106, 20);
@@ -367,5 +397,5 @@
       this.panel3.Controls.Add(this.xAxisSecondaryMinimumFixedRadioButton);
       this.panel3.Controls.Add(this.xAxisSecondaryMinimumAutoRadioButton);
-      this.panel3.Location = new System.Drawing.Point(66, 45);
+      this.panel3.Location = new System.Drawing.Point(74, 45);
       this.panel3.Name = "panel3";
       this.panel3.Size = new System.Drawing.Size(106, 20);
@@ -398,6 +428,6 @@
       // xAxisSecondaryMinimumFixedTextBox
       // 
-      this.xAxisSecondaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisSecondaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisSecondaryMinimumFixedTextBox.Location = new System.Drawing.Point(191, 45);
       this.xAxisSecondaryMinimumFixedTextBox.Name = "xAxisSecondaryMinimumFixedTextBox";
@@ -408,6 +438,6 @@
       // xAxisSecondaryMaximumFixedTextBox
       // 
-      this.xAxisSecondaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisSecondaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisSecondaryMaximumFixedTextBox.Location = new System.Drawing.Point(191, 71);
       this.xAxisSecondaryMaximumFixedTextBox.Name = "xAxisSecondaryMaximumFixedTextBox";
@@ -427,9 +457,9 @@
       // xAxisSecondaryTitleTextBox
       // 
-      this.xAxisSecondaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.xAxisSecondaryTitleTextBox.Location = new System.Drawing.Point(66, 19);
+      this.xAxisSecondaryTitleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisSecondaryTitleTextBox.Location = new System.Drawing.Point(74, 19);
       this.xAxisSecondaryTitleTextBox.Name = "xAxisSecondaryTitleTextBox";
-      this.xAxisSecondaryTitleTextBox.Size = new System.Drawing.Size(369, 20);
+      this.xAxisSecondaryTitleTextBox.Size = new System.Drawing.Size(361, 20);
       this.xAxisSecondaryTitleTextBox.TabIndex = 1;
       this.xAxisSecondaryTitleTextBox.Validated += new System.EventHandler(this.xSecondaryTitleTextBox_Validated);
@@ -455,6 +485,6 @@
       // axisTabControl
       // 
-      this.axisTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.axisTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.axisTabControl.Controls.Add(this.xAxisTabPage);
       this.axisTabControl.Controls.Add(this.yAxisTabPage);
@@ -462,5 +492,5 @@
       this.axisTabControl.Name = "axisTabControl";
       this.axisTabControl.SelectedIndex = 0;
-      this.axisTabControl.Size = new System.Drawing.Size(455, 236);
+      this.axisTabControl.Size = new System.Drawing.Size(455, 289);
       this.axisTabControl.TabIndex = 8;
       // 
@@ -472,5 +502,5 @@
       this.xAxisTabPage.Name = "xAxisTabPage";
       this.xAxisTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.xAxisTabPage.Size = new System.Drawing.Size(447, 210);
+      this.xAxisTabPage.Size = new System.Drawing.Size(447, 263);
       this.xAxisTabPage.TabIndex = 0;
       this.xAxisTabPage.Text = "X-Axis";
@@ -484,5 +514,5 @@
       this.yAxisTabPage.Name = "yAxisTabPage";
       this.yAxisTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.yAxisTabPage.Size = new System.Drawing.Size(447, 210);
+      this.yAxisTabPage.Size = new System.Drawing.Size(447, 263);
       this.yAxisTabPage.TabIndex = 1;
       this.yAxisTabPage.Text = "Y-Axis";
@@ -491,7 +521,8 @@
       // yAxisSecondaryGroupBox
       // 
-      this.yAxisSecondaryGroupBox.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.yAxisSecondaryGroupBox.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.yAxisSecondaryGroupBox.Controls.Add(this.yAxisSecondaryLogScaleCheckBox);
       this.yAxisSecondaryGroupBox.Controls.Add(this.panel8);
       this.yAxisSecondaryGroupBox.Controls.Add(this.panel7);
@@ -502,16 +533,28 @@
       this.yAxisSecondaryGroupBox.Controls.Add(this.label13);
       this.yAxisSecondaryGroupBox.Controls.Add(this.label14);
-      this.yAxisSecondaryGroupBox.Location = new System.Drawing.Point(3, 108);
+      this.yAxisSecondaryGroupBox.Location = new System.Drawing.Point(3, 135);
       this.yAxisSecondaryGroupBox.Name = "yAxisSecondaryGroupBox";
-      this.yAxisSecondaryGroupBox.Size = new System.Drawing.Size(441, 99);
+      this.yAxisSecondaryGroupBox.Size = new System.Drawing.Size(441, 125);
       this.yAxisSecondaryGroupBox.TabIndex = 1;
       this.yAxisSecondaryGroupBox.TabStop = false;
       this.yAxisSecondaryGroupBox.Text = "Secondary Axis";
       // 
+      // yAxisSecondaryLogScaleCheckBox
+      // 
+      this.yAxisSecondaryLogScaleCheckBox.AutoSize = true;
+      this.yAxisSecondaryLogScaleCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.yAxisSecondaryLogScaleCheckBox.Location = new System.Drawing.Point(6, 99);
+      this.yAxisSecondaryLogScaleCheckBox.Name = "yAxisSecondaryLogScaleCheckBox";
+      this.yAxisSecondaryLogScaleCheckBox.Size = new System.Drawing.Size(83, 17);
+      this.yAxisSecondaryLogScaleCheckBox.TabIndex = 9;
+      this.yAxisSecondaryLogScaleCheckBox.Text = "Logarithmic:";
+      this.yAxisSecondaryLogScaleCheckBox.UseVisualStyleBackColor = true;
+      this.yAxisSecondaryLogScaleCheckBox.CheckedChanged += new System.EventHandler(this.yAxisSecondaryLogScaleCheckBox_CheckedChanged);
+      // 
       // panel8
       // 
       this.panel8.Controls.Add(this.yAxisSecondaryMaximumFixedRadioButton);
       this.panel8.Controls.Add(this.yAxisSecondaryMaximumAutoRadioButton);
-      this.panel8.Location = new System.Drawing.Point(66, 71);
+      this.panel8.Location = new System.Drawing.Point(74, 71);
       this.panel8.Name = "panel8";
       this.panel8.Size = new System.Drawing.Size(106, 20);
@@ -546,5 +589,5 @@
       this.panel7.Controls.Add(this.yAxisSecondaryMinimumFixedRadioButton);
       this.panel7.Controls.Add(this.yAxisSecondaryMinimumAutoRadioButton);
-      this.panel7.Location = new System.Drawing.Point(66, 45);
+      this.panel7.Location = new System.Drawing.Point(74, 45);
       this.panel7.Name = "panel7";
       this.panel7.Size = new System.Drawing.Size(106, 20);
@@ -577,6 +620,6 @@
       // yAxisSecondaryMinimumFixedTextBox
       // 
-      this.yAxisSecondaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisSecondaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.yAxisSecondaryMinimumFixedTextBox.Location = new System.Drawing.Point(191, 45);
       this.yAxisSecondaryMinimumFixedTextBox.Name = "yAxisSecondaryMinimumFixedTextBox";
@@ -587,6 +630,6 @@
       // yAxisSecondaryMaximumFixedTextBox
       // 
-      this.yAxisSecondaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisSecondaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.yAxisSecondaryMaximumFixedTextBox.Location = new System.Drawing.Point(191, 71);
       this.yAxisSecondaryMaximumFixedTextBox.Name = "yAxisSecondaryMaximumFixedTextBox";
@@ -615,6 +658,7 @@
       // yAxisPrimaryGroupBox
       // 
-      this.yAxisPrimaryGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisPrimaryGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisPrimaryGroupBox.Controls.Add(this.yAxisPrimaryLogScaleCheckBox);
       this.yAxisPrimaryGroupBox.Controls.Add(this.panel6);
       this.yAxisPrimaryGroupBox.Controls.Add(this.panel5);
@@ -627,14 +671,26 @@
       this.yAxisPrimaryGroupBox.Location = new System.Drawing.Point(3, 3);
       this.yAxisPrimaryGroupBox.Name = "yAxisPrimaryGroupBox";
-      this.yAxisPrimaryGroupBox.Size = new System.Drawing.Size(441, 99);
+      this.yAxisPrimaryGroupBox.Size = new System.Drawing.Size(441, 126);
       this.yAxisPrimaryGroupBox.TabIndex = 0;
       this.yAxisPrimaryGroupBox.TabStop = false;
       this.yAxisPrimaryGroupBox.Text = "Primary Axis";
       // 
+      // yAxisPrimaryLogScaleCheckBox
+      // 
+      this.yAxisPrimaryLogScaleCheckBox.AutoSize = true;
+      this.yAxisPrimaryLogScaleCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.yAxisPrimaryLogScaleCheckBox.Location = new System.Drawing.Point(6, 99);
+      this.yAxisPrimaryLogScaleCheckBox.Name = "yAxisPrimaryLogScaleCheckBox";
+      this.yAxisPrimaryLogScaleCheckBox.Size = new System.Drawing.Size(83, 17);
+      this.yAxisPrimaryLogScaleCheckBox.TabIndex = 10;
+      this.yAxisPrimaryLogScaleCheckBox.Text = "Logarithmic:";
+      this.yAxisPrimaryLogScaleCheckBox.UseVisualStyleBackColor = true;
+      this.yAxisPrimaryLogScaleCheckBox.CheckedChanged += new System.EventHandler(this.yAxisPrimaryLogScaleCheckBox_CheckedChanged);
+      // 
       // panel6
       // 
       this.panel6.Controls.Add(this.yAxisPrimaryMaximumFixedRadioButton);
       this.panel6.Controls.Add(this.yAxisPrimaryMaximumAutoRadioButton);
-      this.panel6.Location = new System.Drawing.Point(66, 71);
+      this.panel6.Location = new System.Drawing.Point(74, 71);
       this.panel6.Name = "panel6";
       this.panel6.Size = new System.Drawing.Size(106, 20);
@@ -669,5 +725,5 @@
       this.panel5.Controls.Add(this.yAxisPrimaryMinimumAutoRadioButton);
       this.panel5.Controls.Add(this.yAxisPrimaryMinimumFixedRadioButton);
-      this.panel5.Location = new System.Drawing.Point(66, 45);
+      this.panel5.Location = new System.Drawing.Point(74, 45);
       this.panel5.Name = "panel5";
       this.panel5.Size = new System.Drawing.Size(106, 20);
@@ -700,6 +756,6 @@
       // yAxisPrimaryMinimumFixedTextBox
       // 
-      this.yAxisPrimaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisPrimaryMinimumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.yAxisPrimaryMinimumFixedTextBox.Location = new System.Drawing.Point(191, 45);
       this.yAxisPrimaryMinimumFixedTextBox.Name = "yAxisPrimaryMinimumFixedTextBox";
@@ -710,6 +766,6 @@
       // yAxisPrimaryMaximumFixedTextBox
       // 
-      this.yAxisPrimaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisPrimaryMaximumFixedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.yAxisPrimaryMaximumFixedTextBox.Location = new System.Drawing.Point(191, 71);
       this.yAxisPrimaryMaximumFixedTextBox.Name = "yAxisPrimaryMaximumFixedTextBox";
@@ -738,6 +794,6 @@
       // titleTextBox
       // 
-      this.titleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.titleTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.titleTextBox.Location = new System.Drawing.Point(66, 0);
       this.titleTextBox.Name = "titleTextBox";
@@ -757,6 +813,6 @@
       // axisFontLabel
       // 
-      this.axisFontLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.axisFontLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.axisFontLabel.AutoSize = true;
       this.axisFontLabel.Location = new System.Drawing.Point(98, 60);
@@ -768,6 +824,6 @@
       // titleFontLabel
       // 
-      this.titleFontLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.titleFontLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.titleFontLabel.AutoSize = true;
       this.titleFontLabel.Location = new System.Drawing.Point(98, 31);
@@ -822,6 +878,11 @@
       // titleFontDialog
       // 
+      this.titleFontDialog.Color = System.Drawing.SystemColors.ControlText;
       this.titleFontDialog.FontMustExist = true;
       this.titleFontDialog.ShowColor = true;
+      // 
+      // axisFontDialog
+      // 
+      this.axisFontDialog.Color = System.Drawing.SystemColors.ControlText;
       // 
       // DataTableVisualPropertiesControl
@@ -838,5 +899,5 @@
       this.Controls.Add(this.titleFontButton);
       this.Name = "DataTableVisualPropertiesControl";
-      this.Size = new System.Drawing.Size(455, 322);
+      this.Size = new System.Drawing.Size(455, 373);
       this.xAxisPrimaryGroupBox.ResumeLayout(false);
       this.xAxisPrimaryGroupBox.PerformLayout();
@@ -940,4 +1001,8 @@
     private System.Windows.Forms.Panel panel7;
     private System.Windows.Forms.Panel panel8;
+    private System.Windows.Forms.CheckBox xAxisPrimaryLogScaleCheckBox;
+    private System.Windows.Forms.CheckBox xAxisSecondaryLogScaleCheckBox;
+    private System.Windows.Forms.CheckBox yAxisSecondaryLogScaleCheckBox;
+    private System.Windows.Forms.CheckBox yAxisPrimaryLogScaleCheckBox;
   }
 }
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs	(revision 9258)
@@ -20,8 +20,8 @@
 #endregion
 
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.Analysis.Views {
@@ -75,4 +75,5 @@
           xAxisPrimaryMaximumFixedRadioButton.Checked = false;
           xAxisPrimaryMaximumFixedTextBox.Text = string.Empty;
+          xAxisPrimaryLogScaleCheckBox.Checked = false;
           xAxisSecondaryTitleTextBox.Text = string.Empty;
           xAxisSecondaryMinimumAutoRadioButton.Checked = false;
@@ -82,4 +83,5 @@
           xAxisSecondaryMaximumFixedRadioButton.Checked = false;
           xAxisSecondaryMaximumFixedTextBox.Text = string.Empty;
+          xAxisSecondaryLogScaleCheckBox.Checked = false;
 
           yAxisPrimaryTitleTextBox.Text = string.Empty;
@@ -90,4 +92,5 @@
           yAxisPrimaryMaximumFixedRadioButton.Checked = false;
           yAxisPrimaryMaximumFixedTextBox.Text = string.Empty;
+          yAxisPrimaryLogScaleCheckBox.Checked = false;
           yAxisSecondaryTitleTextBox.Text = string.Empty;
           yAxisSecondaryMinimumAutoRadioButton.Checked = false;
@@ -97,4 +100,5 @@
           yAxisSecondaryMaximumFixedRadioButton.Checked = false;
           yAxisSecondaryMaximumFixedTextBox.Text = string.Empty;
+          yAxisSecondaryLogScaleCheckBox.Checked = false;
         } else {
           titleFontLabel.Text = "( " + FormatFont(Content.TitleFont) + " )";
@@ -109,4 +113,5 @@
           xAxisPrimaryMaximumFixedRadioButton.Checked = !Content.XAxisMaximumAuto;
           xAxisPrimaryMaximumFixedTextBox.Text = Content.XAxisMaximumFixedValue.ToString();
+          xAxisPrimaryLogScaleCheckBox.Checked = Content.XAxisLogScale;
           xAxisSecondaryTitleTextBox.Text = Content.SecondXAxisTitle;
           xAxisSecondaryMinimumAutoRadioButton.Checked = Content.SecondXAxisMinimumAuto;
@@ -116,4 +121,5 @@
           xAxisSecondaryMaximumFixedRadioButton.Checked = !Content.SecondXAxisMaximumAuto;
           xAxisSecondaryMaximumFixedTextBox.Text = Content.SecondXAxisMaximumFixedValue.ToString();
+          xAxisSecondaryLogScaleCheckBox.Checked = Content.SecondXAxisLogScale;
 
           yAxisPrimaryTitleTextBox.Text = Content.YAxisTitle;
@@ -124,4 +130,5 @@
           yAxisPrimaryMaximumFixedRadioButton.Checked = !Content.YAxisMaximumAuto;
           yAxisPrimaryMaximumFixedTextBox.Text = Content.YAxisMaximumFixedValue.ToString();
+          yAxisPrimaryLogScaleCheckBox.Checked = Content.YAxisLogScale;
           yAxisSecondaryTitleTextBox.Text = Content.SecondYAxisTitle;
           yAxisSecondaryMinimumAutoRadioButton.Checked = Content.SecondYAxisMinimumAuto;
@@ -131,7 +138,7 @@
           yAxisSecondaryMaximumFixedRadioButton.Checked = !Content.SecondYAxisMaximumAuto;
           yAxisSecondaryMaximumFixedTextBox.Text = Content.SecondYAxisMaximumFixedValue.ToString();
-        }
-      }
-      finally { SuppressEvents = false; }
+          yAxisSecondaryLogScaleCheckBox.Checked = Content.SecondYAxisLogScale;
+        }
+      } finally { SuppressEvents = false; }
       SetEnabledStateOfControls();
     }
@@ -333,6 +340,5 @@
           Content.XAxisMinimumAuto = xAxisPrimaryMinimumAutoRadioButton.Checked;
           if (Content.XAxisMinimumAuto) xAxisPrimaryMinimumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -345,6 +351,5 @@
           Content.XAxisMaximumAuto = xAxisPrimaryMaximumAutoRadioButton.Checked;
           if (Content.XAxisMaximumAuto) xAxisPrimaryMaximumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -357,6 +362,5 @@
           Content.SecondXAxisMinimumAuto = xAxisSecondaryMinimumAutoRadioButton.Checked;
           if (Content.SecondXAxisMinimumAuto) xAxisSecondaryMinimumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -369,6 +373,5 @@
           Content.SecondXAxisMaximumAuto = xAxisSecondaryMaximumAutoRadioButton.Checked;
           if (Content.SecondXAxisMaximumAuto) xAxisSecondaryMaximumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -381,6 +384,5 @@
           Content.YAxisMinimumAuto = yAxisPrimaryMinimumAutoRadioButton.Checked;
           if (Content.YAxisMinimumAuto) yAxisPrimaryMinimumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -393,6 +395,5 @@
           Content.YAxisMaximumAuto = yAxisPrimaryMaximumAutoRadioButton.Checked;
           if (Content.YAxisMaximumAuto) yAxisPrimaryMaximumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -405,6 +406,5 @@
           Content.SecondYAxisMinimumAuto = yAxisSecondaryMinimumAutoRadioButton.Checked;
           if (Content.SecondYAxisMinimumAuto) yAxisSecondaryMinimumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
+        } finally { SuppressEvents = false; }
         SetEnabledStateOfControls();
       }
@@ -417,7 +417,42 @@
           Content.SecondYAxisMaximumAuto = yAxisSecondaryMaximumAutoRadioButton.Checked;
           if (Content.SecondYAxisMaximumAuto) yAxisSecondaryMaximumFixedTextBox.Text = double.NaN.ToString();
-        }
-        finally { SuppressEvents = false; }
-        SetEnabledStateOfControls();
+        } finally { SuppressEvents = false; }
+        SetEnabledStateOfControls();
+      }
+    }
+
+    private void xAxisPrimaryLogScaleCheckBox_CheckedChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.XAxisLogScale = xAxisPrimaryLogScaleCheckBox.Checked;
+        } finally { SuppressEvents = false; }
+      }
+    }
+
+    private void xAxisSecondaryLogScaleCheckBox_CheckedChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.SecondXAxisLogScale = xAxisSecondaryLogScaleCheckBox.Checked;
+        } finally { SuppressEvents = false; }
+      }
+    }
+
+    private void yAxisPrimaryLogScaleCheckBox_CheckedChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.YAxisLogScale = yAxisPrimaryLogScaleCheckBox.Checked;
+        } finally { SuppressEvents = false; }
+      }
+    }
+
+    private void yAxisSecondaryLogScaleCheckBox_CheckedChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.SecondYAxisLogScale = yAxisSecondaryLogScaleCheckBox.Checked;
+        } finally { SuppressEvents = false; }
       }
     }
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 9258)
@@ -69,5 +69,5 @@
       this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.okButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.okButton.Location = new System.Drawing.Point(325, 400);
+      this.okButton.Location = new System.Drawing.Point(325, 425);
       this.okButton.Name = "okButton";
       this.okButton.Size = new System.Drawing.Size(75, 23);
@@ -81,5 +81,5 @@
       this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(406, 400);
+      this.cancelButton.Location = new System.Drawing.Point(406, 425);
       this.cancelButton.Name = "cancelButton";
       this.cancelButton.Size = new System.Drawing.Size(75, 23);
@@ -91,7 +91,7 @@
       // 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.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.seriesTabPage);
       this.tabControl.Controls.Add(this.chartTabPage);
@@ -99,5 +99,5 @@
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(469, 382);
+      this.tabControl.Size = new System.Drawing.Size(469, 407);
       this.tabControl.TabIndex = 2;
       // 
@@ -108,5 +108,5 @@
       this.seriesTabPage.Name = "seriesTabPage";
       this.seriesTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.seriesTabPage.Size = new System.Drawing.Size(461, 356);
+      this.seriesTabPage.Size = new System.Drawing.Size(461, 381);
       this.seriesTabPage.TabIndex = 0;
       this.seriesTabPage.Text = "Series";
@@ -115,7 +115,7 @@
       // splitContainer
       // 
-      this.splitContainer.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.splitContainer.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.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
       this.splitContainer.Location = new System.Drawing.Point(0, 0);
@@ -133,5 +133,5 @@
       this.splitContainer.Panel2.Controls.Add(this.dataRowVisualPropertiesControl);
       this.splitContainer.Panel2MinSize = 50;
-      this.splitContainer.Size = new System.Drawing.Size(461, 356);
+      this.splitContainer.Size = new System.Drawing.Size(461, 381);
       this.splitContainer.SplitterDistance = 125;
       this.splitContainer.TabIndex = 0;
@@ -161,7 +161,7 @@
       // seriesListView
       // 
-      this.seriesListView.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.seriesListView.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.seriesListView.HideSelection = false;
       this.seriesListView.Location = new System.Drawing.Point(3, 32);
@@ -169,5 +169,5 @@
       this.seriesListView.Name = "seriesListView";
       this.seriesListView.ShowGroups = false;
-      this.seriesListView.Size = new System.Drawing.Size(119, 321);
+      this.seriesListView.Size = new System.Drawing.Size(119, 346);
       this.seriesListView.TabIndex = 2;
       this.seriesListView.UseCompatibleStateImageBehavior = false;
@@ -177,11 +177,11 @@
       // dataRowVisualPropertiesControl
       // 
-      this.dataRowVisualPropertiesControl.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.dataRowVisualPropertiesControl.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.dataRowVisualPropertiesControl.Content = null;
       this.dataRowVisualPropertiesControl.Location = new System.Drawing.Point(3, 26);
       this.dataRowVisualPropertiesControl.Name = "dataRowVisualPropertiesControl";
-      this.dataRowVisualPropertiesControl.Size = new System.Drawing.Size(326, 327);
+      this.dataRowVisualPropertiesControl.Size = new System.Drawing.Size(326, 352);
       this.dataRowVisualPropertiesControl.TabIndex = 0;
       // 
@@ -192,5 +192,5 @@
       this.chartTabPage.Name = "chartTabPage";
       this.chartTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.chartTabPage.Size = new System.Drawing.Size(461, 356);
+      this.chartTabPage.Size = new System.Drawing.Size(461, 381);
       this.chartTabPage.TabIndex = 1;
       this.chartTabPage.Text = "Chart";
@@ -199,11 +199,11 @@
       // dataTableVisualPropertiesControl
       // 
-      this.dataTableVisualPropertiesControl.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.dataTableVisualPropertiesControl.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.dataTableVisualPropertiesControl.Content = null;
       this.dataTableVisualPropertiesControl.Location = new System.Drawing.Point(3, 6);
       this.dataTableVisualPropertiesControl.Name = "dataTableVisualPropertiesControl";
-      this.dataTableVisualPropertiesControl.Size = new System.Drawing.Size(455, 347);
+      this.dataTableVisualPropertiesControl.Size = new System.Drawing.Size(455, 372);
       this.dataTableVisualPropertiesControl.TabIndex = 0;
       // 
@@ -213,5 +213,5 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(493, 435);
+      this.ClientSize = new System.Drawing.Size(493, 460);
       this.Controls.Add(this.tabControl);
       this.Controls.Add(this.cancelButton);
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs	(revision 9258)
@@ -20,8 +20,8 @@
 #endregion
 
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using System.ComponentModel;
 using System.Drawing;
-using HeuristicLab.Common;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Analysis {
@@ -312,4 +312,44 @@
           OnPropertyChanged("SecondYAxisMaximumFixedValue");
         }
+      }
+    }
+
+    private bool xAxisLogScale;
+    public bool XAxisLogScale {
+      get { return xAxisLogScale; }
+      set {
+        if (xAxisLogScale == value) return;
+        xAxisLogScale = value;
+        OnPropertyChanged("XAxisLogScale");
+      }
+    }
+
+    private bool secondXAxisLogScale;
+    public bool SecondXAxisLogScale {
+      get { return secondXAxisLogScale; }
+      set {
+        if (secondXAxisLogScale == value) return;
+        secondXAxisLogScale = value;
+        OnPropertyChanged("SecondXAxisLogScale");
+      }
+    }
+
+    private bool yAxisLogScale;
+    public bool YAxisLogScale {
+      get { return yAxisLogScale; }
+      set {
+        if (yAxisLogScale == value) return;
+        yAxisLogScale = value;
+        OnPropertyChanged("YAxisLogScale");
+      }
+    }
+
+    private bool secondYAxisLogScale;
+    public bool SecondYAxisLogScale {
+      get { return secondYAxisLogScale; }
+      set {
+        if (secondYAxisLogScale == value) return;
+        secondYAxisLogScale = value;
+        OnPropertyChanged("SecondYAxisLogScale");
       }
     }
@@ -472,4 +512,8 @@
       this.secondYAxisMaximumAuto = original.secondYAxisMaximumAuto;
       this.secondYAxisMaximumFixedValue = original.secondYAxisMaximumFixedValue;
+      this.xAxisLogScale = original.xAxisLogScale;
+      this.secondXAxisLogScale = original.secondXAxisLogScale;
+      this.yAxisLogScale = original.yAxisLogScale;
+      this.secondYAxisLogScale = original.secondYAxisLogScale;
     }
     public DataTableVisualProperties() {
@@ -497,4 +541,8 @@
       this.secondYAxisMaximumAuto = true;
       this.secondYAxisMaximumFixedValue = double.NaN;
+      this.xAxisLogScale = false;
+      this.secondXAxisLogScale = false;
+      this.yAxisLogScale = false;
+      this.secondYAxisLogScale = false;
     }
     public DataTableVisualProperties(string title)
@@ -509,5 +557,5 @@
     public event PropertyChangedEventHandler PropertyChanged;
     protected virtual void OnPropertyChanged(string propertyName) {
-      PropertyChangedEventHandler handler = PropertyChanged;
+      var handler = PropertyChanged;
       if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
     }
@@ -547,6 +595,6 @@
         this.secondYAxisMaximumAuto = true;
         this.secondYAxisMaximumFixedValue = double.NaN;
+      }
       #endregion
-      }
     }
   }
Index: /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Creators/NormalDistributedRealVectorCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Creators/NormalDistributedRealVectorCreator.cs	(revision 9258)
+++ /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Creators/NormalDistributedRealVectorCreator.cs	(revision 9258)
@@ -0,0 +1,115 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Random;
+using System;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  /// <summary>
+  /// An operator which creates a new random real vector with each element normally distributed in a specified range.
+  /// </summary>
+  [Item("NormalDistributedRealVectorCreator", "An operator which creates a new random real vector with each element normally distributed in a specified range.")]
+  [StorableClass]
+  public class NormalDistributedRealVectorCreator : RealVectorCreator, IStrategyParameterCreator {
+
+    public IValueLookupParameter<RealVector> MeanParameter {
+      get { return (IValueLookupParameter<RealVector>)Parameters["Mean"]; }
+    }
+
+    public IValueLookupParameter<DoubleArray> SigmaParameter {
+      get { return (IValueLookupParameter<DoubleArray>)Parameters["Sigma"]; }
+    }
+
+    [StorableConstructor]
+    protected NormalDistributedRealVectorCreator(bool deserializing) : base(deserializing) { }
+    protected NormalDistributedRealVectorCreator(NormalDistributedRealVectorCreator original, Cloner cloner) : base(original, cloner) { }
+    public NormalDistributedRealVectorCreator()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<RealVector>("Mean", "The mean vector around which the points will be sampled."));
+      Parameters.Add(new ValueLookupParameter<DoubleArray>("Sigma", "The standard deviations for all or for each dimension."));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new NormalDistributedRealVectorCreator(this, cloner);
+    }
+
+    /// <summary>
+    /// Generates a new random real vector normally distributed around the given mean with the given <paramref name="length"/> and in the interval [min,max).
+    /// </summary>
+    /// <exception cref="ArgumentException">
+    /// Thrown when <paramref name="random"/> is null.<br />
+    /// Thrown when <paramref name="mean"/> is null or of length 0.<br />
+    /// Thrown when <paramref name="sigma"/> is null or of length 0.<br />
+    /// </exception>
+    /// <remarks>
+    /// If no bounds are given the bounds will be set to (double.MinValue;double.MaxValue).
+    /// 
+    /// If dimensions of the mean do not lie within the given bounds they're set to either to the min or max of the bounds depending on whether the given dimension
+    /// for the mean is smaller or larger than the bounds. If min and max for a certain dimension are almost the same the resulting value will be set to min.
+    /// 
+    /// However, please consider that such static bounds are not really meaningful to optimize.
+    /// 
+    /// The sigma vector can contain 0 values in which case the dimension will be exactly the same as the given mean.
+    /// </remarks>
+    /// <param name="random">The random number generator.</param>
+    /// <param name="mean">The mean vector around which the resulting vector is sampled.</param>
+    /// <param name="sigma">The vector of standard deviations, must have at least one row.</param>
+    /// <param name="bounds">The lower and upper bound (1st and 2nd column) of the positions in the vector. If there are less rows than dimensions, the rows are cycled.</param>
+    /// <returns>The newly created real vector.</returns>
+    public static RealVector Apply(IRandom random, RealVector mean, DoubleArray sigma, DoubleMatrix bounds) {
+      if (random == null) throw new ArgumentException("Random is not defined", "random");
+      if (mean == null || mean.Length == 0) throw new ArgumentException("Mean is not defined", "mean");
+      if (sigma == null || sigma.Length == 0) throw new ArgumentException("Sigma is not defined.", "sigma");
+      if (bounds == null || bounds.Rows == 0) bounds = new DoubleMatrix(new[,] { { double.MinValue, double.MaxValue } });
+      var nd = new NormalDistributedRandom(random, 0, 1);
+      var result = (RealVector)mean.Clone();
+      for (int i = 0; i < result.Length; i++) {
+        var min = bounds[i % bounds.Rows, 0];
+        var max = bounds[i % bounds.Rows, 1];
+        if (min.IsAlmost(max) || mean[i] < min) result[i] = min;
+        else if (mean[i] > max) result[i] = max;
+        else {
+          do {
+            result[i] = mean[i] + sigma[i % sigma.Length] * nd.NextDouble();
+          } while (result[i] < bounds[i % sigma.Length, 0] || result[i] > bounds[i % sigma.Length, 1]);
+        }
+      }
+      return result;
+    }
+
+    /// <summary>
+    /// Forwards the call to <see cref="Apply(IRandom, RealVector, DoubleArray, DoubleMatrix)"/>.
+    /// </summary>
+    /// <param name="random">The pseudo random number generator to use.</param>
+    /// <param name="length">The length of the real vector.</param>
+    /// <param name="bounds">The lower and upper bound (1st and 2nd column) of the positions in the vector. If there are less rows than dimensions, the rows are cycled.</param>
+    /// <returns>The newly created real vector.</returns>
+    protected override RealVector Create(IRandom random, IntValue length, DoubleMatrix bounds) {
+      return Apply(random, MeanParameter.ActualValue, SigmaParameter.ActualValue, bounds);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 9257)
+++ /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 9258)
@@ -108,4 +108,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Creators\NormalDistributedRealVectorCreator.cs" />
     <Compile Include="Interfaces\IRealVectorMultiNeighborhoodShakingOperator.cs" />
     <Compile Include="ParticleOperators\RealVectorParticleCreator.cs" />
Index: /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 9257)
+++ /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 9258)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -32,4 +29,7 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
+using System;
+using System.Collections.Generic;
+using System.Linq;
 
 namespace HeuristicLab.Problems.TestFunctions {
@@ -125,10 +125,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new SingleObjectiveTestFunctionProblem(this, cloner);
-    }
-
-    private bool IsNotFieldReferenced(IOperator x) {
-      return !(x == strategyVectorCreator
-        || x == strategyVectorCrossover
-        || x == strategyVectorManipulator);
     }
 
@@ -337,5 +331,5 @@
     }
     private void ParameterizeOperators() {
-      foreach (IRealVectorCrossover op in Operators.OfType<IRealVectorCrossover>()) {
+      foreach (var op in Operators.OfType<IRealVectorCrossover>()) {
         op.ParentsParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.ParentsParameter.Hidden = true;
@@ -345,5 +339,5 @@
         op.BoundsParameter.Hidden = true;
       }
-      foreach (IRealVectorManipulator op in Operators.OfType<IRealVectorManipulator>()) {
+      foreach (var op in Operators.OfType<IRealVectorManipulator>()) {
         op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.RealVectorParameter.Hidden = true;
@@ -351,13 +345,13 @@
         op.BoundsParameter.Hidden = true;
       }
-      foreach (IRealVectorMoveOperator op in Operators.OfType<IRealVectorMoveOperator>()) {
-        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
-        op.RealVectorParameter.Hidden = true;
-      }
-      foreach (IRealVectorMoveGenerator op in Operators.OfType<IRealVectorMoveGenerator>()) {
+      foreach (var op in Operators.OfType<IRealVectorMoveOperator>()) {
+        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
+        op.RealVectorParameter.Hidden = true;
+      }
+      foreach (var op in Operators.OfType<IRealVectorMoveGenerator>()) {
         op.BoundsParameter.ActualName = BoundsParameter.Name;
         op.BoundsParameter.Hidden = true;
       }
-      foreach (ISingleObjectiveTestFunctionAdditiveMoveEvaluator op in Operators.OfType<ISingleObjectiveTestFunctionAdditiveMoveEvaluator>()) {
+      foreach (var op in Operators.OfType<ISingleObjectiveTestFunctionAdditiveMoveEvaluator>()) {
         op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
         op.QualityParameter.Hidden = true;
@@ -365,5 +359,5 @@
         op.RealVectorParameter.Hidden = true;
       }
-      foreach (IRealVectorParticleCreator op in Operators.OfType<IRealVectorParticleCreator>()) {
+      foreach (var op in Operators.OfType<IRealVectorParticleCreator>()) {
         op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.RealVectorParameter.Hidden = true;
@@ -373,5 +367,5 @@
         op.ProblemSizeParameter.Hidden = true;
       }
-      foreach (IRealVectorParticleUpdater op in Operators.OfType<IRealVectorParticleUpdater>()) {
+      foreach (var op in Operators.OfType<IRealVectorParticleUpdater>()) {
         op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.RealVectorParameter.Hidden = true;
@@ -379,5 +373,5 @@
         op.BoundsParameter.Hidden = true;
       }
-      foreach (IRealVectorSwarmUpdater op in Operators.OfType<IRealVectorSwarmUpdater>()) {
+      foreach (var op in Operators.OfType<IRealVectorSwarmUpdater>()) {
         op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.RealVectorParameter.Hidden = true;
@@ -385,17 +379,17 @@
         op.MaximizationParameter.Hidden = true;
       }
-      foreach (IRealVectorMultiNeighborhoodShakingOperator op in Operators.OfType<IRealVectorMultiNeighborhoodShakingOperator>()) {
-        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
-        op.RealVectorParameter.Hidden = true;
-      }
-      foreach (ISingleObjectiveImprovementOperator op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
+      foreach (var op in Operators.OfType<IRealVectorMultiNeighborhoodShakingOperator>()) {
+        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
+        op.RealVectorParameter.Hidden = true;
+      }
+      foreach (var op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
         op.SolutionParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.SolutionParameter.Hidden = true;
       }
-      foreach (ISingleObjectivePathRelinker op in Operators.OfType<ISingleObjectivePathRelinker>()) {
+      foreach (var op in Operators.OfType<ISingleObjectivePathRelinker>()) {
         op.ParentsParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.ParentsParameter.Hidden = true;
       }
-      foreach (SingleObjectiveTestFunctionSimilarityCalculator op in Operators.OfType<SingleObjectiveTestFunctionSimilarityCalculator>()) {
+      foreach (var op in Operators.OfType<SingleObjectiveTestFunctionSimilarityCalculator>()) {
         op.SolutionVariableName = SolutionCreator.RealVectorParameter.ActualName;
         op.QualityVariableName = Evaluator.QualityParameter.ActualName;
@@ -404,5 +398,5 @@
     }
     private void UpdateStrategyVectorBounds() {
-      DoubleMatrix strategyBounds = (DoubleMatrix)Bounds.Clone();
+      var strategyBounds = (DoubleMatrix)Bounds.Clone();
       for (int i = 0; i < strategyBounds.Rows; i++) {
         if (strategyBounds[i, 0] < 0) strategyBounds[i, 0] = 0;
