Index: branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LCSAdaptedGeneticAlgorithm.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LCSAdaptedGeneticAlgorithm.cs	(revision 9105)
+++ branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LCSAdaptedGeneticAlgorithm.cs	(revision 9110)
@@ -24,4 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Encodings.ConditionActionEncoding;
 using HeuristicLab.Operators;
 using HeuristicLab.Optimization.Operators;
@@ -36,4 +37,8 @@
   [StorableClass]
   public sealed class LCSAdaptedGeneticAlgorithm : AlgorithmOperator {
+    private const string TEMPID = "TempID";
+    private const string SUBSUMEDBY = "SubsumedBy";
+    private const string SUBSUMED = "Subsumed";
+
     #region Parameter properties
     public ValueLookupParameter<IRandom> RandomParameter {
@@ -75,4 +80,7 @@
     public ValueLookupParameter<IntValue> PopulationSizeParameter {
       get { return (ValueLookupParameter<IntValue>)Parameters["PopulationSize"]; }
+    }
+    public ValueLookupParameter<BoolValue> DoGASubsumptionParameter {
+      get { return (ValueLookupParameter<BoolValue>)Parameters["DoGASubsumption"]; }
     }
     private ScopeParameter CurrentScopeParameter {
@@ -113,4 +121,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
       Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population."));
+      Parameters.Add(new ValueLookupParameter<BoolValue>("DoGASubsumption", "Sets if GA subsumption is executed."));
       Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied."));
       #endregion
@@ -126,5 +135,4 @@
       Placeholder crossover = new Placeholder();
       Placeholder afterCrossover = new Placeholder();
-      StochasticBranch stochasticBranch = new StochasticBranch();
       Placeholder mutator = new Placeholder();
       SubScopesRemover subScopesRemover = new SubScopesRemover();
@@ -136,4 +144,15 @@
       ConditionalBranch conditionalBranch = new ConditionalBranch();
 
+      TempSubScopeIDAssigner tempIdAssigner = new TempSubScopeIDAssigner();
+      ConditionalBranch doGASubsumptionBranch1 = new ConditionalBranch();
+      UniformSubScopesProcessor setSubsumptionFalseSubScopesProcessor = new UniformSubScopesProcessor();
+      Assigner setSubsumpByAssigner = new Assigner();
+      Assigner setSubsumptionFalseAssigner = new Assigner();
+      CheckGASubsumptionOperator checkGASubsumptionOperator = new CheckGASubsumptionOperator();
+      ConditionalBranch doGASubsumptionBranch2 = new ConditionalBranch();
+      ExecuteGASubsumptionOperator executeGAsubsumptionOperator = new ExecuteGASubsumptionOperator();
+      ConditionalSelector subsumptionSelector = new ConditionalSelector();
+      LeftReducer subsumptionLeftReducer = new LeftReducer();
+
       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class GeneticAlgorithm expects this to be called Generations
 
@@ -144,4 +163,12 @@
       analyzer1.OperatorParameter.ActualName = "Analyzer";
 
+      tempIdAssigner.LeftSideParameter.ActualName = TEMPID;
+
+      setSubsumpByAssigner.LeftSideParameter.ActualName = SUBSUMEDBY;
+      setSubsumpByAssigner.RightSideParameter.Value = new IntValue(-1);
+
+      setSubsumptionFalseAssigner.LeftSideParameter.ActualName = SUBSUMED;
+      setSubsumptionFalseAssigner.RightSideParameter.Value = new BoolValue(false);
+
       selector.Name = "Selector";
       selector.OperatorParameter.ActualName = "Selector";
@@ -155,11 +182,30 @@
       afterCrossover.OperatorParameter.ActualName = "AfterCrossover";
 
-      stochasticBranch.ProbabilityParameter.ActualName = "MutationProbability";
-      stochasticBranch.RandomParameter.ActualName = "Random";
-
       mutator.Name = "Mutator";
       mutator.OperatorParameter.ActualName = "Mutator";
 
+      doGASubsumptionBranch1.ConditionParameter.ActualName = DoGASubsumptionParameter.ActualName;
+
+      checkGASubsumptionOperator.ChildClassifiersParameter.ActualName = "CombinedIntegerVector";
+      checkGASubsumptionOperator.ParentsClassifiersParameter.ActualName = "CombinedIntegerVector";
+      checkGASubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity";
+      checkGASubsumptionOperator.ExperiencesParameter.ActualName = "Experience";
+      checkGASubsumptionOperator.ErrorsParameter.ActualName = "Error";
+      checkGASubsumptionOperator.TempIDParameter.ActualName = TEMPID;
+      checkGASubsumptionOperator.ErrorZeroParameter.ActualName = "ErrorZero";
+      checkGASubsumptionOperator.ThetaSubsumptionParameter.ActualName = "ThetaSubsumption";
+      checkGASubsumptionOperator.SubsumedByParameter.ActualName = SUBSUMEDBY;
+      checkGASubsumptionOperator.SubsumedParameter.ActualName = SUBSUMED;
+
       subScopesRemover.RemoveAllSubScopes = true;
+
+      doGASubsumptionBranch2.ConditionParameter.ActualName = DoGASubsumptionParameter.ActualName;
+
+      executeGAsubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity";
+      executeGAsubsumptionOperator.TempIDParameter.ActualName = TEMPID;
+      executeGAsubsumptionOperator.SubsumedByParameter.ActualName = SUBSUMEDBY;
+
+      subsumptionSelector.ConditionParameter.ActualName = SUBSUMED;
+      subsumptionSelector.CopySelected = new BoolValue(false);
 
       subScopesCounter.Name = "Increment EvaluatedSolutions";
@@ -184,5 +230,10 @@
       variableCreator.Successor = resultsCollector1;
       resultsCollector1.Successor = analyzer1;
-      analyzer1.Successor = selector;
+      analyzer1.Successor = tempIdAssigner;
+      tempIdAssigner.Successor = setSubsumptionFalseSubScopesProcessor;
+      setSubsumptionFalseSubScopesProcessor.Operator = setSubsumpByAssigner;
+      setSubsumpByAssigner.Successor = setSubsumptionFalseAssigner;
+      setSubsumptionFalseAssigner.Successor = null;
+      setSubsumptionFalseSubScopesProcessor.Successor = selector;
       selector.Successor = subScopesProcessor1;
       subScopesProcessor1.Operators.Add(new EmptyOperator());
@@ -193,12 +244,18 @@
       uniformSubScopesProcessor1.Successor = subScopesCounter;
       crossover.Successor = afterCrossover;
-      afterCrossover.Successor = stochasticBranch;
-      stochasticBranch.FirstBranch = mutator;
-      stochasticBranch.SecondBranch = null;
-      stochasticBranch.Successor = subScopesRemover;
-      mutator.Successor = null;
+      afterCrossover.Successor = mutator;
+      mutator.Successor = doGASubsumptionBranch1;
+      doGASubsumptionBranch1.TrueBranch = checkGASubsumptionOperator;
+      doGASubsumptionBranch1.FalseBranch = new EmptyOperator();
+      doGASubsumptionBranch1.Successor = subScopesRemover;
       subScopesRemover.Successor = null;
       subScopesCounter.Successor = null;
-      mergingReducer.Successor = intCounter;
+      mergingReducer.Successor = doGASubsumptionBranch2;
+      doGASubsumptionBranch2.TrueBranch = executeGAsubsumptionOperator;
+      doGASubsumptionBranch2.FalseBranch = new EmptyOperator();
+      executeGAsubsumptionOperator.Successor = subsumptionSelector;
+      subsumptionSelector.Successor = subsumptionLeftReducer;
+      subsumptionLeftReducer.Successor = null;
+      doGASubsumptionBranch2.Successor = intCounter;
       intCounter.Successor = comparator;
       comparator.Successor = analyzer2;
Index: branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs	(revision 9105)
+++ branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs	(revision 9110)
@@ -23,6 +23,6 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Encodings.CombinedIntegerVectorEncoding;
 using HeuristicLab.Encodings.ConditionActionEncoding;
-using HeuristicLab.Encodings.IntegerVectorEncoding;
 using HeuristicLab.Operators;
 using HeuristicLab.Optimization;
@@ -39,4 +39,6 @@
   [StorableClass]
   public sealed class LearningClassifierSystemMainLoop : AlgorithmOperator {
+    private const string HASTOBEDELETED = "HasToBeDeleted";
+    private const string HASBEENSUBSUMED = "HasBeenSubsumed";
 
     #region Parameter Properties
@@ -62,5 +64,6 @@
     private DoDeletionBeforeCoveringOperator doDeletionBeforeCovering;
     private CoveringOperator covering;
-    private ConditionalSelector subsumptionSelector;
+
+    private UniformSomePositionManipulator test;
 
     private Placeholder evaluator;
@@ -88,7 +91,8 @@
       Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions.", new ItemSet<ICrossover>() { new HeuristicLab.Encodings.CombinedIntegerVectorEncoding.SinglePointCrossover() }, new HeuristicLab.Encodings.CombinedIntegerVectorEncoding.SinglePointCrossover()));
       Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization."));
-      UniformOnePositionManipulator test = new UniformOnePositionManipulator();
-      test.IntegerVectorParameter.ActualName = "CombinedIntegerVector";
-      Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformOnePositionManipulator() }, test));
+      test = new UniformSomePositionManipulator();
+      test.ProbabilityParameter.ActualName = "MutationProbability";
+      test.ChildParameter.ActualName = "CombinedIntegerVector";
+      Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformSomePositionManipulator() }, test));
       XCSAfterCrossoverOperator afterCrossover = new XCSAfterCrossoverOperator();
       Parameters.Add(new ConstrainedValueParameter<IOperator>("AfterCrossover", "The operator used to select solutions for reproduction.", new ItemSet<IOperator>() { new XCSAfterCrossoverOperator() }, afterCrossover));
