Index: /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs	(revision 9352)
@@ -47,8 +47,8 @@
     #region Problem Properties
     public override Type ProblemType {
-      get { return typeof(ISingleObjectiveHeuristicOptimizationProblem); }
-    }
-    public new ISingleObjectiveHeuristicOptimizationProblem Problem {
-      get { return (ISingleObjectiveHeuristicOptimizationProblem)base.Problem; }
+      get { return typeof(IGAssistProblem); }
+    }
+    public new IGAssistProblem Problem {
+      get { return (IGAssistProblem)base.Problem; }
       set { base.Problem = value; }
     }
@@ -65,6 +65,9 @@
       get { return (ValueParameter<IntValue>)Parameters["PopulationSize"]; }
     }
-    public IConstrainedValueParameter<ISelector> SelectorParameter {
-      get { return (IConstrainedValueParameter<ISelector>)Parameters["Selector"]; }
+    public IConstrainedValueParameter<IDefaultRuleOperator> DefaultRuleParameter {
+      get { return (IConstrainedValueParameter<IDefaultRuleOperator>)Parameters["DefaultRule"]; }
+    }
+    public IConstrainedValueParameter<INichingSingleObjectiveSelector> SelectorParameter {
+      get { return (IConstrainedValueParameter<INichingSingleObjectiveSelector>)Parameters["Selector"]; }
     }
     private ValueParameter<PercentValue> CrossoverProbabilityParameter {
@@ -134,5 +137,5 @@
       set { PopulationSizeParameter.Value = value; }
     }
-    public ISelector Selector {
+    public INichingSingleObjectiveSelector Selector {
       get { return SelectorParameter.Value; }
       set { SelectorParameter.Value = value; }
@@ -192,5 +195,5 @@
       Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
       Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100)));
-      Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction."));
+      Parameters.Add(new ConstrainedValueParameter<INichingSingleObjectiveSelector>("Selector", "The operator used to select solutions for reproduction."));
       Parameters.Add(new ValueParameter<PercentValue>("CrossoverProbability", "The probability that the Crossover operator is applied on a solution.", new PercentValue(0.9)));
       Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions."));
@@ -208,4 +211,5 @@
       Parameters.Add(new FixedValueParameter<IntValue>("MaximumNumberOfIntervals", "", new IntValue(5)));
       Parameters.Add(new FixedValueParameter<IntValue>("InitialNumberOfRules", "", new IntValue(20)));
+      Parameters.Add(new ConstrainedValueParameter<IDefaultRuleOperator>("DefaultRule", ""));
       Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("ReinitializeCurveOperator", ""));
       Parameters.Add(new ValueParameter<ItemCollection<IDiscretizer>>("Discretizers", "", new ItemCollection<IDiscretizer>()));
@@ -236,4 +240,5 @@
       resultsCollector.Successor = mainLoop;
 
+      mainLoop.DefaultRuleParameter.ActualName = DefaultRuleParameter.Name;
       mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
       mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
@@ -251,8 +256,8 @@
       mainLoop.ReinitializationProbabilityOperatorParameter.ActualName = ReinitializeCurveOperatorParameter.Name;
 
-      foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
+      foreach (INichingSingleObjectiveSelector selector in ApplicationManager.Manager.GetInstances<INichingSingleObjectiveSelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
         SelectorParameter.ValidValues.Add(selector);
-      ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
-      if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
+      //INichingSingleObjectiveSelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
+      //if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
       ParameterizeSelectors();
 
@@ -349,4 +354,5 @@
       ParameterizeAnalyzers();
       ParameterizeIterationBasedOperators();
+      UpdateDefaultRuleOperators();
       UpdateCrossovers();
       UpdateMutators();
@@ -430,16 +436,21 @@
     }
     private void ParameterizeSelectors() {
-      foreach (ISelector selector in SelectorParameter.ValidValues) {
+      foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues) {
         selector.CopySelected = new BoolValue(true);
         selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * (PopulationSizeParameter.Value.Value - ElitesParameter.Value.Value));
         selector.NumberOfSelectedSubScopesParameter.Hidden = true;
+        selector.ParentsPerChildParameter.Value = new IntValue(2);
         ParameterizeStochasticOperator(selector);
       }
       if (Problem != null) {
-        foreach (ISingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
+        foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<INichingSingleObjectiveSelector>()) {
           selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
           selector.MaximizationParameter.Hidden = true;
           selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
           selector.QualityParameter.Hidden = true;
+          selector.NichingParameter.ActualName = Problem.NichingParameterName;
+          selector.GAssistNichesProblemDataParameter.ActualName = Problem.ProblemDataParameter.Name;
+          //change
+          selector.IndividualParameter.ActualName = "DecisionList";
         }
       }
@@ -468,4 +479,20 @@
       }
     }
