Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/SuccessorConfigurator.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/SuccessorConfigurator.cs	(revision 9149)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/SuccessorConfigurator.cs	(revision 9150)
@@ -33,5 +33,5 @@
 
     public HeuristicOptimizationEngineAlgorithm Content { get; set; }
-    private CombinedOperator currentSuccessor = null;
+    private HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.CombinedOperator currentSuccessor = null;
     private Type operatorType = null;
 
@@ -44,8 +44,8 @@
         dialog.Caption = "Select Successor";
         dialog.TypeSelector.Caption = "Available Successor Operators";
-        dialog.TypeSelector.Configure(typeof(CombinedOperator), false, true);
+        dialog.TypeSelector.Configure(typeof(HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.CombinedOperator), false, true);
 
         if (dialog.ShowDialog() == DialogResult.OK) {
-          currentSuccessor = (CombinedOperator)dialog.TypeSelector.CreateInstanceOfSelectedType();
+          currentSuccessor = (HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.CombinedOperator)dialog.TypeSelector.CreateInstanceOfSelectedType();
           successorTextBox.Text = currentSuccessor.ToString();
         }
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs	(revision 9149)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs	(revision 9150)
@@ -126,11 +126,11 @@
 
 
-      worseParentCrossoverPerformancePlot = new ScatterPlotHelper(false, true);
-      betterParentCrossoverPerformancePlot = new ScatterPlotHelper(false, true);
+      worseParentCrossoverPerformancePlot = new ScatterPlotHelper(false, true, true);
+      betterParentCrossoverPerformancePlot = new ScatterPlotHelper(false, true, true);
       childDiversityToWorseParentHelper = new ScatterPlotHelper(false, true);
       childDiversityToBetterParentHelper = new ScatterPlotHelper(false, true);
       unwantedMutationsHelper = new ScatterPlotHelper(false, true);
       parentDiversityHelper = new ScatterPlotHelper(false, true);
-      parentQualityHelper = new ScatterPlotHelper(false, true);
+      parentQualityHelper = new ScatterPlotHelper(false, true, true);
       successHelper = new DataTableHelper();
       equalParentsHelper = new DataTableHelper();
@@ -239,5 +239,5 @@
 
           for (int i = 0; i < ComparisonFactorParameter.Value.Count; i++) {
-            successHelper.AddPoint(SuccessfullCrossoversRowName + ComparisonFactorParameter.Value.ElementAt(i).Value.ToString(), success[i]);
+            successHelper.AddPoint(SuccessfullCrossoversRowName + ComparisonFactorParameter.Value.ElementAt(i).Value.ToString(), (double)success[i] / (cnt - 1));
           }
 
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 9149)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 9150)
@@ -58,4 +58,7 @@
       get { return (ILookupParameter<ItemCollection<IItem>>)Parameters["Operators"]; }
     }
+    public IValueLookupParameter<BoolValue> MaximizationParameter {
+      get { return (IValueLookupParameter<BoolValue>)Parameters["Maximization"]; }
+    }
     public IValueParameter<ISingleObjectiveSolutionSimilarityCalculator> SimilarityCalculatorParameter {
       get { return (IValueParameter<ISingleObjectiveSolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; }
@@ -70,7 +73,9 @@
 
     [Storable]
+    private DataTableHelper successHelper;
+    [Storable]
     private ScatterPlotHelper diversityPlotHelper, qualityPlotHelper;
     [Storable]
-    private int cnt = 0, lastGeneration = 0;
+    private int cnt = 0, lastGeneration = 0, success = 0;
 
     [StorableConstructor]
@@ -80,6 +85,8 @@
       diversityPlotHelper = (ScatterPlotHelper)original.diversityPlotHelper.Clone(cloner);
       qualityPlotHelper = (ScatterPlotHelper)original.qualityPlotHelper.Clone(cloner);
+      successHelper = (DataTableHelper)original.successHelper.Clone(cloner);
       cnt = original.cnt;
       lastGeneration = original.lastGeneration;
+      success = original.success;
     }
 
@@ -103,7 +110,9 @@
       Parameters.Add(new ValueParameter<ISingleObjectiveSolutionSimilarityCalculator>("SimilarityCalculator"));
       Parameters.Add(new LookupParameter<ItemCollection<IItem>>("Operators", "The operators and items that the problem provides to the algorithms."));
+      Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, false otherwise"));
 
       diversityPlotHelper = new ScatterPlotHelper(false, true);
-      qualityPlotHelper = new ScatterPlotHelper(false, true);
+      qualityPlotHelper = new ScatterPlotHelper(false, true, true);
+      successHelper = new DataTableHelper();
     }
 
@@ -118,4 +127,5 @@
       qualityPlotHelper.InitializePlot(Results, "Mutation Quality", "Solution Index", "Absolut Quality Difference");
       diversityPlotHelper.InitializePlot(Results, "Mutation Diversity", "Solution Index", "Diversity");
+      successHelper.InitializeChart(Results, "Successfull Mutations", new string[] { "Successfull Mutations per Generation" });
       Reset();
     }
@@ -138,5 +148,4 @@
       curPoint = new Point2D<double>(cnt++, qualityCX - qualityM);
 
-
       string curGenStr = GenerationsParameter.ActualValue.Value.ToString();
 
@@ -144,7 +153,14 @@
       diversityPlotHelper.AddPoint(curGenStr, divPoint);
 
+      if (GenerationsParameter.ActualValue.Value == lastGeneration) {
+        CountSuccess(qualityCX, qualityM);
+      }
+
       if (GenerationsParameter.ActualValue.Value != 0) {
         if (GenerationsParameter.ActualValue.Value > lastGeneration) {
+          successHelper.AddPoint((double)success / (cnt - 1));
+
           Reset();
+          CountSuccess(qualityCX, qualityM);
         }
       }
@@ -156,4 +172,5 @@
       cnt = 0;
       lastGeneration = GenerationsParameter.ActualValue.Value;
+      success = 0;
     }
 
@@ -162,4 +179,14 @@
       diversityPlotHelper.CleanUp();
     }
+
+    private void CountSuccess(double qualityCX, double qualityM) {
+      if (!MaximizationParameter.ActualValue.Value && qualityCX > qualityM) {
+        success++;
+      }
+
+      if (MaximizationParameter.ActualValue.Value && qualityCX < qualityM) {
+        success++;
+      }
+    }
   }
 }