@@ -113,14 +117,7 @@
       doDeletionBeforeCovering = new DoDeletionBeforeCoveringOperator();
       ConditionalBranch doDeletionBeforeCoveringConditionalBranch = new ConditionalBranch();
-      MergingReducer matchSetMergingReducerForDeletion = new MergingReducer();
-      SubScopeVariableCopier subscopeVariableCopier = new SubScopeVariableCopier();
       XCSDeletionOperator deletionOperator = new XCSDeletionOperator();
       ConditionalSelector deletionSelector = new ConditionalSelector();
       LeftReducer leftReducerAfterDeletionSelection = new LeftReducer();
-      UniformSubScopesProcessor matchConditionAfterDeletionSubScopesProcessor = new UniformSubScopesProcessor();
-      ConditionalSelector conditionMatchSelectorAfterDeletion = new ConditionalSelector();
-      SubScopesProcessor matchSetAfterDeletionSubScopesProcessor = new SubScopesProcessor();
-      CountNumberOfUniqueActions countNumberOfUniqueActionsAfterDeletion = new CountNumberOfUniqueActions();
-      SubScopesProcessor coveringAfterDeletionSubScopesProcessor = new SubScopesProcessor();
       covering = new CoveringOperator();
       MergingReducer actionSetMergingReducer = new MergingReducer();
