Opened 5 years ago

Last modified 5 years ago

#1980 reviewing feature request

Implementing Learning Classifier Systems

Reported by: sforsten Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.x Backlog
Component: ### Undefined ### Version: branch
Keywords: Cc:


Implementing Learning Classifier Systems, at least one Michigan and one Pittsburgh approach.

The implementation should be a reference implementation, if other LC systems will be added.

Change History (29)

comment:1 Changed 5 years ago by sforsten

r8941: A general implementation of most main components of LCS is done with an own encoding. At the moment you can just watch the LCS generating a number of solutions and selecting the match and action set in the debug engine.

comment:2 Changed 5 years ago by sforsten


  • added ConditionActionClassificationProblem
  • added ConditionActionEncoding
  • added Manipulators, Crossovers and an LCSAdaptedGeneticAlgorithm
  • changed LearningClassifierSystemMainLoop

comment:3 Changed 5 years ago by sforsten

r9090: implemented covering and changed SinglePointCrossover for CombinedIntegerVectorEncoding

comment:4 Changed 5 years ago by sforsten


  • included an adapted version of GA correctly
  • added action set subsumption
  • added deletion after GA and before covering

comment:5 Changed 5 years ago by sforsten

  • Status changed from new to accepted


  • added GA subsumption
  • simplified deletion before covering
  • simplified XCSDeletionOperator

comment:6 Changed 5 years ago by sforsten


  • added XCSSolution, XCSModel, XCSClassifier to represent the xcs classifier
  • XCSSolution also shows the current accuracy (training and test partition has to be added)
  • added XCSSolutionAnalyzer to create a XCSSolution during the run of the algorithm
  • added XCSModelView to show the xcs model
  • fixed a bug in XCSDeletionOperator (sometimes it deleted less classifiers than it should)
  • moved some parameter from ConditionActionClassificationProblem to ConditionActionClassificationProblemData

comment:7 Changed 5 years ago by sforsten


  • added problem instance provider to import csv files for ConditionActionClassificationProblemData
  • adapted LCSAdaptedGeneticAlgorithm to use the crossover probability
  • fixed a bug in XCSModelView

comment:8 Changed 5 years ago by sforsten


  • added training and test partition to ConditionActionClassificationProblemData
  • ClassifierFetcher only uses training partition

comment:9 Changed 5 years ago by sforsten


  • change standard parameter settings in ConditionActionClassificationProblem
  • fixed bug: if a parent is copied instead of a crossover, the new individual is inserted in the population correctly
  • added missing attributes to ConditionActionClassificationProblemData

comment:10 Changed 5 years ago by sforsten


  • added BestTrainingXCSSolutionAnalyzer and CurrentXCSSolutionAnalyzer
  • fixed bug: Equals method was not correct in CombinedIntegerVector

The interface IEquatable<IClassifier> in IClassifier will be removed soon and a IEqualityComparer<IClassifier> will be implemented instead.

comment:11 Changed 5 years ago by sforsten

r9191: branch project HeuristicLab.Core


  • added necessary interface ICondition, IAction, IInput
  • removed not used class MatchSelector and interface IMatchSelector
  • added constructors to ItemDictionary
  • added new encoding

The new encoding still misses a manipulator and a covering operator. Also a problem which uses it has to be created or at least adapted.

comment:12 Changed 5 years ago by sforsten


  • deleted not needed interface IMatching
  • finished VariableVector encoding
  • the algorithm LearningClassifierSystem is now independent of a specific encoding. It still needs the ConditionActionEncoding.
  • merged r9191:9203 HeuristicLab.Core from trunk to branch

comment:13 Changed 5 years ago by sforsten

r9205: forgot to remove the reference to any specific encodings in the LearningClassifierSystems project

comment:14 Changed 5 years ago by sforsten


  • made classes in Problems.ConditionActionClassification abstract
  • added Problems.VariableVectorClassification and Problems.CombinedIntegerVectorClassification
  • LCS works now with arbitrary problems, which implement ConditionActionClassificationProblem

comment:15 Changed 5 years ago by sforsten


  • property changes
  • removed Plugin.cs and AssemblyInfo.cs
  • added VariableVectorCVSInstanceProvider

comment:16 Changed 5 years ago by sforsten


  • fixed several bugs (crossover, subsumption, serialization etc.)
  • added ModuloOperator
  • CombinedIntegerVectorClassificationProblem\Data and VariableVectorClassificationProblem\Data inherit from ConditionActionClassificationProblem\Data
  • it can now be set how often the analyzers have to be executed
  • VariableVectorAction, VariableVectorCondition and VariableVectorInput now inherit from Item

comment:17 Changed 5 years ago by sforsten


  • added Algorithms.GAssist
  • adapted Problems.DecisionListClassification and Encodings.DecisionList

comment:18 Changed 5 years ago by sforsten


  • added be project Optimization.Operators.LCS
  • added default rule strategies for GAssist

comment:19 Changed 5 years ago by sforsten


  • added DecisionListView
  • added event handlers in *ProblemData
  • renamed project Problems.XCS.Views to Problems.lCS.Views and Problems.Instances.ConditionActionClassification to Problems.Instances.LCS
  • integrated niching in GAssist and added NichingTournamentSelector
  • minor code improvements and property changes

comment:20 Changed 5 years ago by sforsten


  • several small bug fixes
  • added windowing technique ILAS to GAssist
  • GAssist and XCS work now with real-valued features
  • severely improved the performance of XCS

comment:21 Changed 5 years ago by sforsten


  • added multiple discretizer to GAssist
  • created ensembles for LCS problems and edited CrossValidation to use them

comment:22 Changed 5 years ago by sforsten


  • added ProportionalTournamentSelector for XCS
  • fixed bug: if an initial population is created in XCS, the initial population also creates general classifier, not only specific ones
  • merged r9204:9466 HeuristicLab.Core from trunk to branch

comment:23 Changed 5 years ago by sforsten

r9468: removed condition that all condition variables have to be double variables

comment:24 Changed 5 years ago by sforsten

r9470: added better check of which variables can be an action and which can be condition variables

comment:25 Changed 5 years ago by sforsten

r9475: several small bug fixes

comment:26 Changed 5 years ago by sforsten


  • renamed algorithm Learning Classifier System to XCS
  • DecisionListSolution and XCSSolution show more information
  • VariableVectorClassificationProblemData can now also import datasets where the last variable is not the target variable

comment:27 Changed 5 years ago by sforsten


  • set plugin dependencies
  • added smart initialization
  • added hierarchical selection
  • fixed major and minor default rule
  • fixed several smaller bugs
  • some refactoring has been done

MPLCS has still do be added to GAssist see

Many newer operators are already available for XCS and should be added.

Some event handler are still missing.

comment:28 Changed 5 years ago by sforsten

r9606: forgot to delete a file

comment:29 Changed 5 years ago by mkommend

  • Owner changed from sforsten to mkommend
  • Status changed from accepted to reviewing
Note: See TracTickets for help on using tickets.