+    private void UpdateDefaultRuleOperators() {
+      IDefaultRuleOperator oldDefaultRule = DefaultRuleParameter.Value;
+      DefaultRuleParameter.ValidValues.Clear();
+      IDefaultRuleOperator defaultdefaultRule = Problem.Operators.OfType<IDefaultRuleOperator>().FirstOrDefault();
+
+      foreach (IDefaultRuleOperator defaultRule in Problem.Operators.OfType<IDefaultRuleOperator>().OrderBy(x => x.Name))
+        DefaultRuleParameter.ValidValues.Add(defaultRule);
+
+      if (oldDefaultRule != null) {
+        IDefaultRuleOperator defaultRule = DefaultRuleParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldDefaultRule.GetType());
+        if (defaultRule != null) DefaultRuleParameter.Value = defaultRule;
+        else oldDefaultRule = null;
+      }
+      if (oldDefaultRule == null && defaultdefaultRule != null)
+        DefaultRuleParameter.Value = defaultdefaultRule;
+    }
     private void UpdateCrossovers() {
       ICrossover oldCrossover = CrossoverParameter.Value;
Index: /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssistMainLoop.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssistMainLoop.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssistMainLoop.cs	(revision 9352)
@@ -61,4 +61,7 @@
     public ValueLookupParameter<IOperator> MutatorParameter {
       get { return (ValueLookupParameter<IOperator>)Parameters["Mutator"]; }
+    }
+    public ValueLookupParameter<IOperator> DefaultRuleParameter {
+      get { return (ValueLookupParameter<IOperator>)Parameters["DefaultRule"]; }
     }
     public ValueLookupParameter<IOperator> SpecialStagesParameter {
@@ -130,4 +133,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population."));
       Parameters.Add(new ValueLookupParameter<IOperator>("ReinitializationProbabilityOperator", ""));
+      Parameters.Add(new ValueLookupParameter<IOperator>("DefaultRule", ""));
       Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied."));
       #endregion
@@ -138,4 +142,5 @@
       Placeholder analyzer1 = new Placeholder();
       Placeholder reinitializationProbabilityOperator = new Placeholder();
+      Placeholder defaultRuleOperator = new Placeholder();
       Placeholder selector = new Placeholder();
       SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
@@ -170,4 +175,7 @@
       analyzer1.OperatorParameter.ActualName = "Analyzer";
 
+      defaultRuleOperator.Name = "Default Rule Operator";
+      defaultRuleOperator.OperatorParameter.ActualName = DefaultRuleParameter.Name;
+
       reinitializationProbabilityOperator.Name = "Reinitialization Probability operator (placeholder)";
       reinitializationProbabilityOperator.OperatorParameter.ActualName = ReinitializationProbabilityOperatorParameter.Name;
@@ -229,5 +237,6 @@
       variableCreator.Successor = resultsCollector1;
       resultsCollector1.Successor = analyzer1;
-      analyzer1.Successor = reinitializationProbabilityOperator;
+      analyzer1.Successor = defaultRuleOperator;
+      defaultRuleOperator.Successor = reinitializationProbabilityOperator;
       reinitializationProbabilityOperator.Successor = selector;
       selector.Successor = subScopesProcessor1;
@@ -263,5 +272,5 @@
       comparator.Successor = analyzer2;
       analyzer2.Successor = conditionalBranch;
-      conditionalBranch.FalseBranch = reinitializationProbabilityOperator;
+      conditionalBranch.FalseBranch = defaultRuleOperator;
       conditionalBranch.TrueBranch = null;
       conditionalBranch.Successor = null;
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorClassificationProblemData.cs	(revision 9352)
@@ -28,5 +28,5 @@
     IFixedValueParameter<IntValue> LengthParameter { get; }
     IFixedValueParameter<IntValue> ActionLengthParameter { get; }
-    IFixedValueParameter<IntMatrix> BoundsParameter { get; }
+    IValueParameter<IntMatrix> BoundsParameter { get; }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IAction.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IAction.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IAction.cs	(revision 9352)
@@ -22,11 +22,13 @@
 using System.Collections.Generic;
 using HeuristicLab.Core;
+using HeuristicLab.Optimization.Operators.LCS;
 
 namespace HeuristicLab.Encodings.DecisionList {
-  public interface IAction : IItem {
+  public interface IAction : IGAssistNiche {
     string VariableName { get; }
 
     int Possibilities { get; }
     void Randomize(IRandom random);
+    void Randomize(IRandom random, IEnumerable<IAction> except);
 
     bool Match(IAction action);
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IntAction.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IntAction.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IntAction.cs	(revision 9352)
@@ -25,4 +25,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Optimization.Operators.LCS;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -31,4 +32,11 @@
   [Item("IntAction", "")]
   public class IntAction : Item, IAction<int> {
+
+    public static IEqualityComparer<IGAssistNiche> Comparer {
+      get { return new DecisionListNicheComparer(); }
+    }
+    IEqualityComparer<IGAssistNiche> IGAssistNiche.Comparer {
+      get { return Comparer; }
+    }
 
     [Storable]
@@ -88,4 +96,19 @@
     }
 
+    public void Randomize(IRandom random, IEnumerable<IAction> except) {
+      if (except.Count() == 0) {
+        Randomize(random);
+        return;
+      }
+      try {
+        var exceptInt = except.Cast<IntAction>().Select(x => x.currentAction);
+        var newPossibleFeatures = possibleFeatures.Except(exceptInt);
+        currentAction = newPossibleFeatures.ElementAt(random.Next(0, newPossibleFeatures.Count()));
+      }
+      catch (InvalidCastException) {
+        throw new InvalidCastException("Actions have to be of type IntAction");
+      }
+    }
+
     public bool Match(IAction action) {
       var targetCast = action as IntAction;
@@ -103,5 +126,19 @@
 
     public override string ToString() {
-      return currentAction.ToString();
+      return variableName + ": " + currentAction.ToString();
+    }
+
+    public bool SameNiche(IGAssistNiche niche) {
+      return Match(niche as IAction);
+    }
+
+    public int GetNicheHashCode() {
+      int result = 1;
+      result = 37 * result + currentAction;
+      result = 37 * result + variableName.GetHashCode();
+      foreach (var feature in possibleFeatures) {
+        result = 37 * result + feature;
+      }
+      return result;
     }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/StringAction.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/StringAction.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/StringAction.cs	(revision 9352)
@@ -25,4 +25,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Optimization.Operators.LCS;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -31,4 +32,12 @@
   [Item("StringAction", "")]
   public class StringAction : Item, IAction<string> {
+
+    public static IEqualityComparer<IGAssistNiche> Comparer {
+      get { return new DecisionListNicheComparer(); }
+    }
+
+    IEqualityComparer<IGAssistNiche> IGAssistNiche.Comparer {
+      get { return Comparer; }
+    }
 
     [Storable]
@@ -92,4 +101,19 @@
     }
 
+    public void Randomize(IRandom random, IEnumerable<IAction> except) {
+      if (except.Count() == 0) {
+        Randomize(random);
+        return;
+      }
+      try {
+        var exceptInt = except.Cast<StringAction>().Select(x => x.CurrentActionIndex);
+        var newPossibleFeatures = Enumerable.Range(0, possibleFeatures.Count()).Except(exceptInt);
+        currentActionIndex = newPossibleFeatures.ElementAt(random.Next(0, newPossibleFeatures.Count()));
+      }
+      catch (InvalidCastException) {
+        throw new InvalidCastException("Actions have to be of type IntAction");
+      }
+    }
+
     public bool Match(IAction action) {
       var targetCast = action as StringAction;
@@ -107,5 +131,19 @@
 
     public override string ToString() {
-      return CurrentAction;
+      return variableName + ": " + CurrentAction;
+    }
+
+    public bool SameNiche(IGAssistNiche niche) {
+      return Match(niche as IAction);
+    }
+
+    public int GetNicheHashCode() {
+      int result = 1;
+      result = 37 * result + currentActionIndex;
+      result = 37 * result + variableName.GetHashCode();
+      foreach (var feature in possibleFeatures) {
+        result = 37 * result + feature.GetHashCode();
+      }
+      return result;
     }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Analyzer/BestTrainingDecisionListAnalyzer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Analyzer/BestTrainingDecisionListAnalyzer.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Analyzer/BestTrainingDecisionListAnalyzer.cs	(revision 9352)
@@ -0,0 +1,104 @@
+﻿#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 System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators.LCS;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Encodings.DecisionList {
+  [Item("BestTrainingDecisionListAnalyzer", "Description missing")]
+  [StorableClass]
+  public class BestTrainingDecisionListAnalyzer : SingleSuccessorOperator, IAnalyzer {
+    private const string BestTrainingSolutionName = "Best Training Solution";
+    private const string TrainingBestSolutionQualityParameterName = "Best training solution quality";
+
+    public bool EnabledByDefault {
+      get { return true; }
+    }
+
+    #region Parameter Properties
+    public ValueLookupParameter<ResultCollection> ResultsParameter {
+      get { return (ValueLookupParameter<ResultCollection>)Parameters["Results"]; }
+    }
+    public ScopeTreeLookupParameter<IGAssistIndividual> IndividualParameter {
+      get { return (ScopeTreeLookupParameter<IGAssistIndividual>)Parameters["Individual"]; }
+    }
+    public LookupParameter<IDecisionListClassificationProblemData> ProblemDataParameter {
+      get { return (LookupParameter<IDecisionListClassificationProblemData>)Parameters["ProblemData"]; }
+    }
+    public IScopeTreeLookupParameter<DoubleValue> QualityParameter {
+      get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public ILookupParameter<BoolValue> MaximizationParameter {
+      get { return (ILookupParameter<BoolValue>)Parameters["Maximization"]; }
+    }
+    #endregion
+
+    public ResultCollection Results { get { return ResultsParameter.ActualValue; } }
+
+    [StorableConstructor]
+    protected BestTrainingDecisionListAnalyzer(bool deserializing) : base(deserializing) { }
+    protected BestTrainingDecisionListAnalyzer(BestTrainingDecisionListAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public BestTrainingDecisionListAnalyzer()
+      : base() {
+      Parameters.Add(new ScopeTreeLookupParameter<IGAssistIndividual>("Individual", ""));
+      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the solution should be stored."));
+      Parameters.Add(new LookupParameter<IDecisionListClassificationProblemData>("ProblemData", ""));
+      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The qualities of the trees that should be analyzed."));
+      Parameters.Add(new LookupParameter<BoolValue>("Maximization", "The direction of optimization."));
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestTrainingDecisionListAnalyzer(this, cloner);
+    }
+
+    public override IOperation Apply() {
+      ItemArray<IGAssistIndividual> individuals = IndividualParameter.ActualValue;
+      ItemArray<DoubleValue> qualities = QualityParameter.ActualValue;
+      bool maximization = MaximizationParameter.ActualValue.Value;
+      IDecisionListClassificationProblemData problemData = ProblemDataParameter.ActualValue;
+
+      DoubleValue value = maximization ? qualities.MaxItems(x => x.Value).First() : qualities.MinItems(x => x.Value).First();
+
+      int index = qualities.IndexOf(value);
+
+      if (!Results.ContainsKey(BestTrainingSolutionName)) {
+        Results.Add(new Result(TrainingBestSolutionQualityParameterName, new DoubleValue(value.Value)));
+        Results.Add(new Result(BestTrainingSolutionName, new DecisionListSolution((DecisionList)individuals[index], problemData)));
+      } else {
+        double oldBestQuality = ((DoubleValue)Results[TrainingBestSolutionQualityParameterName].Value).Value;
+        if (maximization && oldBestQuality < value.Value || !maximization && oldBestQuality > value.Value) {
+          Results[BestTrainingSolutionName].Value = new DecisionListSolution((DecisionList)individuals[index], problemData);
+          Results[TrainingBestSolutionQualityParameterName].Value = value;
+        }
+      }
+
+      return base.Apply();
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Creators/UniformRandomDecisionListCreator.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Creators/UniformRandomDecisionListCreator.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Creators/UniformRandomDecisionListCreator.cs	(revision 9352)
@@ -51,5 +51,5 @@
       }
 
-      return new DecisionList(rules); //, DefaultActionParameter.ActualValue);
+      return new DecisionList(rules);
     }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Crossover/SinglePointCrossover.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Crossover/SinglePointCrossover.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Crossover/SinglePointCrossover.cs	(revision 9352)
@@ -48,4 +48,6 @@
 
     public static DecisionList Apply(IRandom random, DecisionList parent1, DecisionList parent2) {
+      if (!parent1.DefaultAction.Match(parent2.DefaultAction)) { throw new ArgumentException("Default action of parents have to match!"); }
+
       int rulesP1 = random.Next(0, parent1.Rules.Count());
       int rulesP2 = random.Next(0, parent2.Rules.Count());
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionList.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionList.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionList.cs	(revision 9352)
@@ -109,4 +109,23 @@
     #region IGAssistIndividual Members
 
+    public IGAssistNiche Niche {
+      get { return defaultAction; }
+    }
+
+    public void SetNiche(IRandom random, IGAssistNiche niche) {
+      var action = niche as IAction;
+      if (action == null) {
+        throw new ArgumentException("Niche has to be an action");
+      }
+      if (Niche != null) {
+        throw new ArgumentException("Niche has already been set. It cannot be set again.");
+      }
+      defaultAction = action;
+      var except = new List<IAction>() { action };
+      foreach (var rule in rules.Where(x => x.Action.SameNiche(niche))) {
+        rule.Action.Randomize(random, except);
+      }
+    }
+
     public void ApplySplit(IRandom random, double probability) {
       foreach (var rule in rules) {
@@ -126,5 +145,4 @@
       }
     }
-
     #endregion
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListCreator.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListCreator.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListCreator.cs	(revision 9352)
@@ -52,7 +52,4 @@
       get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
     }
-    public IValueLookupParameter<IAction> DefaultActionParameter {
-      get { return (IValueLookupParameter<IAction>)Parameters["DefaultAction"]; }
-    }
     #endregion
 
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListNicheComparer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListNicheComparer.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/DecisionListNicheComparer.cs	(revision 9352)
@@ -0,0 +1,50 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Operators.LCS;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Encodings.DecisionList {
+  [StorableClass]
+  [Item("DecisionListNicheComparer", "")]
+  public class DecisionListNicheComparer : Item, IGAssistNicheEqualityComparer {
+
+    [StorableConstructor]
+    protected DecisionListNicheComparer(bool deserializing) : base(deserializing) { }
+    protected DecisionListNicheComparer(DecisionListNicheComparer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DecisionListNicheComparer(this, cloner);
+    }
+    public DecisionListNicheComparer() : base() { }
+
+    public bool Equals(IGAssistNiche x, IGAssistNiche y) {
+      return x.SameNiche(y);
+    }
+
+    public int GetHashCode(IGAssistNiche obj) {
+      return obj.GetNicheHashCode();
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/HeuristicLab.Encodings.DecisionList-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/HeuristicLab.Encodings.DecisionList-3.3.csproj	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/HeuristicLab.Encodings.DecisionList-3.3.csproj	(revision 9352)
@@ -92,4 +92,5 @@
     <Compile Include="Action\IAction.cs" />
     <Compile Include="Action\IntAction.cs" />
+    <Compile Include="Analyzer\BestTrainingDecisionListAnalyzer.cs" />
     <Compile Include="Creators\UniformRandomDecisionListCreator.cs" />
     <Compile Include="Crossover\SinglePointCrossover.cs" />
@@ -97,4 +98,5 @@
     <Compile Include="DecisionListCrossover.cs" />
     <Compile Include="DecisionListManipulator.cs" />
+    <Compile Include="DecisionListNicheComparer.cs" />
     <Compile Include="DecisionListSolution.cs" />
     <Compile Include="Evaluator\DecisionListEvaluator.cs" />
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListClassificationProblemData.cs	(revision 9352)
@@ -24,8 +24,9 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Optimization.Operators.LCS;
 using HeuristicLab.Problems.DataAnalysis;
 
 namespace HeuristicLab.Encodings.DecisionList {
-  public interface IDecisionListClassificationProblemData : INamedItem {
+  public interface IDecisionListClassificationProblemData : IGAssistNichesProblemData {
     Dataset Dataset { get; }
     ICheckedItemList<StringValue> ConditionVariables { get; }
@@ -45,5 +46,5 @@
     int Classes { get; }
 
-    IFixedValueParameter<Rule> SampleRuleParameter { get; }
+    IValueParameter<Rule> SampleRuleParameter { get; }
 
     DecisionListInput FetchInput(int row);
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListCreator.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListCreator.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Interfaces/IDecisionListCreator.cs	(revision 9352)
@@ -31,5 +31,4 @@
     IValueLookupParameter<IntValue> InitialNumberOfRulesParameter { get; }
     IValueLookupParameter<PercentValue> OneProbabilityParameter { get; }
-    IValueLookupParameter<IAction> DefaultActionParameter { get; }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Properties/AssemblyInfo.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Properties/AssemblyInfo.cs	(revision 9352)
@@ -21,4 +21,5 @@
 
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
@@ -54,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.7.9204")]
+[assembly: AssemblyFileVersion("3.3.7.9342")]
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Rule.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Rule.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Rule.cs	(revision 9352)
@@ -73,5 +73,5 @@
         sb.Append(variable.Value + "|");
       }
-      sb.Append(Action);
+      sb.Append("|" + Action);
       return sb.ToString();
     }
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Variable/Variable.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Variable/Variable.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Variable/Variable.cs	(revision 9352)
@@ -76,4 +76,5 @@
     public override string ToString() {
       StringBuilder sb = new StringBuilder();
+      sb.Append(variableName + ": ");
       foreach (var attr in attributes) {
         if (attr) {
Index: /branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Interfaces/IVariableVectorClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Interfaces/IVariableVectorClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Interfaces/IVariableVectorClassificationProblemData.cs	(revision 9352)
@@ -26,5 +26,5 @@
 namespace HeuristicLab.Encodings.VariableVector {
   public interface IVariableVectorClassificationProblemData : IConditionActionProblemData {
-    IFixedValueParameter<VariableVector> SampleVariableVectorParameter { get; }
+    IValueParameter<VariableVector> SampleVariableVectorParameter { get; }
     IFixedValueParameter<PercentValue> SpreadPercentageParameter { get; }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/AutoDefaultRule.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/AutoDefaultRule.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/AutoDefaultRule.cs	(revision 9352)
@@ -44,7 +44,4 @@
       get { return (ILookupParameter<ItemArray<DoubleValue>>)Parameters["Quality"]; }
     }
-    public ILookupParameter<ItemArray<IGAssistIndividual>> IndividualParameter {
-      get { return (ILookupParameter<ItemArray<IGAssistIndividual>>)Parameters["Individual"]; }
-    }
     public IValueLookupParameter<IntValue> AccuraciesCountParameter {
       get { return (IValueLookupParameter<IntValue>)Parameters["AccuraciesCount"]; }
@@ -70,9 +67,8 @@
       Parameters.Add(new ValueLookupParameter<ItemDictionary<IGAssistNiche, ItemList<DoubleValue>>>("AverageAccuracies"));
       Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality"));
-      Parameters.Add(new ScopeTreeLookupParameter<IGAssistIndividual>("Individual"));
       Parameters.Add(new LookupParameter<IRandom>("Random"));
-      Parameters.Add(new ValueLookupParameter<IntValue>("AccuraciesCount"));
+      Parameters.Add(new ValueLookupParameter<IntValue>("AccuraciesCount", new IntValue(15)));
       Parameters.Add(new ValueLookupParameter<IGAssistNicheEqualityComparer>("NicheComparer"));
-      Parameters.Add(new ValueLookupParameter<DoubleValue>("NicheStandardDeviation"));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("NicheStandardDeviation", new DoubleValue(0.005)));
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -82,13 +78,26 @@
     public override IOperation Apply() {
       if (NichingParameter.ActualValue == null) {
+        IList<IGAssistNiche> niches = GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches().ToList();
         NichingParameter.ActualValue = new BoolValue(true);
-        NichesParameter.ActualValue = new IntValue(PossibleDefaultClassesParameter.ActualValue.Count);
-        AverageAccuraciesParameter.ActualValue = new ItemDictionary<IGAssistNiche, ItemList<DoubleValue>>(NicheComparerParameter.ActualValue);
-        foreach (var niche in PossibleDefaultClassesParameter.ActualValue) {
+        NichesParameter.ActualValue = new IntValue(niches.Count);
+        AverageAccuraciesParameter.ActualValue = new ItemDictionary<IGAssistNiche, ItemList<DoubleValue>>(NicheComparerParameter.ActualValue as IEqualityComparer<IGAssistNiche>);
+        foreach (var niche in GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches()) {
           AverageAccuracies.Add(niche, new ItemList<DoubleValue>(AccuraciesCount));
         }
+
+        int i = 0;
+        foreach (var individual in IndividualParameter.ActualValue) {
+          individual.SetNiche(RandomParameter.ActualValue, niches[i]);
+          i++;
+          i %= niches.Count;
+        }
+
+        OperationCollection next = new OperationCollection();
+        next.Add(EvaluateSubScopes());
+        next.Add(base.Apply());
+        return next;
       } else {
         var nicheFitness = new Dictionary<IGAssistNiche, double>(NicheComparerParameter.ActualValue);
-        foreach (var niche in PossibleDefaultClassesParameter.ActualValue) {
+        foreach (var niche in GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches()) {
           nicheFitness[niche] = 0.0;
           while (AverageAccuracies[niche].Count >= AccuraciesCount) {
@@ -105,9 +114,9 @@
         }
 
-        foreach (var niche in PossibleDefaultClassesParameter.ActualValue) {
+        foreach (var niche in GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches()) {
           AverageAccuracies[niche].Insert(0, new DoubleValue(nicheFitness[niche]));
         }
 
-        var averages = new List<double>(PossibleDefaultClassesParameter.ActualValue.Count);
+        var averages = new List<double>(GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches().Count());
         if (AverageAccuracies.Values.First().Count >= AccuraciesCount) {
           foreach (var averageAccuracy in AverageAccuracies.Values) {
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/DefaultRuleOperator.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/DefaultRuleOperator.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/DefaultRuleOperator.cs	(revision 9352)
@@ -42,6 +42,12 @@
       get { return (IValueLookupParameter<IGAssistNiche>)Parameters["DefaultClass"]; }
     }
-    public ILookupParameter<ItemCollection<IGAssistNiche>> PossibleDefaultClassesParameter {
-      get { return (ILookupParameter<ItemCollection<IGAssistNiche>>)Parameters["PossibleDefaultClasses"]; }
+    public ILookupParameter<IGAssistNichesProblemData> GAssistNichesProblemDataParameter {
+      get { return (ILookupParameter<IGAssistNichesProblemData>)Parameters["GAssistNichesProblemData"]; }
+    }
+    public ILookupParameter<ItemArray<IGAssistIndividual>> IndividualParameter {
+      get { return (ILookupParameter<ItemArray<IGAssistIndividual>>)Parameters["Individual"]; }
+    }
+    public IValueLookupParameter<IOperator> EvaluatorParameter {
+      get { return (IValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
     }
     #endregion
@@ -57,5 +63,18 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("Niches"));
       Parameters.Add(new ValueLookupParameter<IGAssistNiche>("DefaultClass"));
-      Parameters.Add(new LookupParameter<ItemCollection<IGAssistNiche>>("PossibleDefaultClasses"));
+      Parameters.Add(new LookupParameter<IGAssistNichesProblemData>("GAssistNichesProblemData"));
+      Parameters.Add(new ScopeTreeLookupParameter<IGAssistIndividual>("Individual"));
+      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator"));
+    }
+
+    protected OperationCollection EvaluateSubScopes() {
+      IOperator evaluator = EvaluatorParameter.ActualValue;
+      OperationCollection evaluation = new OperationCollection();
+      if (evaluator != null) {
+        foreach (var subScope in ExecutionContext.Scope.SubScopes) {
+          evaluation.Add(ExecutionContext.CreateOperation(evaluator, subScope));
+        }
+      }
+      return evaluation;
     }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/IDefaultRuleOperator.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/IDefaultRuleOperator.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/IDefaultRuleOperator.cs	(revision 9352)
@@ -26,7 +26,9 @@
   public interface IDefaultRuleOperator : IOperator {
     IValueLookupParameter<BoolValue> NichingParameter { get; }
-    ILookupParameter<IntValue> NichesParameter { get; }
-    IValueLookupParameter<Item> DefaultClassParameter { get; }
-    ILookupParameter<ItemCollection<IGAssistNiche>> PossibleDefaultClassesParameter { get; }
+    IValueLookupParameter<IntValue> NichesParameter { get; }
+    IValueLookupParameter<IGAssistNiche> DefaultClassParameter { get; }
+    ILookupParameter<IGAssistNichesProblemData> GAssistNichesProblemDataParameter { get; }
+    ILookupParameter<ItemArray<IGAssistIndividual>> IndividualParameter { get; }
+    IValueLookupParameter<IOperator> EvaluatorParameter { get; }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MajorDefaultRule.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MajorDefaultRule.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MajorDefaultRule.cs	(revision 9352)
@@ -77,5 +77,15 @@
           index = indices[0];
         }
-        DefaultClassParameter.ActualValue = PossibleDefaultClassesParameter.ActualValue.ElementAt(index);
+        IGAssistNiche niche = GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches().ElementAt(index);
+        DefaultClassParameter.ActualValue = niche;
+
+        foreach (var individual in IndividualParameter.ActualValue) {
+          individual.SetNiche(RandomParameter.ActualValue, niche);
+        }
+
+        OperationCollection next = new OperationCollection();
+        next.Add(EvaluateSubScopes());
+        next.Add(base.Apply());
+        return next;
       }
       return base.Apply();
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MinorDefaultRule.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MinorDefaultRule.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/DefaultRule/MinorDefaultRule.cs	(revision 9352)
@@ -77,5 +77,15 @@
           index = indices[0];
         }
-        DefaultClassParameter.ActualValue = PossibleDefaultClassesParameter.ActualValue.ElementAt(index);
+        IGAssistNiche niche = GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches().ElementAt(index);
+        DefaultClassParameter.ActualValue = niche;
+
+        foreach (var individual in IndividualParameter.ActualValue) {
+          individual.SetNiche(RandomParameter.ActualValue, niche);
+        }
+
+        OperationCollection next = new OperationCollection();
+        next.Add(EvaluateSubScopes());
+        next.Add(base.Apply());
+        return next;
       }
       return base.Apply();
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistNichesProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistNichesProblemData.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistNichesProblemData.cs	(revision 9352)
@@ -0,0 +1,29 @@
+﻿#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 System.Collections.Generic;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Optimization.Operators.LCS {
+  public interface IGAssistNichesProblemData : INamedItem {
+    IEnumerable<IGAssistNiche> GetPossibleNiches();
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistProblem.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistProblem.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/IGAssistProblem.cs	(revision 9352)
@@ -0,0 +1,28 @@
+﻿#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.Core;
+namespace HeuristicLab.Optimization.Operators.LCS {
+  public interface IGAssistProblem : ISingleObjectiveHeuristicOptimizationProblem {
+    IParameter ProblemDataParameter { get; }
+    string NichingParameterName { get; }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistIndividual.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistIndividual.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistIndividual.cs	(revision 9352)
@@ -26,4 +26,5 @@
   public interface IGAssistIndividual : IItem {
     IGAssistNiche Niche { get; }
+    void SetNiche(IRandom random, IGAssistNiche niche);
     void ApplySplit(IRandom random, double probability);
     void ApplyMerge(IRandom random, double probability);
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistNiche.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistNiche.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/GAssist/Interfaces/IGAssistNiche.cs	(revision 9352)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Collections.Generic;
 using HeuristicLab.Core;
 
@@ -25,4 +26,6 @@
   public interface IGAssistNiche : IItem {
     bool SameNiche(IGAssistNiche niche);
+    int GetNicheHashCode();
+    IEqualityComparer<IGAssistNiche> Comparer { get; }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/HeuristicLab.Optimization.Operators.LCS-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/HeuristicLab.Optimization.Operators.LCS-3.3.csproj	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/HeuristicLab.Optimization.Operators.LCS-3.3.csproj	(revision 9352)
@@ -46,8 +46,4 @@
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
     </Reference>
-    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
-    </Reference>
     <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -84,4 +80,5 @@
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -92,4 +89,5 @@
   <ItemGroup>
     <Compile Include="DefaultRule\AutoDefaultRule.cs" />
+    <Compile Include="GAssist\IGAssistNichesProblemData.cs" />
     <Compile Include="DefaultRule\MajorDefaultRule.cs" />
     <Compile Include="DefaultRule\DefaultRuleOperator.cs" />
@@ -99,4 +97,5 @@
     <Compile Include="Discretizer\UniformWidthDiscretizer.cs" />
     <Compile Include="Discretizer\IDiscretizer.cs" />
+    <Compile Include="GAssist\IGAssistProblem.cs" />
     <Compile Include="GAssist\Interfaces\IGAssistIndividual.cs" />
     <Compile Include="GAssist\Interfaces\IGAssistIndividualCreator.cs" />
@@ -110,4 +109,5 @@
     <Compile Include="GAssist\SpecialStage\SplitOperator.cs" />
     <Compile Include="Plugin.cs" />
+    <Compile Include="Selection\INichingSingleObjectiveSelector.cs" />
     <Compile Include="Selection\NichingTournamentSelector.cs" />
     <Compile Include="Selection\PreservingRightReducer.cs" />
@@ -119,5 +119,10 @@
     <None Include="Plugin.cs.frame" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{c36bd924-a541-4a00-afa8-41701378ddc5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/INichingSingleObjectiveSelector.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/INichingSingleObjectiveSelector.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/INichingSingleObjectiveSelector.cs	(revision 9352)
@@ -0,0 +1,32 @@
+﻿#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.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Optimization.Operators.LCS {
+  public interface INichingSingleObjectiveSelector : ISingleObjectiveSelector {
+    ILookupParameter<IGAssistNichesProblemData> GAssistNichesProblemDataParameter { get; }
+    ILookupParameter<BoolValue> NichingParameter { get; }
+    IValueLookupParameter<IntValue> ParentsPerChildParameter { get; }
+    ILookupParameter<ItemArray<IGAssistIndividual>> IndividualParameter { get; }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/NichingTournamentSelector.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/NichingTournamentSelector.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Optimization.Operators.LCS/3.3/Selection/NichingTournamentSelector.cs	(revision 9352)
@@ -30,8 +30,8 @@
 using HeuristicLab.Selection;
 
-namespace HeuristicLab.Optimization.Operators.LCS.Selection {
+namespace HeuristicLab.Optimization.Operators.LCS {
   [Item("NichingTournamentSelector", "Description missing")]
   [StorableClass]
-  public class NichingTournamentSelector : StochasticSingleObjectiveSelector, ISingleObjectiveSelector {
+  public class NichingTournamentSelector : StochasticSingleObjectiveSelector, INichingSingleObjectiveSelector {
 
     #region Parameter Properties
@@ -39,6 +39,15 @@
       get { return (ValueLookupParameter<IntValue>)Parameters["GroupSize"]; }
     }
-    public LookupParameter<IntValue> NichesParameter {
-      get { return (LookupParameter<IntValue>)Parameters["Niches"]; }
+    public ILookupParameter<IGAssistNichesProblemData> GAssistNichesProblemDataParameter {
+      get { return (LookupParameter<IGAssistNichesProblemData>)Parameters["GAssistNichesProblemData"]; }
+    }
+    public ILookupParameter<BoolValue> NichingParameter {
+      get { return (LookupParameter<BoolValue>)Parameters["Niching"]; }
+    }
+    public IValueLookupParameter<IntValue> ParentsPerChildParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["ParentsPerChild"]; }
+    }
+    public ILookupParameter<ItemArray<IGAssistIndividual>> IndividualParameter {
+      get { return (ILookupParameter<ItemArray<IGAssistIndividual>>)Parameters["Individual"]; }
     }
     #endregion
@@ -52,5 +61,8 @@
       : base() {
       Parameters.Add(new ValueLookupParameter<IntValue>("GroupSize", "The size of the tournament group.", new IntValue(2)));
-      Parameters.Add(new LookupParameter<IntValue>("Niches", ""));
+      Parameters.Add(new LookupParameter<IGAssistNichesProblemData>("GAssistNichesProblemData", ""));
+      Parameters.Add(new LookupParameter<BoolValue>("Niching", ""));
+      Parameters.Add(new ValueLookupParameter<IntValue>("ParentsPerChild", ""));
+      Parameters.Add(new ScopeTreeLookupParameter<IGAssistIndividual>("Individual", ""));
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -64,33 +76,86 @@
       bool maximization = MaximizationParameter.ActualValue.Value;
       List<double> qualities = QualityParameter.ActualValue.Where(x => IsValidQuality(x.Value)).Select(x => x.Value).ToList();
+      List<IGAssistIndividual> individuals = IndividualParameter.ActualValue.ToList();
       int groupSize = GroupSizeParameter.ActualValue.Value;
       IScope[] selected = new IScope[count];
+      bool doNiching = NichingParameter.ActualValue.Value;
 
       //check if list with indexes is as long as the original scope list
       //otherwise invalid quality values were filtered
-      if (qualities.Count != scopes.Count) {
+      if (qualities.Count != scopes.Count && individuals.Count != scopes.Count) {
         throw new ArgumentException("The scopes contain invalid quality values (either infinity or double.NaN) on which the selector cannot operate.");
       }
 
-      for (int i = 0; i < count; i++) {
-        int best = random.Next(scopes.Count);
-        int index;
-        for (int j = 1; j < groupSize; j++) {
-          index = random.Next(scopes.Count);
-          if (((maximization) && (qualities[index] > qualities[best])) ||
-              ((!maximization) && (qualities[index] < qualities[best]))) {
-            best = index;
+      int parentsPerChild = ParentsPerChildParameter.ActualValue.Value;
+      var possibleNiches = GAssistNichesProblemDataParameter.ActualValue.GetPossibleNiches().ToList();
+      var selectPerNiche = new Dictionary<IGAssistNiche, int>(possibleNiches.First().Comparer);
+
+      var nicheScope = new Dictionary<IGAssistNiche, List<int>>(possibleNiches.First().Comparer);
+      foreach (var niche in possibleNiches) {
+        nicheScope.Add(niche, new List<int>());
+        selectPerNiche.Add(niche, count / possibleNiches.Count);
+      }
+
+      for (int i = 0; i < individuals.Count; i++) {
+        nicheScope[individuals[i].Niche].Add(i);
+      }
+
+      int curCount = 0;
+      while (curCount < count) {
+        IGAssistNiche niche = null;
+        int best = -1;
+        if (doNiching) {
+          niche = GetNiche(random, selectPerNiche, possibleNiches);
+        } else {
+          best = random.Next(scopes.Count);
+        }
+        for (int i = 0; i < parentsPerChild; i++) {
+          int index;
+          if (doNiching) {
+            best = nicheScope[niche][random.Next(nicheScope[niche].Count)];
           }
-        }
+          for (int j = 1; j < groupSize; j++) {
+            if (niche != null) {
+              index = nicheScope[niche][random.Next(nicheScope[niche].Count)];
+            } else {
+              index = random.Next(scopes.Count);
+            }
+            if (((maximization) && (qualities[index] > qualities[best])) ||
+                ((!maximization) && (qualities[index] < qualities[best]))) {
+              best = index;
+            }
+          }
 
-        if (copy)
-          selected[i] = (IScope)scopes[best].Clone();
-        else {
-          selected[i] = scopes[best];
-          scopes.RemoveAt(best);
-          qualities.RemoveAt(best);
+          niche = individuals[best].Niche;
+
+          if (copy)
+            selected[curCount] = (IScope)scopes[best].Clone();
+          else {
+            selected[curCount] = scopes[best];
+            scopes.RemoveAt(best);
+            qualities.RemoveAt(best);
+          }
+          selectPerNiche[niche]--;
+          curCount++;
         }
       }
+
       return selected;
+    }
+
+    private IGAssistNiche GetNiche(IRandom random, Dictionary<IGAssistNiche, int> nicheScope, List<IGAssistNiche> possibleNiches) {
+      int sum = nicheScope.Values.Sum();
+      if (sum <= 0) { return possibleNiches[random.Next(possibleNiches.Count)]; }
+      int pos = random.Next(sum);
+      int total = 0;
+      IGAssistNiche niche = nicheScope.Keys.First();
+      foreach (var item in nicheScope) {
+        total += item.Value;
+        niche = item.Key;
+        if (pos < total) {
+          return niche;
+        }
+      }
+      throw new ArgumentException("error in code");
     }
   }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/CombinedIntegerVectorClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/CombinedIntegerVectorClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/CombinedIntegerVectorClassificationProblemData.cs	(revision 9352)
@@ -45,6 +45,6 @@
       get { return (IFixedValueParameter<IntValue>)Parameters["ActionLength"]; }
     }
-    public IFixedValueParameter<IntMatrix> BoundsParameter {
-      get { return (IFixedValueParameter<IntMatrix>)Parameters["Bounds"]; }
+    public IValueParameter<IntMatrix> BoundsParameter {
+      get { return (IValueParameter<IntMatrix>)Parameters["Bounds"]; }
     }
     #endregion
@@ -77,5 +77,5 @@
       Parameters.Add(new FixedValueParameter<IntValue>("Length", "", new IntValue(allowedConditionVariables.Count() + allowedActionVariables.Count())));
       Parameters.Add(new FixedValueParameter<IntValue>("ActionLength", "", new IntValue(allowedActionVariables.Count())));
-      Parameters.Add(new FixedValueParameter<IntMatrix>("Bounds", "", GetBoundsMatrix(dataset, allowedConditionVariables, allowedActionVariables)));
+      Parameters.Add(new ValueParameter<IntMatrix>("Bounds", "", GetBoundsMatrix(dataset, allowedConditionVariables, allowedActionVariables)));
     }
 
@@ -126,4 +126,10 @@
       return (FetchInput(rowNumber) as IClassifier).Action;
     }
+
+    protected override void ActionConditionVariablesChanged() {
+      ActionLength.Value = AllowedActionVariables.Count();
+      Length.Value = AllowedConditionVariables.Count() + ActionLength.Value;
+      BoundsParameter.Value = GetBoundsMatrix(Dataset, AllowedConditionVariables, AllowedActionVariables);
+    }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/HeuristicLab.Problems.CombinedIntegerVectorClassification-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/HeuristicLab.Problems.CombinedIntegerVectorClassification-3.3.csproj	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.CombinedIntegerVectorClassification/3.3/HeuristicLab.Problems.CombinedIntegerVectorClassification-3.3.csproj	(revision 9352)
@@ -125,4 +125,13 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+  </PropertyGroup>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/ConditionActionClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/ConditionActionClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/ConditionActionClassificationProblemData.cs	(revision 9352)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Collections;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -109,8 +110,13 @@
     #endregion
 
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterParameterEvents();
+    }
     [StorableConstructor]
     protected ConditionActionClassificationProblemData(bool deserializing) : base(deserializing) { }
     protected ConditionActionClassificationProblemData(ConditionActionClassificationProblemData original, Cloner cloner)
       : base(original, cloner) {
+      RegisterParameterEvents();
     }
 
@@ -144,4 +150,6 @@
 
       ((ValueParameter<Dataset>)DatasetParameter).ReactOnValueToStringChangedAndValueItemImageChanged = false;
+
+      RegisterParameterEvents();
     }
 
@@ -167,4 +175,27 @@
 
     protected IDictionary<int, IInput> fetchInputCache = new Dictionary<int, IInput>();
+
+    #region events
+    private void RegisterParameterEvents() {
+      ConditionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+      ConditionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+      ActionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+      ActionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+    }
+    private void DeregisterParameterEvents() {
+      ActionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+      ActionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+      ConditionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+      ConditionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+    }
+    private void Value_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> e) {
+      ActionConditionVariablesChanged();
+    }
+    private void VariablesChanged(object sender, EventArgs e) {
+      ActionConditionVariablesChanged();
+    }
+
+    protected abstract void ActionConditionVariablesChanged();
+    #endregion
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblem.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblem.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblem.cs	(revision 9352)
@@ -27,8 +27,11 @@
 using HeuristicLab.Encodings.DecisionList.Interfaces;
 using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators.LCS;
+using HeuristicLab.Optimization.Operators.LCS.DefaultRule;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Problems.DecisionListClassification {
@@ -36,5 +39,7 @@
   [StorableClass]
   [Creatable("Problems")]
-  public class DecisionListClassificationProblem : HeuristicOptimizationProblem<IDecisionListEvaluator, IDecisionListCreator>, IDecisionListClassificationProblem {
+  public class DecisionListClassificationProblem : HeuristicOptimizationProblem<IDecisionListEvaluator, IDecisionListCreator>,
+                                                   IDecisionListClassificationProblem, IGAssistProblem,
+                                                   IProblemInstanceConsumer<DecisionListClassificationProblemData> {
 
     #region parameter properties
@@ -105,5 +110,5 @@
       : base(decisionlistEvaluator, decisionListCreator) {
       Parameters.Add(new ValueParameter<IDecisionListClassificationProblemData>("ProblemData", "", problemData));
-      Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "", new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "", new BoolValue(false)));
       Parameters.Add(new FixedValueParameter<DoubleValue>("BestKnownQuality", "", new DoubleValue(0.5)));
       Parameters.Add(new FixedValueParameter<IntValue>("SizePenaltyMinRules", "", new IntValue(4)));
@@ -116,6 +121,4 @@
       // do differently
       ((MDLEvaluator)Evaluator).MDLCalculatorParameter.Value = new MDLCalculator(ActivationIterationParameter.Value.Value, InitialTheoryLengthRatioParameter.Value.Value, WeightRelaxFactorParameter.Value.Value);
-      // do differently
-      decisionListCreator.DefaultActionParameter.Value = problemData.FetchAction(0);
 
       InitializeOperators();
@@ -123,4 +126,6 @@
 
     private void InitializeOperators() {
+      foreach (var op in ApplicationManager.Manager.GetInstances<IDefaultRuleOperator>())
+        Operators.Add(op);
       foreach (var op in ApplicationManager.Manager.GetInstances<IDecisionListCrossover>())
         Operators.Add(op);
@@ -129,7 +134,26 @@
 
       ParameterizeOperators();
+
+      BestTrainingDecisionListAnalyzer analyzer = new BestTrainingDecisionListAnalyzer();
+      analyzer.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
+      analyzer.IndividualParameter.ActualName = SolutionCreator.DecisionListParameter.ActualName;
+      analyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
+      analyzer.ResultsParameter.ActualName = "Results";
+      analyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
+      Operators.Add(analyzer);
     }
 
     private void ParameterizeOperators() {
+      var autoDefaultRule = Operators.Where(x => x is AutoDefaultRule).Select(x => x as AutoDefaultRule).First();
+      autoDefaultRule.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
+      autoDefaultRule.GAssistNichesProblemDataParameter.ActualName = ProblemDataParameter.Name;
+      autoDefaultRule.NicheComparerParameter.Value = new DecisionListNicheComparer();
+      foreach (IDefaultRuleOperator op in Operators.OfType<IDefaultRuleOperator>()) {
+        op.IndividualParameter.ActualName = SolutionCreator.DecisionListParameter.ActualName;
+        op.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
+        op.GAssistNichesProblemDataParameter.ActualName = ProblemDataParameter.Name;
+        op.GAssistNichesProblemDataParameter.Hidden = true;
+        op.NichingParameter.ActualName = "Niching";
+      }
       foreach (IDecisionListCrossover op in Operators.OfType<IDecisionListCrossover>()) {
         op.ParentsParameter.ActualName = SolutionCreator.DecisionListParameter.ActualName;
@@ -148,4 +172,18 @@
       return new DecisionListClassificationProblem(this, cloner);
     }
+
+    IParameter IGAssistProblem.ProblemDataParameter {
+      get { return ProblemDataParameter; }
+    }
+
+    public string NichingParameterName {
+      get { return "Niching"; }
+    }
+
+    public void Load(DecisionListClassificationProblemData data) {
+      Name = data.Name;
+      Description = data.Description;
+      ProblemData = data;
+    }
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/DecisionListClassificationProblemData.cs	(revision 9352)
@@ -23,8 +23,10 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Collections;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.DecisionList;
+using HeuristicLab.Optimization.Operators.LCS;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -62,6 +64,6 @@
       get { return (IFixedValueParameter<IntRange>)Parameters["TestPartition"]; }
     }
-    public IFixedValueParameter<Rule> SampleRuleParameter {
-      get { return (IFixedValueParameter<Rule>)Parameters["SampleRule"]; }
+    public IValueParameter<Rule> SampleRuleParameter {
+      get { return (IValueParameter<Rule>)Parameters["SampleRule"]; }
     }
     public IFixedValueParameter<IntValue> MaxIntervalsParameter {
@@ -118,8 +120,13 @@
     #endregion
 
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterParameterEvents();
+    }
     [StorableConstructor]
     protected DecisionListClassificationProblemData(bool deserializing) : base(deserializing) { }
     protected DecisionListClassificationProblemData(DecisionListClassificationProblemData original, Cloner cloner)
       : base(original, cloner) {
+      RegisterParameterEvents();
     }
     public DecisionListClassificationProblemData(Dataset dataset, IEnumerable<string> allowedConditionVariables, string targetVariable) {
@@ -150,7 +157,9 @@
       Parameters.Add(new FixedValueParameter<IntRange>("TestPartition", "", new IntRange(testPartitionStart, testPartitionEnd)));
       Parameters.Add(new FixedValueParameter<IntValue>("MaxIntervals", "", new IntValue(5)));
-      Parameters.Add(new FixedValueParameter<Rule>("SampleRule", "", CreateSampleRule(dataset, conditionVariables.CheckedItems.Select(x => x.Value.Value), target.Value)));
+      Parameters.Add(new ValueParameter<Rule>("SampleRule", "", CreateSampleRule(dataset, conditionVariables.CheckedItems.Select(x => x.Value.Value), target.Value)));
 
       ((ValueParameter<Dataset>)DatasetParameter).ReactOnValueToStringChangedAndValueItemImageChanged = false;
+
+      RegisterParameterEvents();
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -240,5 +249,42 @@
     }
 
+    protected IList<IGAssistNiche> possibleNiches;
+    public IEnumerable<IGAssistNiche> GetPossibleNiches() {
+      if (possibleNiches == null) {
+        possibleNiches = new List<IGAssistNiche>();
+        for (int i = 0; i < Dataset.Rows; i++) {
+          var action = FetchAction(i);
+          if (!possibleNiches.Any(x => x.SameNiche(action))) {
+            possibleNiches.Add(action);
+          }
+        }
+      }
+      return possibleNiches;
+    }
+
     public event EventHandler Changed;
+
+    #region events
+    private void RegisterParameterEvents() {
+      ConditionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+      ConditionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+      TargetVariableParameter.ValueChanged += new EventHandler(VariablesChanged);
+    }
+    private void DeregisterParameterEvents() {
+      TargetVariableParameter.ValueChanged += new EventHandler(VariablesChanged);
+      ConditionVariablesParameter.Value.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<StringValue>>(VariablesChanged);
+      ConditionVariablesParameter.ValueChanged += new EventHandler(VariablesChanged);
+    }
+    private void Value_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> e) {
+      VariablesChanged();
+    }
+    private void VariablesChanged(object sender, EventArgs e) {
+      VariablesChanged();
+    }
+
+    private void VariablesChanged() {
+      SampleRuleParameter.Value = CreateSampleRule(Dataset, AllowedConditionVariables, TargetVariable.Value);
+    }
+    #endregion
   }
 }
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/HeuristicLab.Problems.DecisionListClassification-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/HeuristicLab.Problems.DecisionListClassification-3.3.csproj	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/HeuristicLab.Problems.DecisionListClassification-3.3.csproj	(revision 9352)
@@ -109,4 +109,8 @@
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators.LCS\3.3\HeuristicLab.Optimization.Operators.LCS-3.3.csproj">
+      <Project>{f2c6d3b0-bd4f-4747-b13e-b18e53a2a09d}</Project>
+      <Name>HeuristicLab.Optimization.Operators.LCS-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
       <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
Index: anches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.DecisionListClassification/3.3/Properties/AssemblyInfo.cs	(revision 9351)
+++ 	(revision )
@@ -1,56 +1,0 @@
-﻿#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 System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("HeuristicLab.Problems.DecisionListClassification")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("HEAL")]
-[assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("ad5e20a2-4e79-4c62-b043-4089069ff2db")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.7.9228")]
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/CombinedIntegerVectorCVSInstanceProvider.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/CombinedIntegerVectorCVSInstanceProvider.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/CombinedIntegerVectorCVSInstanceProvider.cs	(revision 9352)
@@ -0,0 +1,41 @@
+﻿#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 System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Problems.CombinedIntegerVectorClassification;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.LCS {
+  public class CombinedIntegerVectorCVSInstanceProvider : ConditionActionInstanceProvider<CombinedIntegerVectorClassificationProblemData> {
+    public override CombinedIntegerVectorClassificationProblemData ImportData(string path) {
+      TableFileParser csvParser = new TableFileParser();
+      csvParser.Parse(path);
+      Dataset dataset = new Dataset(csvParser.VariableNames, csvParser.Values);
+
+      CombinedIntegerVectorClassificationProblemData problemData = new CombinedIntegerVectorClassificationProblemData(dataset,
+        csvParser.VariableNames.Take(csvParser.VariableNames.Count() - 1), new List<string>() { csvParser.VariableNames.Last() });
+
+      return problemData;
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/ConditionActionInstanceProvider.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/ConditionActionInstanceProvider.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/ConditionActionInstanceProvider.cs	(revision 9352)
@@ -0,0 +1,55 @@
+﻿#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 System;
+using System.Collections.Generic;
+using HeuristicLab.Encodings.ConditionActionEncoding;
+
+namespace HeuristicLab.Problems.Instances.LCS {
+  public abstract class ConditionActionInstanceProvider<T> : ProblemInstanceProvider<T>
+  where T : class, IConditionActionProblemData {
+
+    public override string Description { get { return ""; } }
+
+    public override string Name {
+      get { return "CSV File"; }
+    }
+
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override Uri WebLink {
+      get { return new Uri("http://dev.heuristiclab.com/trac/hl/core/wiki/UsersFAQ#DataAnalysisImportFileFormat"); }
+    }
+
+    public override bool CanImportData {
+      get { return true; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      return new List<IDataDescriptor>();
+    }
+    public override T LoadData(IDataDescriptor descriptor) {
+      throw new NotImplementedException();
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/DecisionListInstanceProvider.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/DecisionListInstanceProvider.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/DecisionListInstanceProvider.cs	(revision 9352)
@@ -0,0 +1,66 @@
+﻿#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 System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DecisionListClassification;
+using HeuristicLab.Problems.Instances.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.LCS {
+  public class DecisionListInstanceProvider : ProblemInstanceProvider<DecisionListClassificationProblemData> {
+    public override string Description { get { return ""; } }
+
+    public override string Name {
+      get { return "CSV File"; }
+    }
+
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override Uri WebLink {
+      get { return new Uri("http://dev.heuristiclab.com/trac/hl/core/wiki/UsersFAQ#DataAnalysisImportFileFormat"); }
+    }
+
+    public override bool CanImportData {
+      get { return true; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      return new List<IDataDescriptor>();
+    }
+    public override DecisionListClassificationProblemData LoadData(IDataDescriptor descriptor) {
+      throw new NotImplementedException();
+    }
+    public override DecisionListClassificationProblemData ImportData(string path) {
+      TableFileParser csvParser = new TableFileParser();
+      csvParser.Parse(path);
+      Dataset dataset = new Dataset(csvParser.VariableNames, csvParser.Values);
+
+      DecisionListClassificationProblemData problemData = new DecisionListClassificationProblemData(dataset,
+        csvParser.VariableNames.Take(csvParser.VariableNames.Count() - 1), csvParser.VariableNames.Last());
+
+      return problemData;
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/HeuristicLab.Problems.Instances.LCS-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/HeuristicLab.Problems.Instances.LCS-3.3.csproj	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/HeuristicLab.Problems.Instances.LCS-3.3.csproj	(revision 9352)
@@ -0,0 +1,143 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1CC7585E-DD22-41FA-869B-93DE41EA8936}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.LCS</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.LCS-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.DataAnalysis-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="CombinedIntegerVectorCVSInstanceProvider.cs" />
+    <Compile Include="ConditionActionInstanceProvider.cs" />
+    <Compile Include="DecisionListInstanceProvider.cs" />
+    <Compile Include="VariableVectorCVSInstanceProvider.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.CombinedIntegerVectorEncoding\3.3\HeuristicLab.Encodings.CombinedIntegerVectorEncoding-3.3.csproj">
+      <Project>{CE7163C5-BFFE-45F0-9BD0-E10EF24E8BD2}</Project>
+      <Name>HeuristicLab.Encodings.CombinedIntegerVectorEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.ConditionActionEncoding\3.3\HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj">
+      <Project>{422FB262-0845-4969-8D16-12F057AA90B1}</Project>
+      <Name>HeuristicLab.Encodings.ConditionActionEncoding-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.DecisionList\3.3\HeuristicLab.Encodings.DecisionList-3.3.csproj">
+      <Project>{86912e6b-4ef3-4b37-809b-5a7c4a28d0c9}</Project>
+      <Name>HeuristicLab.Encodings.DecisionList-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.VariableVector\3.3\HeuristicLab.Encodings.VariableVector-3.3.csproj">
+      <Project>{7C116F48-7218-4105-BD6E-EE868E2D4823}</Project>
+      <Name>HeuristicLab.Encodings.VariableVector-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators.LCS\3.3\HeuristicLab.Optimization.Operators.LCS-3.3.csproj">
+      <Project>{f2c6d3b0-bd4f-4747-b13e-b18e53a2a09d}</Project>
+      <Name>HeuristicLab.Optimization.Operators.LCS-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.CombinedIntegerVectorClassification\3.3\HeuristicLab.Problems.CombinedIntegerVectorClassification-3.3.csproj">
+      <Project>{E8D42226-3FAF-49AD-91E9-D48A422A1BD0}</Project>
+      <Name>HeuristicLab.Problems.CombinedIntegerVectorClassification-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.ConditionActionClassification\3.3\HeuristicLab.Problems.ConditionActionClassification-3.3.csproj">
+      <Project>{EA51D441-F6A3-41E1-9993-A2488E93C222}</Project>
+      <Name>HeuristicLab.Problems.ConditionActionClassification-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DecisionListClassification\3.3\HeuristicLab.Problems.DecisionListClassification-3.3.csproj">
+      <Project>{ca20ac55-b57d-4078-8cb9-c44e5ff7958b}</Project>
+      <Name>HeuristicLab.Problems.DecisionListClassification-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.VariableVectorClassification\3.3\HeuristicLab.Problems.VariableVectorClassification-3.3.csproj">
+      <Project>{4833BCCD-C7FB-40AB-ABE6-31A8A1FAA3CC}</Project>
+      <Name>HeuristicLab.Problems.VariableVectorClassification-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Plugin.cs.frame
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Plugin.cs.frame	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Plugin.cs.frame	(revision 9352)
@@ -0,0 +1,30 @@
+﻿#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.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.LCS {
+  [Plugin("HeuristicLab.Problems.Instances.LCS", "3.3.7.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.LCS-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class HeuristicLabProblemsInstancesLCSPlugin : PluginBase {
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Properties/AssemblyInfo.cs.frame	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/Properties/AssemblyInfo.cs.frame	(revision 9352)
@@ -0,0 +1,56 @@
+﻿#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 System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.Instances.LCS-3.3")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("dba8bda1-636b-4053-aafc-9294e05d05fb")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/VariableVectorCVSInstanceProvider.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/VariableVectorCVSInstanceProvider.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.Instances.LCS/3.3/VariableVectorCVSInstanceProvider.cs	(revision 9352)
@@ -0,0 +1,41 @@
+﻿#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 System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances.DataAnalysis;
+using HeuristicLab.Problems.VariableVectorClassification;
+
+namespace HeuristicLab.Problems.Instances.LCS {
+  public class VariableVectorCVSInstanceProvider : ConditionActionInstanceProvider<VariableVectorClassificationProblemData> {
+    public override VariableVectorClassificationProblemData ImportData(string path) {
+      TableFileParser csvParser = new TableFileParser();
+      csvParser.Parse(path);
+      Dataset dataset = new Dataset(csvParser.VariableNames, csvParser.Values);
+
+      VariableVectorClassificationProblemData problemData = new VariableVectorClassificationProblemData(dataset,
+        csvParser.VariableNames.Take(csvParser.VariableNames.Count() - 1), new List<string>() { csvParser.VariableNames.Last() });
+
+      return problemData;
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.Designer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.Designer.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.Designer.cs	(revision 9352)
@@ -0,0 +1,89 @@
+﻿#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
+
+namespace HeuristicLab.Problems.LCS.Views {
+  partial class DecisionListView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.dataGridView = new System.Windows.Forms.DataGridView();
+      this.Rule = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // dataGridView
+      // 
+      this.dataGridView.AllowUserToAddRows = false;
+      this.dataGridView.AllowUserToDeleteRows = false;
+      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+      this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Rule});
+      this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.dataGridView.Location = new System.Drawing.Point(0, 0);
+      this.dataGridView.Name = "dataGridView";
+      this.dataGridView.ReadOnly = true;
+      this.dataGridView.Size = new System.Drawing.Size(334, 333);
+      this.dataGridView.TabIndex = 0;
+      // 
+      // Rule
+      // 
+      this.Rule.HeaderText = "Rule";
+      this.Rule.Name = "Rule";
+      this.Rule.ReadOnly = true;
+      // 
+      // DecisionListView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.dataGridView);
+      this.Name = "DecisionListView";
+      this.Size = new System.Drawing.Size(334, 333);
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.DataGridView dataGridView;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Rule;
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/DecisionListView.cs	(revision 9352)
@@ -0,0 +1,70 @@
+﻿#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 System;
+using System.Windows.Forms;
+using HeuristicLab.Encodings.DecisionList;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Problems.LCS.Views {
+  [View("XCS Model")]
+  [Content(typeof(DecisionList), true)]
+  public partial class DecisionListView : AsynchronousContentView {
+
+    public new DecisionList Content {
+      get { return (DecisionList)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public DecisionListView() {
+      InitializeComponent();
+    }
+
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      UpdateDataGridView();
+    }
+
+    private void UpdateDataGridView() {
+      if (InvokeRequired) {
+        Invoke((Action)UpdateDataGridView);
+      } else {
+        if (Content == null) {
+          dataGridView.Rows.Clear();
+        } else {
+
+          dataGridView.RowCount = Content.Rules.Count;
+
+          int row = 0;
+          foreach (var rule in Content.Rules) {
+            dataGridView[0, row].Value = rule.ToString();
+            row++;
+          }
+
+          dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader);
+          dataGridView.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
+        }
+      }
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/HeuristicLab.Problems.LCS.Views-3.3.csproj
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/HeuristicLab.Problems.LCS.Views-3.3.csproj	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/HeuristicLab.Problems.LCS.Views-3.3.csproj	(revision 9352)
@@ -0,0 +1,131 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.LCS.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.LCS.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DecisionListView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DecisionListView.Designer.cs">
+      <DependentUpon>DecisionListView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="XCSModelView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="XCSModelView.Designer.cs">
+      <DependentUpon>XCSModelView.cs</DependentUpon>
+    </Compile>
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.ConditionActionEncoding\3.3\HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj">
+      <Project>{422FB262-0845-4969-8D16-12F057AA90B1}</Project>
+      <Name>HeuristicLab.Encodings.ConditionActionEncoding-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.DecisionList\3.3\HeuristicLab.Encodings.DecisionList-3.3.csproj">
+      <Project>{86912e6b-4ef3-4b37-809b-5a7c4a28d0c9}</Project>
+      <Name>HeuristicLab.Encodings.DecisionList-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators.LCS\3.3\HeuristicLab.Optimization.Operators.LCS-3.3.csproj">
+      <Project>{f2c6d3b0-bd4f-4747-b13e-b18e53a2a09d}</Project>
+      <Name>HeuristicLab.Optimization.Operators.LCS-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Plugin.cs.frame	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Plugin.cs.frame	(revision 9352)
@@ -0,0 +1,37 @@
+﻿#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.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.LCS.Views {
+  [Plugin("HeuristicLab.Problems.LCS.Views", "3.3.7.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.LCS.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.ConditionActionEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  public class HeuristicLabProblemsLCSViewsPlugin : PluginBase {
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 9352)
@@ -0,0 +1,56 @@
+﻿#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 System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.LCS.Views-3.3")]
+[assembly: AssemblyDescription("Views for LCS problems")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0eb420bb-7c27-4e3e-84c5-af07da9d5bb3")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.Designer.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.Designer.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.Designer.cs	(revision 9352)
@@ -0,0 +1,152 @@
+﻿#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
+
+namespace HeuristicLab.Problems.LCS.Views {
+  partial class XCSModelView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.dataGridView = new System.Windows.Forms.DataGridView();
+      this.Classifier = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Prediction = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Error = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Fitness = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Numerosity = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Timestamp = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.Experience = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.AverageActionSetSize = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // dataGridView
+      // 
+      this.dataGridView.AllowUserToAddRows = false;
+      this.dataGridView.AllowUserToDeleteRows = false;
+      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+      this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Classifier,
+            this.Prediction,
+            this.Error,
+            this.Fitness,
+            this.Numerosity,
+            this.Timestamp,
+            this.Experience,
+            this.AverageActionSetSize});
+      this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.dataGridView.Location = new System.Drawing.Point(0, 0);
+      this.dataGridView.Name = "dataGridView";
+      this.dataGridView.ReadOnly = true;
+      this.dataGridView.Size = new System.Drawing.Size(344, 240);
+      this.dataGridView.TabIndex = 0;
+      // 
+      // Classifier
+      // 
+      this.Classifier.HeaderText = "Classifier";
+      this.Classifier.Name = "Classifier";
+      this.Classifier.ReadOnly = true;
+      // 
+      // Prediction
+      // 
+      this.Prediction.HeaderText = "Prediction";
+      this.Prediction.Name = "Prediction";
+      this.Prediction.ReadOnly = true;
+      // 
+      // Error
+      // 
+      this.Error.HeaderText = "Error";
+      this.Error.Name = "Error";
+      this.Error.ReadOnly = true;
+      // 
+      // Fitness
+      // 
+      this.Fitness.HeaderText = "Fitness";
+      this.Fitness.Name = "Fitness";
+      this.Fitness.ReadOnly = true;
+      // 
+      // Numerosity
+      // 
+      this.Numerosity.HeaderText = "Numerosity";
+      this.Numerosity.Name = "Numerosity";
+      this.Numerosity.ReadOnly = true;
+      // 
+      // Timestamp
+      // 
+      this.Timestamp.HeaderText = "Timestamp";
+      this.Timestamp.Name = "Timestamp";
+      this.Timestamp.ReadOnly = true;
+      // 
+      // Experience
+      // 
+      this.Experience.HeaderText = "Experience";
+      this.Experience.Name = "Experience";
+      this.Experience.ReadOnly = true;
+      // 
+      // AverageActionSetSize
+      // 
+      this.AverageActionSetSize.HeaderText = "AverageActionSetSize";
+      this.AverageActionSetSize.Name = "AverageActionSetSize";
+      this.AverageActionSetSize.ReadOnly = true;
+      // 
+      // XCSModelView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.dataGridView);
+      this.Name = "XCSModelView";
+      this.Size = new System.Drawing.Size(344, 240);
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.DataGridView dataGridView;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Classifier;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Prediction;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Error;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Fitness;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Numerosity;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Timestamp;
+    private System.Windows.Forms.DataGridViewTextBoxColumn Experience;
+    private System.Windows.Forms.DataGridViewTextBoxColumn AverageActionSetSize;
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.cs	(revision 9352)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.LCS.Views/3.3/XCSModelView.cs	(revision 9352)
@@ -0,0 +1,77 @@
+﻿#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 System;
+using System.Windows.Forms;
+using HeuristicLab.Encodings.ConditionActionEncoding;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Problems.LCS.Views {
+  [View("XCS Model")]
+  [Content(typeof(XCSModel), true)]
+  public partial class XCSModelView : AsynchronousContentView {
+
+    public new XCSModel Content {
+      get { return (XCSModel)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public XCSModelView() {
+      InitializeComponent();
+    }
+
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      UpdateDataGridView();
+    }
+
+    private void UpdateDataGridView() {
+      if (InvokeRequired) {
+        Invoke((Action)UpdateDataGridView);
+      } else {
+        if (Content == null) {
+          dataGridView.Rows.Clear();
+        } else {
+
+          dataGridView.RowCount = Content.Count;
+
+          int row = 0;
+          foreach (var xcsClassifier in Content) {
+            dataGridView[0, row].Value = xcsClassifier.Classifier.ToString();
+            dataGridView[1, row].Value = xcsClassifier.Prediction.ToString();
+            dataGridView[2, row].Value = xcsClassifier.PredictionError.ToString();
+            dataGridView[3, row].Value = xcsClassifier.Fitness.ToString();
+            dataGridView[4, row].Value = xcsClassifier.Numerosity.ToString();
+            dataGridView[5, row].Value = xcsClassifier.Timestamp.ToString();
+            dataGridView[6, row].Value = xcsClassifier.Experience.ToString();
+            dataGridView[7, row].Value = xcsClassifier.AverageActionSetSize.ToString();
+            row++;
+          }
+
+          dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader);
+          dataGridView.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
+        }
+      }
+    }
+  }
+}
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/Plugin.cs.frame
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/Plugin.cs.frame	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/Plugin.cs.frame	(revision 9352)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.VariableVectorClassification {
-  [Plugin("HeuristicLab.Problems.ConditionActionClassification", "3.3.7.$WCREV$")]
+  [Plugin("HeuristicLab.Problems.VariableVectorClassification", "3.3.7.$WCREV$")]
   [PluginFile("HeuristicLab.Problems.VariableVectorClassification-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
Index: /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/VariableVectorClassificationProblemData.cs
===================================================================
--- /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/VariableVectorClassificationProblemData.cs	(revision 9351)
+++ /branches/LearningClassifierSystems/HeuristicLab.Problems.VariableVectorClassification/3.3/VariableVectorClassificationProblemData.cs	(revision 9352)
@@ -39,6 +39,6 @@
 
     #region parameter properites
-    public IFixedValueParameter<VariableVector> SampleVariableVectorParameter {
-      get { return (IFixedValueParameter<VariableVector>)Parameters["SampleVariableVector"]; }
+    public IValueParameter<VariableVector> SampleVariableVectorParameter {
+      get { return (IValueParameter<VariableVector>)Parameters["SampleVariableVector"]; }
     }
     public IFixedValueParameter<PercentValue> SpreadPercentageParameter {
@@ -67,5 +67,5 @@
     public VariableVectorClassificationProblemData(Dataset dataset, IEnumerable<string> allowedConditionVariables, IEnumerable<string> allowedActionVariables) :
       base(dataset, allowedConditionVariables, allowedActionVariables) {
-      Parameters.Add(new FixedValueParameter<VariableVector>("SampleVariableVector", "", GenerateSampleVariableVector(dataset, allowedConditionVariables, allowedActionVariables)));
+      Parameters.Add(new ValueParameter<VariableVector>("SampleVariableVector", "", GenerateSampleVariableVector(dataset, allowedConditionVariables, allowedActionVariables)));
       Parameters.Add(new FixedValueParameter<PercentValue>("SpreadPercentage", "", new PercentValue(0.5)));
     }
@@ -126,4 +126,8 @@
       return fetchActionCache[rowNumber];
     }
+
+    protected override void ActionConditionVariablesChanged() {
+      SampleVariableVectorParameter.Value = GenerateSampleVariableVector(Dataset, AllowedConditionVariables, AllowedActionVariables);
+    }
   }
 }
Index: /branches/LearningClassifierSystems/LearningClassifierSystem.sln
===================================================================
--- /branches/LearningClassifierSystems/LearningClassifierSystem.sln	(revision 9351)
+++ /branches/LearningClassifierSystems/LearningClassifierSystem.sln	(revision 9352)
@@ -15,8 +15,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ConditionActionClassification-3.3", "HeuristicLab.Problems.ConditionActionClassification\3.3\HeuristicLab.Problems.ConditionActionClassification-3.3.csproj", "{EA51D441-F6A3-41E1-9993-A2488E93C222}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.XCS.Views-3.3", "HeuristicLab.Problems.XCS.Views\3.3\HeuristicLab.Problems.XCS.Views-3.3.csproj", "{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.ConditionActionClassification-3.3", "HeuristicLab.Problems.Instances.ConditionActionClassification\3.3\HeuristicLab.Problems.Instances.ConditionActionClassification-3.3.csproj", "{1CC7585E-DD22-41FA-869B-93DE41EA8936}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Core-3.3", "HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj", "{C36BD924-A541-4A00-AFA8-41701378DDC5}"
@@ -37,4 +33,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Optimization.Operators.LCS-3.3", "HeuristicLab.Optimization.Operators.LCS\3.3\HeuristicLab.Optimization.Operators.LCS-3.3.csproj", "{F2C6D3B0-BD4F-4747-B13E-B18E53A2A09D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.LCS.Views-3.3", "HeuristicLab.Problems.LCS.Views\3.3\HeuristicLab.Problems.LCS.Views-3.3.csproj", "{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.LCS-3.3", "HeuristicLab.Problems.Instances.LCS\3.3\HeuristicLab.Problems.Instances.LCS-3.3.csproj", "{1CC7585E-DD22-41FA-869B-93DE41EA8936}"
 EndProject
 Global
@@ -84,20 +84,4 @@
 		{EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|x64.ActiveCfg = Release|Any CPU
 		{EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|x86.ActiveCfg = Release|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|x64.ActiveCfg = Release|Any CPU
-		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|x86.ActiveCfg = Release|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|x64.ActiveCfg = Release|Any CPU
-		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|x86.ActiveCfg = Release|Any CPU
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -180,4 +164,20 @@
 		{F2C6D3B0-BD4F-4747-B13E-B18E53A2A09D}.Release|x64.ActiveCfg = Release|Any CPU
 		{F2C6D3B0-BD4F-4747-B13E-B18E53A2A09D}.Release|x86.ActiveCfg = Release|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|x64.ActiveCfg = Release|Any CPU
+		{8FFB8E0F-BC17-4D72-AF0F-E67A22F8EDE5}.Release|x86.ActiveCfg = Release|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|x64.ActiveCfg = Release|Any CPU
+		{1CC7585E-DD22-41FA-869B-93DE41EA8936}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