@@ -134,5 +131,7 @@
       UniformSubScopesProcessor updateParametersSubScopesProcessor = new UniformSubScopesProcessor();
       ConditionalBranch actionSetSubsumptionBranch = new ConditionalBranch();
-      subsumptionSelector = new ConditionalSelector();
+      UniformSubScopesProcessor setSubsumedToFalseSubScopeProcessor = new UniformSubScopesProcessor();
+      Assigner setSubsumedToFalseAssigner = new Assigner();
+      ConditionalSelector subsumptionSelector = new ConditionalSelector();
       LeftReducer leftReducer = new LeftReducer();
       XCSCheckIfGAShouldBeApplied checkIfGAShouldRun = new XCSCheckIfGAShouldBeApplied();
@@ -143,4 +142,8 @@
       IntCounter currentPopulationSizeCounter = new IntCounter();
       CalculateNumberOfDeletionsOperator calculateNumberOfDeletions = new CalculateNumberOfDeletionsOperator();
+      UniformSubScopesProcessor setDeletionFalseSubScopeProcessor1 = new UniformSubScopesProcessor();
+      UniformSubScopesProcessor setDeletionFalseSubScopeProcessor2 = new UniformSubScopesProcessor();
+      Assigner setDeletionFalseAssigner = new Assigner();
+      InsertInPopulationOperator insertInPopulation = new InsertInPopulationOperator();
       XCSDeletionOperator deletionOperatorAfterGA = new XCSDeletionOperator();
       ConditionalSelector deletionSelectorAfterGA = new ConditionalSelector();
