Index: /branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs	(revision 9174)
+++ /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 9174)
+++ /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
     }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVector.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVector.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVector.cs	(revision 9175)
@@ -142,6 +142,7 @@
       IntMatrix actionBounds = new IntMatrix(actionPartLength, bounds.Columns);
       int start = length - actionPartLength;
+      int rows = bounds.Rows;
       for (int i = start; i < length; i++) {
-        int pos = i % bounds.Rows;
+        int pos = i % rows;
         for (int j = 0; j < bounds.Columns; j++) {
           actionBounds[i - start, j] = bounds[pos, j];
@@ -160,8 +161,8 @@
         curbounds = i % bounds.Rows;
         //if don't care symbol is matched, next indices can be checked
-        if (this[i].Equals(bounds[curbounds, 1] - 1)) {
+        if (this[i] == bounds[curbounds, 1] - 1) {
           continue;
         }
-        if (!this[i].Equals(targetVector[i])) {
+        if (this[i] != targetVector[i]) {
           return false;
         }
@@ -241,5 +242,12 @@
 
     public bool Equals(IClassifier other) {
-      return this.MatchAction(other) && this.MatchCondition(other);
+      var cast = other as CombinedIntegerVector;
+      if (cast == null) { return false; }
+      for (int i = 0; i < array.Length; i++) {
+        if (!array[i].Equals(cast.array[i])) {
+          return false;
+        }
+      }
+      return true;
     }
 
@@ -251,16 +259,4 @@
       return result.GetHashCode();
     }
-
-    public bool Identical(IClassifier classifier) {
-      var cast = classifier as CombinedIntegerVector;
-      if (cast != null) {
-        for (int i = 0; i < array.Length; i++) {
-          if (!array[i].Equals(cast.array[i])) {
-            return false;
-          }
-        }
-      }
-      return true;
-    }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/BestTrainingXCSSolutionAnalyzer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/BestTrainingXCSSolutionAnalyzer.cs	(revision 9175)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/BestTrainingXCSSolutionAnalyzer.cs	(revision 9175)
@@ -0,0 +1,54 @@
+﻿#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.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Encodings.ConditionActionEncoding {
+  [Item("BestTrainingXCSSolutionAnalyzer", "")]
+  [StorableClass]
+  public sealed class BestTrainingXCSSolutionAnalyzer : XCSSolutionAnalyzer {
+    private const string BestTrainingSolutionName = "Best Training Solution";
+
+
+    [StorableConstructor]
+    private BestTrainingXCSSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    private BestTrainingXCSSolutionAnalyzer(BestTrainingXCSSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestTrainingXCSSolutionAnalyzer(this, cloner);
+    }
+    public BestTrainingXCSSolutionAnalyzer()
+      : base() {
+    }
+
+    protected override void UseCurrentXCSSolution(IXCSSolution xcsSolution) {
+      if (!Results.ContainsKey(BestTrainingSolutionName)) {
+        Results.Add(new Result(BestTrainingSolutionName, (IXCSSolution)xcsSolution.Clone()));
+      } else {
+        if (xcsSolution.TrainingAccuracy > ((IXCSSolution)Results[BestTrainingSolutionName].Value).TrainingAccuracy) {
+          Results[BestTrainingSolutionName].Value = (IXCSSolution)xcsSolution.Clone();
+        }
+      }
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/CurrentXCSSolutionAnalyzer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/CurrentXCSSolutionAnalyzer.cs	(revision 9175)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/CurrentXCSSolutionAnalyzer.cs	(revision 9175)
@@ -0,0 +1,64 @@
+﻿#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.Analysis;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Encodings.ConditionActionEncoding {
+  [Item("CurrentXCSSolutionAnalyzer", "")]
+  [StorableClass]
+  public sealed class CurrentXCSSolutionAnalyzer : XCSSolutionAnalyzer {
+    private const string CurrentSolutionName = "Current Solution";
+    private const string TrainingAccuracyDataTableName = "TrainingAccuracy";
+
+    [StorableConstructor]
+    private CurrentXCSSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    private CurrentXCSSolutionAnalyzer(CurrentXCSSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CurrentXCSSolutionAnalyzer(this, cloner);
+    }
+    public CurrentXCSSolutionAnalyzer()
+      : base() {
+    }
+
+    protected override void UseCurrentXCSSolution(IXCSSolution xcsSolution) {
+      XCSSolution xcs;
+      if (!Results.ContainsKey(CurrentSolutionName)) {
+        Results.Add(new Result(CurrentSolutionName, (IXCSSolution)xcsSolution.Clone()));
+        xcs = Results[CurrentSolutionName].Value as XCSSolution;
+        DataTable dataTable = new DataTable("Training Accuracy DataTable");
+        xcs.Add(new Result(TrainingAccuracyDataTableName, dataTable));
+        DataRow row = new DataRow("TrainingAccuracy");
+        dataTable.Rows.Add(row);
+        row.Values.Add(xcs.TrainingAccuracy);
+      } else {
+        DataTable dataTable = (Results[CurrentSolutionName].Value as XCSSolution)[TrainingAccuracyDataTableName].Value as DataTable;
+        Results[CurrentSolutionName].Value = (IXCSSolution)xcsSolution.Clone();
+        xcs = Results[CurrentSolutionName].Value as XCSSolution;
+        dataTable.Rows["TrainingAccuracy"].Values.Add(xcs.TrainingAccuracy);
+        xcs.Add(new Result(TrainingAccuracyDataTableName, dataTable));
+      }
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/XCSSolutionAnalyzer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/XCSSolutionAnalyzer.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Analyzer/XCSSolutionAnalyzer.cs	(revision 9175)
@@ -31,5 +31,5 @@
   [Item("ConditionActionSolutionAnalyzer", "")]
   [StorableClass]
-  public sealed class XCSSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer {
+  public abstract class XCSSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer {
     public bool EnabledByDefault {
       get { return true; }
@@ -67,10 +67,9 @@
     }
 
+    public ResultCollection Results { get { return ResultsParameter.ActualValue; } }
+
     [StorableConstructor]
-    private XCSSolutionAnalyzer(bool deserializing) : base(deserializing) { }
-    private XCSSolutionAnalyzer(XCSSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new XCSSolutionAnalyzer(this, cloner);
-    }
+    protected XCSSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    protected XCSSolutionAnalyzer(XCSSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
     public XCSSolutionAnalyzer()
       : base() {
@@ -96,5 +95,4 @@
       ItemArray<DoubleValue> averageActionSetSizes = AverageActionSetSizeParameter.ActualValue;
       ItemArray<IntValue> numerosities = NumerosityParameter.ActualValue;
-      ResultCollection results = ResultsParameter.ActualValue;
       IConditionActionProblemData problemData = ProblemDataParameter.ActualValue;
 
@@ -108,11 +106,9 @@
       XCSModel xcsModel = new XCSModel(xcsClassifiers);
 
-      if (results.ContainsKey("XCSSolution")) {
-        results.Remove("XCSSolution");
-      }
-      results.Add(new Result("XCSSolution", xcsModel.CreateConditionActionSolution(problemData)));
-
+      UseCurrentXCSSolution(xcsModel.CreateConditionActionSolution(problemData));
       return base.Apply();
     }
+
+    protected abstract void UseCurrentXCSSolution(IXCSSolution xcsSolution);
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj	(revision 9175)
@@ -38,4 +38,5 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Analysis-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <Private>False</Private>
@@ -56,4 +57,5 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Optimization.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <Private>False</Private>
@@ -86,4 +88,6 @@
     <Compile Include="ActionSelection\MaxValueActionSelector.cs" />
     <Compile Include="ActionSelection\RandomActionSelector.cs" />
+    <Compile Include="Analyzer\BestTrainingXCSSolutionAnalyzer.cs" />
+    <Compile Include="Analyzer\CurrentXCSSolutionAnalyzer.cs" />
     <Compile Include="Analyzer\XCSSolutionAnalyzer.cs" />
     <Compile Include="Covering\CoveringOperator.cs" />
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/IClassifier.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/IClassifier.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/IClassifier.cs	(revision 9175)
@@ -41,7 +41,4 @@
     bool Equals(object obj);
     int GetHashCode();
-
-    //test
-    bool Identical(IClassifier classifier);
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Interfaces/IConditionActionSolution.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Interfaces/IConditionActionSolution.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Interfaces/IConditionActionSolution.cs	(revision 9175)
@@ -31,4 +31,7 @@
     event EventHandler ModelChanged;
     event EventHandler ProblemDataChanged;
+
+    double TrainingAccuracy { get; }
+    double TestAccuracy { get; }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Reinforcement/ActionExecuter.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Reinforcement/ActionExecuter.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Reinforcement/ActionExecuter.cs	(revision 9175)
@@ -69,5 +69,5 @@
 
     public override IOperation Apply() {
-      if (SelectedActionParameter.ActualValue.Action.Equals(CurrentClassifierToMatchParameter.ActualValue.Action)) {
+      if (SelectedActionParameter.ActualValue.MatchAction(CurrentClassifierToMatchParameter.ActualValue)) {
         CurrentPayoffParameter.ActualValue = PositiveRewardParameter.ActualValue;
       } else {
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/XCSSolution.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/XCSSolution.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/XCSSolution.cs	(revision 9175)
@@ -86,4 +86,7 @@
       description = original.Description;
     }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new XCSSolution(this, cloner);
+    }
     public XCSSolution(IConditionActionModel model, IConditionActionProblemData problemData)
       : base() {
@@ -118,5 +121,5 @@
 
       while (originalEnumerator.MoveNext() && estimatedActionEnumerator.MoveNext()) {
-        if (originalEnumerator.Current.Action.Equals(estimatedActionEnumerator.Current)) {
+        if (originalEnumerator.Current.MatchAction(estimatedActionEnumerator.Current)) {
           correctClassified++;
         }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/Implementation/ConditionActionClassificationProblem.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/Implementation/ConditionActionClassificationProblem.cs	(revision 9174)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/Implementation/ConditionActionClassificationProblem.cs	(revision 9175)
@@ -149,7 +149,4 @@
       get { return CoveringSolutionCreatorParameter; }
     }
-    private XCSSolutionAnalyzer XCSSolutionAnalyzer {
-      get { return Operators.OfType<XCSSolutionAnalyzer>().FirstOrDefault(); }
-    }
     #endregion
 
@@ -226,5 +223,6 @@
 
     private void InitializeOperators() {
-      Operators.Add(new XCSSolutionAnalyzer());
+      Operators.Add(new BestTrainingXCSSolutionAnalyzer());
+      Operators.Add(new CurrentXCSSolutionAnalyzer());
 
       ParameterizeAnalyzers();
@@ -232,15 +230,15 @@
 
     private void ParameterizeAnalyzers() {
-      if (XCSSolutionAnalyzer != null) {
-        XCSSolutionAnalyzer.ClassifierParameter.ActualName = SolutionCreator.CombinedIntegerVectorParameter.ActualName;
-        XCSSolutionAnalyzer.PredictionParameter.ActualName = Evaluator.PredictionParameter.ActualName;
-        XCSSolutionAnalyzer.ErrorParameter.ActualName = Evaluator.ErrorParameter.ActualName;
-        XCSSolutionAnalyzer.FitnessParameter.ActualName = Evaluator.FitnessParameter.ActualName;
-        XCSSolutionAnalyzer.ExperienceParameter.ActualName = Evaluator.ExperienceParameter.ActualName;
-        XCSSolutionAnalyzer.AverageActionSetSizeParameter.ActualName = Evaluator.AverageActionSetSizeParameter.ActualName;
-        XCSSolutionAnalyzer.NumerosityParameter.ActualName = Evaluator.NumerosityParameter.ActualName;
-        XCSSolutionAnalyzer.TimestampParameter.ActualName = Evaluator.TimestampParameter.ActualName;
-        XCSSolutionAnalyzer.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
-        XCSSolutionAnalyzer.ResultsParameter.ActualName = "Results";
+      foreach (XCSSolutionAnalyzer xcsAnalyzer in Operators.Where(x => x is XCSSolutionAnalyzer)) {
+        xcsAnalyzer.ClassifierParameter.ActualName = SolutionCreator.CombinedIntegerVectorParameter.ActualName;
+        xcsAnalyzer.PredictionParameter.ActualName = Evaluator.PredictionParameter.ActualName;
+        xcsAnalyzer.ErrorParameter.ActualName = Evaluator.ErrorParameter.ActualName;
+        xcsAnalyzer.FitnessParameter.ActualName = Evaluator.FitnessParameter.ActualName;
+        xcsAnalyzer.ExperienceParameter.ActualName = Evaluator.ExperienceParameter.ActualName;
+        xcsAnalyzer.AverageActionSetSizeParameter.ActualName = Evaluator.AverageActionSetSizeParameter.ActualName;
+        xcsAnalyzer.NumerosityParameter.ActualName = Evaluator.NumerosityParameter.ActualName;
+        xcsAnalyzer.TimestampParameter.ActualName = Evaluator.TimestampParameter.ActualName;
+        xcsAnalyzer.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
+        xcsAnalyzer.ResultsParameter.ActualName = "Results";
       }
     }
