Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/10/13 15:15:13 (11 years ago)
Author:
sforsten
Message:

#1980:

  • added DecisionListView
  • added event handlers in *ProblemData
  • renamed project Problems.XCS.Views to Problems.lCS.Views and Problems.Instances.ConditionActionClassification to Problems.Instances.LCS
  • integrated niching in GAssist and added NichingTournamentSelector
  • minor code improvements and property changes
Location:
branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssist.cs

    r9342 r9352  
    4747    #region Problem Properties
    4848    public override Type ProblemType {
    49       get { return typeof(ISingleObjectiveHeuristicOptimizationProblem); }
    50     }
    51     public new ISingleObjectiveHeuristicOptimizationProblem Problem {
    52       get { return (ISingleObjectiveHeuristicOptimizationProblem)base.Problem; }
     49      get { return typeof(IGAssistProblem); }
     50    }
     51    public new IGAssistProblem Problem {
     52      get { return (IGAssistProblem)base.Problem; }
    5353      set { base.Problem = value; }
    5454    }
     
    6565      get { return (ValueParameter<IntValue>)Parameters["PopulationSize"]; }
    6666    }
    67     public IConstrainedValueParameter<ISelector> SelectorParameter {
    68       get { return (IConstrainedValueParameter<ISelector>)Parameters["Selector"]; }
     67    public IConstrainedValueParameter<IDefaultRuleOperator> DefaultRuleParameter {
     68      get { return (IConstrainedValueParameter<IDefaultRuleOperator>)Parameters["DefaultRule"]; }
     69    }
     70    public IConstrainedValueParameter<INichingSingleObjectiveSelector> SelectorParameter {
     71      get { return (IConstrainedValueParameter<INichingSingleObjectiveSelector>)Parameters["Selector"]; }
    6972    }
    7073    private ValueParameter<PercentValue> CrossoverProbabilityParameter {
     
    134137      set { PopulationSizeParameter.Value = value; }
    135138    }
    136     public ISelector Selector {
     139    public INichingSingleObjectiveSelector Selector {
    137140      get { return SelectorParameter.Value; }
    138141      set { SelectorParameter.Value = value; }
     
    192195      Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
    193196      Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100)));
    194       Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction."));
     197      Parameters.Add(new ConstrainedValueParameter<INichingSingleObjectiveSelector>("Selector", "The operator used to select solutions for reproduction."));
    195198      Parameters.Add(new ValueParameter<PercentValue>("CrossoverProbability", "The probability that the Crossover operator is applied on a solution.", new PercentValue(0.9)));
    196199      Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions."));
     
    208211      Parameters.Add(new FixedValueParameter<IntValue>("MaximumNumberOfIntervals", "", new IntValue(5)));
    209212      Parameters.Add(new FixedValueParameter<IntValue>("InitialNumberOfRules", "", new IntValue(20)));
     213      Parameters.Add(new ConstrainedValueParameter<IDefaultRuleOperator>("DefaultRule", ""));
    210214      Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("ReinitializeCurveOperator", ""));
    211215      Parameters.Add(new ValueParameter<ItemCollection<IDiscretizer>>("Discretizers", "", new ItemCollection<IDiscretizer>()));
     
    236240      resultsCollector.Successor = mainLoop;
    237241
     242      mainLoop.DefaultRuleParameter.ActualName = DefaultRuleParameter.Name;
    238243      mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
    239244      mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
     
    251256      mainLoop.ReinitializationProbabilityOperatorParameter.ActualName = ReinitializeCurveOperatorParameter.Name;
    252257
    253       foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
     258      foreach (INichingSingleObjectiveSelector selector in ApplicationManager.Manager.GetInstances<INichingSingleObjectiveSelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
    254259        SelectorParameter.ValidValues.Add(selector);
    255       ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
    256       if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
     260      //INichingSingleObjectiveSelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
     261      //if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
    257262      ParameterizeSelectors();
    258263
     
    349354      ParameterizeAnalyzers();
    350355      ParameterizeIterationBasedOperators();
     356      UpdateDefaultRuleOperators();
    351357      UpdateCrossovers();
    352358      UpdateMutators();
     
    430436    }
    431437    private void ParameterizeSelectors() {
    432       foreach (ISelector selector in SelectorParameter.ValidValues) {
     438      foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues) {
    433439        selector.CopySelected = new BoolValue(true);
    434440        selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * (PopulationSizeParameter.Value.Value - ElitesParameter.Value.Value));
    435441        selector.NumberOfSelectedSubScopesParameter.Hidden = true;
     442        selector.ParentsPerChildParameter.Value = new IntValue(2);
    436443        ParameterizeStochasticOperator(selector);
    437444      }
    438445      if (Problem != null) {
    439         foreach (ISingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
     446        foreach (INichingSingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<INichingSingleObjectiveSelector>()) {
    440447          selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
    441448          selector.MaximizationParameter.Hidden = true;
    442449          selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    443450          selector.QualityParameter.Hidden = true;
     451          selector.NichingParameter.ActualName = Problem.NichingParameterName;
     452          selector.GAssistNichesProblemDataParameter.ActualName = Problem.ProblemDataParameter.Name;
     453          //change
     454          selector.IndividualParameter.ActualName = "DecisionList";
    444455        }
    445456      }
     
    468479      }
    469480    }
     481    private void UpdateDefaultRuleOperators() {
     482      IDefaultRuleOperator oldDefaultRule = DefaultRuleParameter.Value;
     483      DefaultRuleParameter.ValidValues.Clear();
     484      IDefaultRuleOperator defaultdefaultRule = Problem.Operators.OfType<IDefaultRuleOperator>().FirstOrDefault();
     485
     486      foreach (IDefaultRuleOperator defaultRule in Problem.Operators.OfType<IDefaultRuleOperator>().OrderBy(x => x.Name))
     487        DefaultRuleParameter.ValidValues.Add(defaultRule);
     488
     489      if (oldDefaultRule != null) {
     490        IDefaultRuleOperator defaultRule = DefaultRuleParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldDefaultRule.GetType());
     491        if (defaultRule != null) DefaultRuleParameter.Value = defaultRule;
     492        else oldDefaultRule = null;
     493      }
     494      if (oldDefaultRule == null && defaultdefaultRule != null)
     495        DefaultRuleParameter.Value = defaultdefaultRule;
     496    }
    470497    private void UpdateCrossovers() {
    471498      ICrossover oldCrossover = CrossoverParameter.Value;
  • branches/LearningClassifierSystems/HeuristicLab.Algorithms.GAssist/3.3/GAssistMainLoop.cs

    r9342 r9352  
    6161    public ValueLookupParameter<IOperator> MutatorParameter {
    6262      get { return (ValueLookupParameter<IOperator>)Parameters["Mutator"]; }
     63    }
     64    public ValueLookupParameter<IOperator> DefaultRuleParameter {
     65      get { return (ValueLookupParameter<IOperator>)Parameters["DefaultRule"]; }
    6366    }
    6467    public ValueLookupParameter<IOperator> SpecialStagesParameter {
     
    130133      Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population."));
    131134      Parameters.Add(new ValueLookupParameter<IOperator>("ReinitializationProbabilityOperator", ""));
     135      Parameters.Add(new ValueLookupParameter<IOperator>("DefaultRule", ""));
    132136      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied."));
    133137      #endregion
     
    138142      Placeholder analyzer1 = new Placeholder();
    139143      Placeholder reinitializationProbabilityOperator = new Placeholder();
     144      Placeholder defaultRuleOperator = new Placeholder();
    140145      Placeholder selector = new Placeholder();
    141146      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
     
    170175      analyzer1.OperatorParameter.ActualName = "Analyzer";
    171176
     177      defaultRuleOperator.Name = "Default Rule Operator";
     178      defaultRuleOperator.OperatorParameter.ActualName = DefaultRuleParameter.Name;
     179
    172180      reinitializationProbabilityOperator.Name = "Reinitialization Probability operator (placeholder)";
    173181      reinitializationProbabilityOperator.OperatorParameter.ActualName = ReinitializationProbabilityOperatorParameter.Name;
     
    229237      variableCreator.Successor = resultsCollector1;
    230238      resultsCollector1.Successor = analyzer1;
    231       analyzer1.Successor = reinitializationProbabilityOperator;
     239      analyzer1.Successor = defaultRuleOperator;
     240      defaultRuleOperator.Successor = reinitializationProbabilityOperator;
    232241      reinitializationProbabilityOperator.Successor = selector;
    233242      selector.Successor = subScopesProcessor1;
     
    263272      comparator.Successor = analyzer2;
    264273      analyzer2.Successor = conditionalBranch;
    265       conditionalBranch.FalseBranch = reinitializationProbabilityOperator;
     274      conditionalBranch.FalseBranch = defaultRuleOperator;
    266275      conditionalBranch.TrueBranch = null;
    267276      conditionalBranch.Successor = null;
Note: See TracChangeset for help on using the changeset viewer.