@@ -169,22 +172,20 @@
 
       conditionMatchSelector.CopySelected = new BoolValue(false);
-      conditionMatchSelector.ConditionParameter.ActualName = "MatchCondition";
-
-      conditionMatchSelectorAfterDeletion.CopySelected = new BoolValue(false);
-      conditionMatchSelectorAfterDeletion.ConditionParameter.ActualName = "MatchCondition";
+      conditionMatchSelector.ConditionParameter.ActualName = matchConditionOperator.MatchConditionParameter.ActualName;
 
       countNumberOfUniqueActions.ClassifiersParameter.ActualName = "CombinedIntegerVector";
 
-      countNumberOfUniqueActionsAfterDeletion.ClassifiersParameter.ActualName = "CombinedIntegerVector";
-
-      subscopeVariableCopier.SubScopeIndexParameter.Value = new IntValue(1);
-
+      doDeletionBeforeCovering.ClassifiersParameter.ActualName = "CombinedIntegerVector";
+      doDeletionBeforeCovering.MatchConditionParameter.ActualName = matchConditionOperator.MatchConditionParameter.ActualName;
       doDeletionBeforeCovering.CurrentPopulationSizeParameter.ActualName = "CurrentPopulationSize";
-      doDeletionBeforeCovering.NumberOfUniqueActionsParameter.ActualName = countNumberOfUniqueActions.NumberOfUniqueActionsParameter.ActualName;
       doDeletionBeforeCovering.PopulationSizeParameter.ActualName = "N";
 
       doDeletionBeforeCoveringConditionalBranch.ConditionParameter.ActualName = doDeletionBeforeCovering.DoDeletionParameter.ActualName;
 
+      setDeletionFalseAssigner.LeftSideParameter.ActualName = HASTOBEDELETED;
+      setDeletionFalseAssigner.RightSideParameter.Value = new BoolValue(false);
+
       deletionOperator.NumberToDeleteParameter.ActualName = doDeletionBeforeCovering.NumberToDeleteParameter.ActualName;
+      deletionOperator.HasToBeDeletedParameter.ActualName = HASTOBEDELETED;
       deletionOperator.AverageActionSetSizesParameter.ActualName = "AverageActionSetSize";
       deletionOperator.FitnessesParameter.ActualName = "Fitness";
@@ -195,5 +196,5 @@
       deletionOperator.RandomParameter.ActualName = "Random";
 
-      deletionSelector.ConditionParameter.ActualName = deletionOperator.HasToBeDeletedVariableName;
+      deletionSelector.ConditionParameter.ActualName = HASTOBEDELETED;
       deletionSelector.CopySelected = new BoolValue(false);
 
@@ -219,4 +220,8 @@
       actionSetSubsumptionBranch.ConditionParameter.ActualName = "DoActionSetSubsumption";
 
+      setSubsumedToFalseAssigner.LeftSideParameter.ActualName = HASBEENSUBSUMED;
+      setSubsumedToFalseAssigner.RightSideParameter.Value = new BoolValue(false);
+
+      subsumptionSelector.ConditionParameter.ActualName = HASBEENSUBSUMED;
       subsumptionSelector.CopySelected = new BoolValue(false);
 
@@ -274,5 +279,5 @@
       adaptedGeneticAlgorithmMainLoop.MaximumGenerationsParameter.ActualName = "ZeroIntValue";
       adaptedGeneticAlgorithmMainLoop.QualityParameter.ActualName = "Fitness";
