Index: branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs	(revision 9167)
+++ branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs	(revision 9175)
@@ -112,4 +112,7 @@
       get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     }
+    private ValueParameter<MultiAnalyzer> FinalAnalyzerParameter {
+      get { return (ValueParameter<MultiAnalyzer>)Parameters["FinalAnalyzer"]; }
+    }
     private ValueParameter<IntValue> MaxIterationsParameter {
       get { return (ValueParameter<IntValue>)Parameters["MaxIterations"]; }
@@ -197,4 +200,8 @@
       get { return AnalyzerParameter.Value; }
       set { AnalyzerParameter.Value = value; }
+    }
+    public MultiAnalyzer FinalAnalyzer {
+      get { return FinalAnalyzerParameter.Value; }
+      set { FinalAnalyzerParameter.Value = value; }
     }
     private RandomCreator RandomCreator {
@@ -228,4 +235,5 @@
       Parameters.Add(new ValueParameter<BoolValue>("DoActionSetSubsumption", "Specifies if action set is tested for subsuming classifiers.", new BoolValue(true)));
       Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer()));
+      Parameters.Add(new ValueParameter<MultiAnalyzer>("FinalAnalyzer", "The operator used to analyze the last generation.", new MultiAnalyzer()));
       Parameters.Add(new ValueParameter<IntValue>("MaxIterations", "The maximum number of iterations.", new IntValue(1000)));
       #endregion
@@ -246,4 +254,5 @@
 
       mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
+      mainLoop.FinalAnalyzerParameter.ActualName = FinalAnalyzerParameter.Name;
       mainLoop.MaxIterationsParameter.ActualName = MaxIterationsParameter.Name;
       #endregion
@@ -298,7 +307,9 @@
     private void UpdateAnalyzers() {
       Analyzer.Operators.Clear();
+      FinalAnalyzer.Operators.Clear();
       if (Problem != null) {
         foreach (IAnalyzer analyzer in Problem.Operators.OfType<IAnalyzer>()) {
           Analyzer.Operators.Add(analyzer, analyzer.EnabledByDefault);
+          FinalAnalyzer.Operators.Add(analyzer, analyzer.EnabledByDefault);
         }
       }
Index: branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs	(revision 9167)
+++ branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs	(revision 9175)
@@ -64,4 +64,7 @@
       get { return (ValueLookupParameter<IOperator>)Parameters["Analyzer"]; }
     }
+    public ValueLookupParameter<IOperator> FinalAnalyzerParameter {
+      get { return (ValueLookupParameter<IOperator>)Parameters["FinalAnalyzer"]; }
+    }
     #endregion
 
@@ -110,4 +113,5 @@
       Parameters.Add(new LookupParameter<IntValue>("MaxIterations", "The maximum number of iterations the algorithm will do."));
       Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation."));
+      Parameters.Add(new ValueLookupParameter<IOperator>("FinalAnalyzer", "The operator used to analyze the last generation."));
       #endregion
 
@@ -115,4 +119,5 @@
       VariableCreator variableCreator = new VariableCreator();
       ResultsCollector resultsCollector = new ResultsCollector();
+      Placeholder analyzer = new Placeholder();
       Placeholder finalAnalyzer = new Placeholder();
       ConditionalBranch initialPopulationConditionalBranch = new ConditionalBranch();
@@ -179,6 +184,9 @@
       resultsCollector.ResultsParameter.ActualName = "Results";
 
-      finalAnalyzer.Name = "Analyzer";
-      finalAnalyzer.OperatorParameter.ActualName = "Analyzer";
+      analyzer.Name = "Analyzer";
+      analyzer.OperatorParameter.ActualName = "Analyzer";
+
+      finalAnalyzer.Name = "FinalAnalyzer";
+      finalAnalyzer.OperatorParameter.ActualName = "FinalAnalyzer";
 
       initialPopulationConditionalBranch.ConditionParameter.ActualName = "CreateInitialPopulation";
@@ -349,5 +357,5 @@
       initialPopulationConditionalBranch.Successor = maxIterationsComparator;
       maxIterationsComparator.Successor = terminationConditionalBranch1;
-      //terminationConditionalBranch1.TrueBranch = finalAnalyzer;
+      terminationConditionalBranch1.TrueBranch = finalAnalyzer;
       terminationConditionalBranch1.FalseBranch = classifierFetcher;
       classifierFetcher.Successor = matchCondtionSubScopesProcessor;
@@ -406,8 +414,6 @@
       deletionSelectorAfterGA.Successor = leftReducerAfterGA;
       leftReducerAfterGA.Successor = iterationCounter;
-      //iterationCounter.Successor = maxIterationsComparator;
-
-      iterationCounter.Successor = finalAnalyzer;
-      finalAnalyzer.Successor = maxIterationsComparator;
+      iterationCounter.Successor = analyzer;
+      analyzer.Successor = maxIterationsComparator;
       #endregion
     }
