Changeset 9110 for branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems
- Timestamp:
- 01/04/13 20:46:18 (12 years ago)
- Location:
- branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LCSAdaptedGeneticAlgorithm.cs
r9105 r9110 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Encodings.ConditionActionEncoding; 26 27 using HeuristicLab.Operators; 27 28 using HeuristicLab.Optimization.Operators; … … 36 37 [StorableClass] 37 38 public sealed class LCSAdaptedGeneticAlgorithm : AlgorithmOperator { 39 private const string TEMPID = "TempID"; 40 private const string SUBSUMEDBY = "SubsumedBy"; 41 private const string SUBSUMED = "Subsumed"; 42 38 43 #region Parameter properties 39 44 public ValueLookupParameter<IRandom> RandomParameter { … … 75 80 public ValueLookupParameter<IntValue> PopulationSizeParameter { 76 81 get { return (ValueLookupParameter<IntValue>)Parameters["PopulationSize"]; } 82 } 83 public ValueLookupParameter<BoolValue> DoGASubsumptionParameter { 84 get { return (ValueLookupParameter<BoolValue>)Parameters["DoGASubsumption"]; } 77 85 } 78 86 private ScopeParameter CurrentScopeParameter { … … 113 121 Parameters.Add(new ValueLookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated.")); 114 122 Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population.")); 123 Parameters.Add(new ValueLookupParameter<BoolValue>("DoGASubsumption", "Sets if GA subsumption is executed.")); 115 124 Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied.")); 116 125 #endregion … … 126 135 Placeholder crossover = new Placeholder(); 127 136 Placeholder afterCrossover = new Placeholder(); 128 StochasticBranch stochasticBranch = new StochasticBranch();129 137 Placeholder mutator = new Placeholder(); 130 138 SubScopesRemover subScopesRemover = new SubScopesRemover(); … … 136 144 ConditionalBranch conditionalBranch = new ConditionalBranch(); 137 145 146 TempSubScopeIDAssigner tempIdAssigner = new TempSubScopeIDAssigner(); 147 ConditionalBranch doGASubsumptionBranch1 = new ConditionalBranch(); 148 UniformSubScopesProcessor setSubsumptionFalseSubScopesProcessor = new UniformSubScopesProcessor(); 149 Assigner setSubsumpByAssigner = new Assigner(); 150 Assigner setSubsumptionFalseAssigner = new Assigner(); 151 CheckGASubsumptionOperator checkGASubsumptionOperator = new CheckGASubsumptionOperator(); 152 ConditionalBranch doGASubsumptionBranch2 = new ConditionalBranch(); 153 ExecuteGASubsumptionOperator executeGAsubsumptionOperator = new ExecuteGASubsumptionOperator(); 154 ConditionalSelector subsumptionSelector = new ConditionalSelector(); 155 LeftReducer subsumptionLeftReducer = new LeftReducer(); 156 138 157 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class GeneticAlgorithm expects this to be called Generations 139 158 … … 144 163 analyzer1.OperatorParameter.ActualName = "Analyzer"; 145 164 165 tempIdAssigner.LeftSideParameter.ActualName = TEMPID; 166 167 setSubsumpByAssigner.LeftSideParameter.ActualName = SUBSUMEDBY; 168 setSubsumpByAssigner.RightSideParameter.Value = new IntValue(-1); 169 170 setSubsumptionFalseAssigner.LeftSideParameter.ActualName = SUBSUMED; 171 setSubsumptionFalseAssigner.RightSideParameter.Value = new BoolValue(false); 172 146 173 selector.Name = "Selector"; 147 174 selector.OperatorParameter.ActualName = "Selector"; … … 155 182 afterCrossover.OperatorParameter.ActualName = "AfterCrossover"; 156 183 157 stochasticBranch.ProbabilityParameter.ActualName = "MutationProbability";158 stochasticBranch.RandomParameter.ActualName = "Random";159 160 184 mutator.Name = "Mutator"; 161 185 mutator.OperatorParameter.ActualName = "Mutator"; 162 186 187 doGASubsumptionBranch1.ConditionParameter.ActualName = DoGASubsumptionParameter.ActualName; 188 189 checkGASubsumptionOperator.ChildClassifiersParameter.ActualName = "CombinedIntegerVector"; 190 checkGASubsumptionOperator.ParentsClassifiersParameter.ActualName = "CombinedIntegerVector"; 191 checkGASubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity"; 192 checkGASubsumptionOperator.ExperiencesParameter.ActualName = "Experience"; 193 checkGASubsumptionOperator.ErrorsParameter.ActualName = "Error"; 194 checkGASubsumptionOperator.TempIDParameter.ActualName = TEMPID; 195 checkGASubsumptionOperator.ErrorZeroParameter.ActualName = "ErrorZero"; 196 checkGASubsumptionOperator.ThetaSubsumptionParameter.ActualName = "ThetaSubsumption"; 197 checkGASubsumptionOperator.SubsumedByParameter.ActualName = SUBSUMEDBY; 198 checkGASubsumptionOperator.SubsumedParameter.ActualName = SUBSUMED; 199 163 200 subScopesRemover.RemoveAllSubScopes = true; 201 202 doGASubsumptionBranch2.ConditionParameter.ActualName = DoGASubsumptionParameter.ActualName; 203 204 executeGAsubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity"; 205 executeGAsubsumptionOperator.TempIDParameter.ActualName = TEMPID; 206 executeGAsubsumptionOperator.SubsumedByParameter.ActualName = SUBSUMEDBY; 207 208 subsumptionSelector.ConditionParameter.ActualName = SUBSUMED; 209 subsumptionSelector.CopySelected = new BoolValue(false); 164 210 165 211 subScopesCounter.Name = "Increment EvaluatedSolutions"; … … 184 230 variableCreator.Successor = resultsCollector1; 185 231 resultsCollector1.Successor = analyzer1; 186 analyzer1.Successor = selector; 232 analyzer1.Successor = tempIdAssigner; 233 tempIdAssigner.Successor = setSubsumptionFalseSubScopesProcessor; 234 setSubsumptionFalseSubScopesProcessor.Operator = setSubsumpByAssigner; 235 setSubsumpByAssigner.Successor = setSubsumptionFalseAssigner; 236 setSubsumptionFalseAssigner.Successor = null; 237 setSubsumptionFalseSubScopesProcessor.Successor = selector; 187 238 selector.Successor = subScopesProcessor1; 188 239 subScopesProcessor1.Operators.Add(new EmptyOperator()); … … 193 244 uniformSubScopesProcessor1.Successor = subScopesCounter; 194 245 crossover.Successor = afterCrossover; 195 afterCrossover.Successor = stochasticBranch;196 stochasticBranch.FirstBranch = mutator;197 stochasticBranch.SecondBranch = null;198 stochasticBranch.Successor = subScopesRemover;199 mutator.Successor = null;246 afterCrossover.Successor = mutator; 247 mutator.Successor = doGASubsumptionBranch1; 248 doGASubsumptionBranch1.TrueBranch = checkGASubsumptionOperator; 249 doGASubsumptionBranch1.FalseBranch = new EmptyOperator(); 250 doGASubsumptionBranch1.Successor = subScopesRemover; 200 251 subScopesRemover.Successor = null; 201 252 subScopesCounter.Successor = null; 202 mergingReducer.Successor = intCounter; 253 mergingReducer.Successor = doGASubsumptionBranch2; 254 doGASubsumptionBranch2.TrueBranch = executeGAsubsumptionOperator; 255 doGASubsumptionBranch2.FalseBranch = new EmptyOperator(); 256 executeGAsubsumptionOperator.Successor = subsumptionSelector; 257 subsumptionSelector.Successor = subsumptionLeftReducer; 258 subsumptionLeftReducer.Successor = null; 259 doGASubsumptionBranch2.Successor = intCounter; 203 260 intCounter.Successor = comparator; 204 261 comparator.Successor = analyzer2; -
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs
r9105 r9110 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Data; 25 using HeuristicLab.Encodings.CombinedIntegerVectorEncoding; 25 26 using HeuristicLab.Encodings.ConditionActionEncoding; 26 using HeuristicLab.Encodings.IntegerVectorEncoding;27 27 using HeuristicLab.Operators; 28 28 using HeuristicLab.Optimization; … … 39 39 [StorableClass] 40 40 public sealed class LearningClassifierSystemMainLoop : AlgorithmOperator { 41 private const string HASTOBEDELETED = "HasToBeDeleted"; 42 private const string HASBEENSUBSUMED = "HasBeenSubsumed"; 41 43 42 44 #region Parameter Properties … … 62 64 private DoDeletionBeforeCoveringOperator doDeletionBeforeCovering; 63 65 private CoveringOperator covering; 64 private ConditionalSelector subsumptionSelector; 66 67 private UniformSomePositionManipulator test; 65 68 66 69 private Placeholder evaluator; … … 88 91 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())); 89 92 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.")); 90 UniformOnePositionManipulator test = new UniformOnePositionManipulator(); 91 test.IntegerVectorParameter.ActualName = "CombinedIntegerVector"; 92 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformOnePositionManipulator() }, test)); 93 test = new UniformSomePositionManipulator(); 94 test.ProbabilityParameter.ActualName = "MutationProbability"; 95 test.ChildParameter.ActualName = "CombinedIntegerVector"; 96 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformSomePositionManipulator() }, test)); 93 97 XCSAfterCrossoverOperator afterCrossover = new XCSAfterCrossoverOperator(); 94 98 Parameters.Add(new ConstrainedValueParameter<IOperator>("AfterCrossover", "The operator used to select solutions for reproduction.", new ItemSet<IOperator>() { new XCSAfterCrossoverOperator() }, afterCrossover)); … … 113 117 doDeletionBeforeCovering = new DoDeletionBeforeCoveringOperator(); 114 118 ConditionalBranch doDeletionBeforeCoveringConditionalBranch = new ConditionalBranch(); 115 MergingReducer matchSetMergingReducerForDeletion = new MergingReducer();116 SubScopeVariableCopier subscopeVariableCopier = new SubScopeVariableCopier();117 119 XCSDeletionOperator deletionOperator = new XCSDeletionOperator(); 118 120 ConditionalSelector deletionSelector = new ConditionalSelector(); 119 121 LeftReducer leftReducerAfterDeletionSelection = new LeftReducer(); 120 UniformSubScopesProcessor matchConditionAfterDeletionSubScopesProcessor = new UniformSubScopesProcessor();121 ConditionalSelector conditionMatchSelectorAfterDeletion = new ConditionalSelector();122 SubScopesProcessor matchSetAfterDeletionSubScopesProcessor = new SubScopesProcessor();123 CountNumberOfUniqueActions countNumberOfUniqueActionsAfterDeletion = new CountNumberOfUniqueActions();124 SubScopesProcessor coveringAfterDeletionSubScopesProcessor = new SubScopesProcessor();125 122 covering = new CoveringOperator(); 126 123 MergingReducer actionSetMergingReducer = new MergingReducer(); … … 134 131 UniformSubScopesProcessor updateParametersSubScopesProcessor = new UniformSubScopesProcessor(); 135 132 ConditionalBranch actionSetSubsumptionBranch = new ConditionalBranch(); 136 subsumptionSelector = new ConditionalSelector(); 133 UniformSubScopesProcessor setSubsumedToFalseSubScopeProcessor = new UniformSubScopesProcessor(); 134 Assigner setSubsumedToFalseAssigner = new Assigner(); 135 ConditionalSelector subsumptionSelector = new ConditionalSelector(); 137 136 LeftReducer leftReducer = new LeftReducer(); 138 137 XCSCheckIfGAShouldBeApplied checkIfGAShouldRun = new XCSCheckIfGAShouldBeApplied(); … … 143 142 IntCounter currentPopulationSizeCounter = new IntCounter(); 144 143 CalculateNumberOfDeletionsOperator calculateNumberOfDeletions = new CalculateNumberOfDeletionsOperator(); 144 UniformSubScopesProcessor setDeletionFalseSubScopeProcessor1 = new UniformSubScopesProcessor(); 145 UniformSubScopesProcessor setDeletionFalseSubScopeProcessor2 = new UniformSubScopesProcessor(); 146 Assigner setDeletionFalseAssigner = new Assigner(); 147 InsertInPopulationOperator insertInPopulation = new InsertInPopulationOperator(); 145 148 XCSDeletionOperator deletionOperatorAfterGA = new XCSDeletionOperator(); 146 149 ConditionalSelector deletionSelectorAfterGA = new ConditionalSelector(); … … 169 172 170 173 conditionMatchSelector.CopySelected = new BoolValue(false); 171 conditionMatchSelector.ConditionParameter.ActualName = "MatchCondition"; 172 173 conditionMatchSelectorAfterDeletion.CopySelected = new BoolValue(false); 174 conditionMatchSelectorAfterDeletion.ConditionParameter.ActualName = "MatchCondition"; 174 conditionMatchSelector.ConditionParameter.ActualName = matchConditionOperator.MatchConditionParameter.ActualName; 175 175 176 176 countNumberOfUniqueActions.ClassifiersParameter.ActualName = "CombinedIntegerVector"; 177 177 178 countNumberOfUniqueActionsAfterDeletion.ClassifiersParameter.ActualName = "CombinedIntegerVector"; 179 180 subscopeVariableCopier.SubScopeIndexParameter.Value = new IntValue(1); 181 178 doDeletionBeforeCovering.ClassifiersParameter.ActualName = "CombinedIntegerVector"; 179 doDeletionBeforeCovering.MatchConditionParameter.ActualName = matchConditionOperator.MatchConditionParameter.ActualName; 182 180 doDeletionBeforeCovering.CurrentPopulationSizeParameter.ActualName = "CurrentPopulationSize"; 183 doDeletionBeforeCovering.NumberOfUniqueActionsParameter.ActualName = countNumberOfUniqueActions.NumberOfUniqueActionsParameter.ActualName;184 181 doDeletionBeforeCovering.PopulationSizeParameter.ActualName = "N"; 185 182 186 183 doDeletionBeforeCoveringConditionalBranch.ConditionParameter.ActualName = doDeletionBeforeCovering.DoDeletionParameter.ActualName; 187 184 185 setDeletionFalseAssigner.LeftSideParameter.ActualName = HASTOBEDELETED; 186 setDeletionFalseAssigner.RightSideParameter.Value = new BoolValue(false); 187 188 188 deletionOperator.NumberToDeleteParameter.ActualName = doDeletionBeforeCovering.NumberToDeleteParameter.ActualName; 189 deletionOperator.HasToBeDeletedParameter.ActualName = HASTOBEDELETED; 189 190 deletionOperator.AverageActionSetSizesParameter.ActualName = "AverageActionSetSize"; 190 191 deletionOperator.FitnessesParameter.ActualName = "Fitness"; … … 195 196 deletionOperator.RandomParameter.ActualName = "Random"; 196 197 197 deletionSelector.ConditionParameter.ActualName = deletionOperator.HasToBeDeletedVariableName;198 deletionSelector.ConditionParameter.ActualName = HASTOBEDELETED; 198 199 deletionSelector.CopySelected = new BoolValue(false); 199 200 … … 219 220 actionSetSubsumptionBranch.ConditionParameter.ActualName = "DoActionSetSubsumption"; 220 221 222 setSubsumedToFalseAssigner.LeftSideParameter.ActualName = HASBEENSUBSUMED; 223 setSubsumedToFalseAssigner.RightSideParameter.Value = new BoolValue(false); 224 225 subsumptionSelector.ConditionParameter.ActualName = HASBEENSUBSUMED; 221 226 subsumptionSelector.CopySelected = new BoolValue(false); 222 227 … … 274 279 adaptedGeneticAlgorithmMainLoop.MaximumGenerationsParameter.ActualName = "ZeroIntValue"; 275 280 adaptedGeneticAlgorithmMainLoop.QualityParameter.ActualName = "Fitness"; 276 adaptedGeneticAlgorithmMainLoop.MutationProbabilityParameter. Value = new PercentValue(10);281 adaptedGeneticAlgorithmMainLoop.MutationProbabilityParameter.ActualName = "MutationProbability"; 277 282 adaptedGeneticAlgorithmMainLoop.MaximizationParameter.Value = new BoolValue(true); 278 283 adaptedGeneticAlgorithmMainLoop.AfterCrossoverParameter.ActualName = AfterCrossoverParameter.Name; … … 281 286 currentPopulationSizeCounter.Increment = new IntValue(2); 282 287 288 insertInPopulation.ClassifiersParameter.ActualName = "CombinedIntegerVector"; 289 insertInPopulation.NumerositiesParameter.ActualName = "Numerosity"; 290 insertInPopulation.HasToBeDeletedParameter.ActualName = HASTOBEDELETED; 291 insertInPopulation.InsertInPopulationParameter.ActualName = "InsertInPopulation"; 292 283 293 calculateNumberOfDeletions.CurrentPopulationSizeParameter.ActualName = "CurrentPopulationSize"; 284 294 calculateNumberOfDeletions.PopulationSizeParameter.ActualName = "N"; 285 295 286 296 deletionOperatorAfterGA.NumberToDeleteParameter.ActualName = calculateNumberOfDeletions.NumberOfDeletionsParameter.ActualName; 297 deletionOperatorAfterGA.HasToBeDeletedParameter.ActualName = HASTOBEDELETED; 287 298 deletionOperatorAfterGA.AverageActionSetSizesParameter.ActualName = "AverageActionSetSize"; 288 299 deletionOperatorAfterGA.FitnessesParameter.ActualName = "Fitness"; … … 293 304 deletionOperatorAfterGA.RandomParameter.ActualName = "Random"; 294 305 295 deletionSelectorAfterGA.ConditionParameter.ActualName = deletionOperatorAfterGA.HasToBeDeletedVariableName;306 deletionSelectorAfterGA.ConditionParameter.ActualName = HASTOBEDELETED; 296 307 deletionSelectorAfterGA.CopySelected = new BoolValue(false); 297 308 #endregion … … 307 318 classifierFetcher.Successor = matchCondtionSubScopesProcessor; 308 319 matchCondtionSubScopesProcessor.Operator = matchConditionOperator; 309 matchCondtionSubScopesProcessor.Successor = conditionMatchSelector; 320 matchCondtionSubScopesProcessor.Successor = doDeletionBeforeCovering; 321 doDeletionBeforeCovering.Successor = doDeletionBeforeCoveringConditionalBranch; 322 doDeletionBeforeCoveringConditionalBranch.TrueBranch = setDeletionFalseSubScopeProcessor1; 323 doDeletionBeforeCoveringConditionalBranch.FalseBranch = conditionMatchSelector; 324 setDeletionFalseSubScopeProcessor1.Operator = setDeletionFalseAssigner; 325 setDeletionFalseSubScopeProcessor1.Successor = deletionOperator; 326 deletionOperator.Successor = deletionSelector; 327 deletionSelector.Successor = leftReducerAfterDeletionSelection; 328 //if a classifier with a unique action for the match set has been deleted, then there are still to many classifiers in the population 329 leftReducerAfterDeletionSelection.Successor = doDeletionBeforeCovering; 310 330 conditionMatchSelector.Successor = matchSetSubScopesProcessor; 311 331 matchSetSubScopesProcessor.Operators.Add(new EmptyOperator()); 312 332 matchSetSubScopesProcessor.Operators.Add(countNumberOfUniqueActions); 313 matchSetSubScopesProcessor.Successor = subscopeVariableCopier; 314 subscopeVariableCopier.Successor = doDeletionBeforeCovering; 315 doDeletionBeforeCovering.Successor = doDeletionBeforeCoveringConditionalBranch; 316 doDeletionBeforeCoveringConditionalBranch.TrueBranch = matchSetMergingReducerForDeletion; 317 matchSetMergingReducerForDeletion.Successor = deletionOperator; 318 deletionOperator.Successor = deletionSelector; 319 deletionSelector.Successor = leftReducerAfterDeletionSelection; 320 leftReducerAfterDeletionSelection.Successor = matchConditionAfterDeletionSubScopesProcessor; 321 doDeletionBeforeCoveringConditionalBranch.FalseBranch = coveringAfterDeletionSubScopesProcessor; 322 coveringAfterDeletionSubScopesProcessor.Operators.Add(new EmptyOperator()); 323 coveringAfterDeletionSubScopesProcessor.Operators.Add(covering); 324 coveringAfterDeletionSubScopesProcessor.Successor = matchSetMergingReducer; 325 matchConditionAfterDeletionSubScopesProcessor.Operator = matchConditionOperator; 326 matchConditionAfterDeletionSubScopesProcessor.Successor = conditionMatchSelectorAfterDeletion; 327 conditionMatchSelectorAfterDeletion.Successor = matchSetAfterDeletionSubScopesProcessor; 328 matchSetAfterDeletionSubScopesProcessor.Operators.Add(new EmptyOperator()); 329 matchSetAfterDeletionSubScopesProcessor.Operators.Add(countNumberOfUniqueActionsAfterDeletion); 330 matchSetAfterDeletionSubScopesProcessor.Successor = matchSetMergingReducer; 331 countNumberOfUniqueActionsAfterDeletion.Successor = covering; 332 333 countNumberOfUniqueActions.Successor = covering; 334 matchSetSubScopesProcessor.Successor = matchSetMergingReducer; 333 335 covering.Successor = predictionArrayCalculator; 334 336 predictionArrayCalculator.Successor = actionSelector; … … 345 347 updateParametersSubScopesProcessor.Operator = evaluator; 346 348 updateParametersSubScopesProcessor.Successor = actionSetSubsumptionBranch; 347 actionSetSubsumptionBranch.TrueBranch = actionSetSubsumption; 349 actionSetSubsumptionBranch.TrueBranch = setSubsumedToFalseSubScopeProcessor; 350 setSubsumedToFalseSubScopeProcessor.Operator = setSubsumedToFalseAssigner; 351 setSubsumedToFalseSubScopeProcessor.Successor = actionSetSubsumption; 348 352 actionSetSubsumption.Successor = subsumptionSelector; 349 353 subsumptionSelector.Successor = leftReducer; … … 359 363 actionSetSubScopesProcessor.Successor = actionSetMergingReducer; 360 364 361 matchSetMergingReducer.Successor = calculateNumberOfDeletions; 365 matchSetMergingReducer.Successor = setDeletionFalseSubScopeProcessor2; 366 setDeletionFalseSubScopeProcessor2.Operator = setDeletionFalseAssigner; 367 setDeletionFalseSubScopeProcessor2.Successor = insertInPopulation; 368 insertInPopulation.Successor = calculateNumberOfDeletions; 362 369 calculateNumberOfDeletions.Successor = deletionOperatorAfterGA; 363 370 deletionOperatorAfterGA.Successor = deletionSelectorAfterGA; … … 388 395 classifierFetcher.OperatorParameter.ActualName = problem.ClassifierFetcherParameter.Name; 389 396 397 test.FetchedClassifierParameter.ActualName = problem.ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName; 398 test.PossibleActionsParameter.ActualName = problem.PossibleActionsConcreteClassParameter.Name; 399 390 400 actionExecuter.OperatorParameter.ActualName = problem.ActionExecuterParameter.Name; 391 401 … … 396 406 problem.ActionSetSubsumptionOperator.NumerositiesParameter.ActualName = "Numerosity"; 397 407 398 subsumptionSelector.ConditionParameter.ActualName = problem.ActionSetSubsumptionOperator.HasBeenSubsumedParameterName;408 problem.ActionSetSubsumptionOperator.HasBeenSubsumedParameter.ActualName = HASBEENSUBSUMED; 399 409 400 410 actionSetSubsumption.OperatorParameter.ActualName = problem.ActionSetSubsumptionOperatorParameter.Name;
Note: See TracChangeset
for help on using the changeset viewer.