-      adaptedGeneticAlgorithmMainLoop.MutationProbabilityParameter.Value = new PercentValue(10);
+      adaptedGeneticAlgorithmMainLoop.MutationProbabilityParameter.ActualName = "MutationProbability";
       adaptedGeneticAlgorithmMainLoop.MaximizationParameter.Value = new BoolValue(true);
       adaptedGeneticAlgorithmMainLoop.AfterCrossoverParameter.ActualName = AfterCrossoverParameter.Name;
@@ -281,8 +286,14 @@
       currentPopulationSizeCounter.Increment = new IntValue(2);
 
+      insertInPopulation.ClassifiersParameter.ActualName = "CombinedIntegerVector";
+      insertInPopulation.NumerositiesParameter.ActualName = "Numerosity";
+      insertInPopulation.HasToBeDeletedParameter.ActualName = HASTOBEDELETED;
+      insertInPopulation.InsertInPopulationParameter.ActualName = "InsertInPopulation";
+
       calculateNumberOfDeletions.CurrentPopulationSizeParameter.ActualName = "CurrentPopulationSize";
       calculateNumberOfDeletions.PopulationSizeParameter.ActualName = "N";
 
       deletionOperatorAfterGA.NumberToDeleteParameter.ActualName = calculateNumberOfDeletions.NumberOfDeletionsParameter.ActualName;
+      deletionOperatorAfterGA.HasToBeDeletedParameter.ActualName = HASTOBEDELETED;
       deletionOperatorAfterGA.AverageActionSetSizesParameter.ActualName = "AverageActionSetSize";
       deletionOperatorAfterGA.FitnessesParameter.ActualName = "Fitness";
@@ -293,5 +304,5 @@
       deletionOperatorAfterGA.RandomParameter.ActualName = "Random";
 
-      deletionSelectorAfterGA.ConditionParameter.ActualName = deletionOperatorAfterGA.HasToBeDeletedVariableName;
+      deletionSelectorAfterGA.ConditionParameter.ActualName = HASTOBEDELETED;
       deletionSelectorAfterGA.CopySelected = new BoolValue(false);
       #endregion
@@ -307,28 +318,19 @@
       classifierFetcher.Successor = matchCondtionSubScopesProcessor;
       matchCondtionSubScopesProcessor.Operator = matchConditionOperator;
-      matchCondtionSubScopesProcessor.Successor = conditionMatchSelector;
+      matchCondtionSubScopesProcessor.Successor = doDeletionBeforeCovering;
+      doDeletionBeforeCovering.Successor = doDeletionBeforeCoveringConditionalBranch;
+      doDeletionBeforeCoveringConditionalBranch.TrueBranch = setDeletionFalseSubScopeProcessor1;
+      doDeletionBeforeCoveringConditionalBranch.FalseBranch = conditionMatchSelector;
+      setDeletionFalseSubScopeProcessor1.Operator = setDeletionFalseAssigner;
+      setDeletionFalseSubScopeProcessor1.Successor = deletionOperator;
+      deletionOperator.Successor = deletionSelector;
+      deletionSelector.Successor = leftReducerAfterDeletionSelection;
+      //if a classifier with a unique action for the match set has been deleted, then there are still to many classifiers in the population
+      leftReducerAfterDeletionSelection.Successor = doDeletionBeforeCovering;
       conditionMatchSelector.Successor = matchSetSubScopesProcessor;
       matchSetSubScopesProcessor.Operators.Add(new EmptyOperator());
       matchSetSubScopesProcessor.Operators.Add(countNumberOfUniqueActions);
