Index: /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 3739)
@@ -265,4 +265,5 @@
       problem.EvaluatorChanged -= new EventHandler(Problem_EvaluatorChanged);
       problem.OperatorsChanged -= new EventHandler(Problem_OperatorsChanged);
+      problem.Reset -= new EventHandler(Problem_Reset);
     }
     protected virtual void RegisterProblemEvents() {
@@ -270,8 +271,12 @@
       problem.EvaluatorChanged += new EventHandler(Problem_EvaluatorChanged);
       problem.OperatorsChanged += new EventHandler(Problem_OperatorsChanged);
+      problem.Reset += new EventHandler(Problem_Reset);
     }
     protected virtual void Problem_SolutionCreatorChanged(object sender, EventArgs e) { }
     protected virtual void Problem_EvaluatorChanged(object sender, EventArgs e) { }
     protected virtual void Problem_OperatorsChanged(object sender, EventArgs e) { }
+    protected virtual void Problem_Reset(object sender, EventArgs e) {
+      Prepare();
+    }
 
     protected virtual void DeregisterRunsEvents() {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IProblem.cs	(revision 3739)
@@ -39,4 +39,5 @@
     event EventHandler EvaluatorChanged;
     event EventHandler OperatorsChanged;
+    event EventHandler Reset;
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs	(revision 3739)
@@ -230,20 +230,21 @@
     public event EventHandler SolutionCreatorChanged;
     private void OnSolutionCreatorChanged() {
-      var changed = SolutionCreatorChanged;
-      if (changed != null)
-        changed(this, EventArgs.Empty);
+      EventHandler handler = SolutionCreatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
-      var changed = EvaluatorChanged;
-      if (changed != null)
-        changed(this, EventArgs.Empty);
-    }
-
+      EventHandler handler = EvaluatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler OperatorsChanged;
     private void OnOperatorsChanged() {
-      var changed = OperatorsChanged;
-      if (changed != null)
-        changed(this, EventArgs.Empty);
+      EventHandler handler = OperatorsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Reset;
+    private void OnReset() {
+      EventHandler handler = Reset;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
 
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs	(revision 3739)
@@ -319,4 +319,10 @@
     private void RaiseOperatorsChanged(EventArgs e) {
       var changed = OperatorsChanged;
+      if (changed != null)
+        changed(this, e);
+    }
+    public event EventHandler Reset;
+    private void RaiseReset(EventArgs e) {
+      var changed = Reset;
       if (changed != null)
         changed(this, e);
Index: /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 3739)
@@ -187,17 +187,21 @@
     public event EventHandler SolutionCreatorChanged;
     private void OnSolutionCreatorChanged() {
-      if (SolutionCreatorChanged != null)
-        SolutionCreatorChanged(this, EventArgs.Empty);
+      EventHandler handler = SolutionCreatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
-      if (EvaluatorChanged != null)
-        EvaluatorChanged(this, EventArgs.Empty);
-    }
-
+      EventHandler handler = EvaluatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler OperatorsChanged;
     private void OnOperatorsChanged() {
-      if (OperatorsChanged != null)
-        OperatorsChanged(this, EventArgs.Empty);
+      EventHandler handler = OperatorsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Reset;
+    private void OnReset() {
+      EventHandler handler = Reset;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
 
Index: /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 3739)
@@ -138,17 +138,21 @@
     public event EventHandler SolutionCreatorChanged;
     private void OnSolutionCreatorChanged() {
-      if (SolutionCreatorChanged != null)
-        SolutionCreatorChanged(this, EventArgs.Empty);
+      EventHandler handler = SolutionCreatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
-      if (EvaluatorChanged != null)
-        EvaluatorChanged(this, EventArgs.Empty);
-    }
-
+      EventHandler handler = EvaluatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler OperatorsChanged;
     private void OnOperatorsChanged() {
-      if (OperatorsChanged != null)
-        OperatorsChanged(this, EventArgs.Empty);
+      EventHandler handler = OperatorsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Reset;
+    private void OnReset() {
+      EventHandler handler = Reset;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
 
Index: /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 3739)
@@ -165,17 +165,23 @@
     public event EventHandler SolutionCreatorChanged;
     private void OnSolutionCreatorChanged() {
-      if (SolutionCreatorChanged != null)
-        SolutionCreatorChanged(this, EventArgs.Empty);
+      EventHandler handler = SolutionCreatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
-      if (EvaluatorChanged != null)
-        EvaluatorChanged(this, EventArgs.Empty);
+      EventHandler handler = EvaluatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler OperatorsChanged;
     private void OnOperatorsChanged() {
-      if (OperatorsChanged != null)
-        OperatorsChanged(this, EventArgs.Empty);
-    }
+      EventHandler handler = OperatorsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Reset;
+    private void OnReset() {
+      EventHandler handler = Reset;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
     private void ProblemSizeParameter_ValueChanged(object sender, EventArgs e) {
       ProblemSize.ValueChanged += new EventHandler(ProblemSize_ValueChanged);
Index: /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 3738)
+++ /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 3739)
@@ -191,4 +191,5 @@
         BestKnownSolution = new Permutation(PermutationTypes.RelativeUndirected, tourParser.Tour);
       }
+      OnReset();
     }
     public void ImportFromTSPLIB(string tspFileName, string optimalTourFileName, double bestKnownQuality) {
@@ -200,16 +201,21 @@
     public event EventHandler SolutionCreatorChanged;
     private void OnSolutionCreatorChanged() {
-      if (SolutionCreatorChanged != null)
-        SolutionCreatorChanged(this, EventArgs.Empty);
+      EventHandler handler = SolutionCreatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
-      if (EvaluatorChanged != null)
-        EvaluatorChanged(this, EventArgs.Empty);
+      EventHandler handler = EvaluatorChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler OperatorsChanged;
     private void OnOperatorsChanged() {
-      if (OperatorsChanged != null)
-        OperatorsChanged(this, EventArgs.Empty);
+      EventHandler handler = OperatorsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Reset;
+    private void OnReset() {
+      EventHandler handler = Reset;
+      if (handler != null) handler(this, EventArgs.Empty);
     }
 
