Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs	(revision 13815)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs	(revision 13821)
@@ -44,6 +44,6 @@
 
     // graph layout options
-    public double IdealEdgeLength { get; set; } = 50;
-    public bool PerformEdgeRouting { get; set; } = false;
+    public double IdealEdgeLength { get; set; }
+    public bool PerformEdgeRouting { get; set; }
     public Routing RoutingMode { get; set; }
 
@@ -84,4 +84,5 @@
       shapes = new Dictionary<Type, LabeledPrimitive>();
       SmoothingMode = SmoothingMode.HighQuality; // set antialiasing for nicer rendering
+      IdealEdgeLength = 50;
     }
 
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/Layout/ConstrainedForceDirectedLayout.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/Layout/ConstrainedForceDirectedLayout.cs	(revision 13815)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/Layout/ConstrainedForceDirectedLayout.cs	(revision 13821)
@@ -45,13 +45,13 @@
     private Dictionary<uint, uint> idMap;
     private Dictionary<IVertex, int> indexMap;
-    public double IdealEdgeLength { get; set; } = 1;
-    public double DefaultEdgeLength { get; set; } = 200;
-    public bool PreventOverlaps { get; set; } = true;
-    public int LayoutWidth { get; set; } = 800;
-    public int LayoutHeight { get; set; } = 600;
-    public bool PerformEdgeRouting { get; set; } = true;
-    public int MinHorizontalSpacing { get; set; } = 0;
-    public int MinVerticalSpacing { get; set; } = 0;
-    public EdgeRouting EdgeRoutingMode { get; set; } = EdgeRouting.None;
+    public double IdealEdgeLength { get; set; }
+    public double DefaultEdgeLength { get; set; }
+    public bool PreventOverlaps { get; set; }
+    public int LayoutWidth { get; set; }
+    public int LayoutHeight { get; set; }
+    public bool PerformEdgeRouting { get; set; }
+    public int MinHorizontalSpacing { get; set; }
+    public int MinVerticalSpacing { get; set; }
+    public EdgeRouting EdgeRoutingMode { get; set; }
 
     public Dictionary<IVertex, PointF> VertexPositions {
@@ -82,5 +82,15 @@
     }
 
-    public ConstrainedForceDirectedLayout() { }
+    public ConstrainedForceDirectedLayout() {
+      IdealEdgeLength = 1;
+      DefaultEdgeLength = 200;
+      PreventOverlaps = true;
+      LayoutWidth = 800;
+      LayoutHeight = 600;
+      PerformEdgeRouting = true;
+      MinHorizontalSpacing = 0;
+      MinVerticalSpacing = 0;
+      EdgeRoutingMode = EdgeRouting.None;
+    }
 
     public void Run(Dictionary<IVertex, RectangleF> nodeShapes) {
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs	(revision 13815)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs	(revision 13821)
@@ -1,3 +1,5 @@
-﻿namespace HeuristicLab.VariableInteractionNetworks.Views {
+﻿using System.Globalization;
+
+namespace HeuristicLab.VariableInteractionNetworks.Views {
   partial class RunCollectionVariableInteractionNetworkView {
     /// <summary> 
@@ -114,5 +116,5 @@
       this.impactThresholdTextBox.Size = new System.Drawing.Size(201, 20);
       this.impactThresholdTextBox.TabIndex = 2;
-      this.impactThresholdTextBox.Text = "0.2";
+      this.impactThresholdTextBox.Text = 0.2.ToString(CultureInfo.CurrentCulture);
       this.impactThresholdTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.TextBoxValidating);
       this.impactThresholdTextBox.Validated += new System.EventHandler(this.ImpactThresholdTextBoxValidated);
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs	(revision 13815)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs	(revision 13821)
@@ -24,4 +24,5 @@
 using System.ComponentModel;
 using System.Drawing;
+using System.Globalization;
 using System.Linq;
 using System.Text;
@@ -237,5 +238,5 @@
             vn.AddVertex(junctionNode);
             nodes[junctionLabel] = junctionNode;
-            junctionNode.Label = string.Format("Target quality: {0:0.000}", solutionsEnsemble.TrainingRSquared);
+            junctionNode.Label = solutionsEnsemble.TrainingRSquared.ToString("N3", CultureInfo.CurrentCulture);
           }
           IArc arc;
@@ -247,9 +248,9 @@
               nodes[v] = variableNode;
             }
-            arc = new Arc(variableNode, junctionNode) { Weight = impact, Label = string.Format("Impact: {0:0.000}", impact) };
+            arc = new Arc(variableNode, junctionNode) { Weight = impact, Label = impact.ToString("N3", CultureInfo.CurrentCulture) };
             vn.AddArc(arc);
           }
           var trainingR2 = ((IRegressionSolution)((JunctionNetworkNode)junctionNode).Data).TrainingRSquared;
-          arc = new Arc(junctionNode, targetNode) { Weight = junctionNode.InArcs.Sum(x => x.Weight), Label = string.Format("Quality: {0:0.000}", trainingR2) };
+          arc = new Arc(junctionNode, targetNode) { Weight = junctionNode.InArcs.Sum(x => x.Weight), Label = trainingR2.ToString("N3", CultureInfo.CurrentCulture) };
           vn.AddArc(arc);
         } else {
@@ -261,5 +262,7 @@
               nodes[v] = variableNode;
             }
-            var arc = new Arc(variableNode, targetNode) { Weight = impact, Label = string.Format("Impact: {0:0.000}", impact) };
+            var arc = new Arc(variableNode, targetNode) {
+              Weight = impact, Label = impact.ToString("N3", CultureInfo.CurrentCulture)
+            };
             vn.AddArc(arc);
           }
@@ -392,5 +395,5 @@
       double impact;
       if (!double.TryParse(tb.Text, out impact))
-        impact = 0.1;
+        impact = 0.2;
       var network = ApplyThreshold(variableInteractionNetwork, impact);
       graphChart.Graph = network;
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/CreateTargetVariationExperimentDialog.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/CreateTargetVariationExperimentDialog.cs	(revision 13815)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/CreateTargetVariationExperimentDialog.cs	(revision 13821)
@@ -156,10 +156,21 @@
       var totalNumberOfCombinations = (inputCount + 1) * EnumerableExtensions.BinomialCoefficient(inputCount, combinationGroupSize);
       int progress = 0;
-      foreach (var optimizer in CreateVariableCombinations(algorithm, combinationGroupSize, repetitions)) {
-        experiment.Optimizers.Add(optimizer);
-        progress++;
-        worker.ReportProgress((int)Math.Round(100d * progress / totalNumberOfCombinations));
-      }
-      Experiment = experiment;
+      try {
+        foreach (var optimizer in CreateVariableCombinations(algorithm, combinationGroupSize, repetitions)) {
+          if (worker.CancellationPending)
+            throw new OperationCanceledException();
+          experiment.Optimizers.Add(optimizer);
+          progress++;
+          worker.ReportProgress((int)Math.Round(100d * progress / totalNumberOfCombinations));
+        }
+        Experiment = experiment;
+      } catch (OperationCanceledException) {
+        e.Cancel = true;
+        UpdateProgress(0);
+        progressBar.Visible = false;
+        okButton.Enabled = true;
+        combinationsLabel.Visible = true;
+        combinationCountLabel.Visible = true;
+      }
     }
 