-      matchSetSubScopesProcessor.Successor = subscopeVariableCopier;
-      subscopeVariableCopier.Successor = doDeletionBeforeCovering;
-      doDeletionBeforeCovering.Successor = doDeletionBeforeCoveringConditionalBranch;
-      doDeletionBeforeCoveringConditionalBranch.TrueBranch = matchSetMergingReducerForDeletion;
-      matchSetMergingReducerForDeletion.Successor = deletionOperator;
-      deletionOperator.Successor = deletionSelector;
-      deletionSelector.Successor = leftReducerAfterDeletionSelection;
-      leftReducerAfterDeletionSelection.Successor = matchConditionAfterDeletionSubScopesProcessor;
-      doDeletionBeforeCoveringConditionalBranch.FalseBranch = coveringAfterDeletionSubScopesProcessor;
-      coveringAfterDeletionSubScopesProcessor.Operators.Add(new EmptyOperator());
-      coveringAfterDeletionSubScopesProcessor.Operators.Add(covering);
-      coveringAfterDeletionSubScopesProcessor.Successor = matchSetMergingReducer;
-      matchConditionAfterDeletionSubScopesProcessor.Operator = matchConditionOperator;
-      matchConditionAfterDeletionSubScopesProcessor.Successor = conditionMatchSelectorAfterDeletion;
-      conditionMatchSelectorAfterDeletion.Successor = matchSetAfterDeletionSubScopesProcessor;
-      matchSetAfterDeletionSubScopesProcessor.Operators.Add(new EmptyOperator());
-      matchSetAfterDeletionSubScopesProcessor.Operators.Add(countNumberOfUniqueActionsAfterDeletion);
-      matchSetAfterDeletionSubScopesProcessor.Successor = matchSetMergingReducer;
-      countNumberOfUniqueActionsAfterDeletion.Successor = covering;
-
+      countNumberOfUniqueActions.Successor = covering;
+      matchSetSubScopesProcessor.Successor = matchSetMergingReducer;
       covering.Successor = predictionArrayCalculator;
       predictionArrayCalculator.Successor = actionSelector;
@@ -345,5 +347,7 @@
       updateParametersSubScopesProcessor.Operator = evaluator;
       updateParametersSubScopesProcessor.Successor = actionSetSubsumptionBranch;
-      actionSetSubsumptionBranch.TrueBranch = actionSetSubsumption;
+      actionSetSubsumptionBranch.TrueBranch = setSubsumedToFalseSubScopeProcessor;
+      setSubsumedToFalseSubScopeProcessor.Operator = setSubsumedToFalseAssigner;
+      setSubsumedToFalseSubScopeProcessor.Successor = actionSetSubsumption;
       actionSetSubsumption.Successor = subsumptionSelector;
       subsumptionSelector.Successor = leftReducer;
@@ -359,5 +363,8 @@
       actionSetSubScopesProcessor.Successor = actionSetMergingReducer;
 
-      matchSetMergingReducer.Successor = calculateNumberOfDeletions;
+      matchSetMergingReducer.Successor = setDeletionFalseSubScopeProcessor2;
+      setDeletionFalseSubScopeProcessor2.Operator = setDeletionFalseAssigner;
+      setDeletionFalseSubScopeProcessor2.Successor = insertInPopulation;
+      insertInPopulation.Successor = calculateNumberOfDeletions;
       calculateNumberOfDeletions.Successor = deletionOperatorAfterGA;
       deletionOperatorAfterGA.Successor = deletionSelectorAfterGA;
@@ -388,4 +395,7 @@
       classifierFetcher.OperatorParameter.ActualName = problem.ClassifierFetcherParameter.Name;
 
+      test.FetchedClassifierParameter.ActualName = problem.ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName;
+      test.PossibleActionsParameter.ActualName = problem.PossibleActionsConcreteClassParameter.Name;
+
       actionExecuter.OperatorParameter.ActualName = problem.ActionExecuterParameter.Name;
 
@@ -396,5 +406,5 @@
       problem.ActionSetSubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity";
 
-      subsumptionSelector.ConditionParameter.ActualName = problem.ActionSetSubsumptionOperator.HasBeenSubsumedParameterName;
+      problem.ActionSetSubsumptionOperator.HasBeenSubsumedParameter.ActualName = HASBEENSUBSUMED;
 
       actionSetSubsumption.OperatorParameter.ActualName = problem.ActionSetSubsumptionOperatorParameter.Name;
