Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/04/13 20:46:18 (12 years ago)
Author:
sforsten
Message:

#1980:

  • added GA subsumption
  • simplified deletion before covering
  • simplified XCSDeletionOperator
Location:
branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering/CoveringOperator.cs

    r9105 r9110  
    101101        throw new ArgumentException("More classifiers with unique actions shall be created than unique actions are available.");
    102102      }
     103      if (count > 0) {
     104        CurrentPopulationSizeParameter.ActualValue.Value += count;
    103105
    104       CurrentPopulationSizeParameter.ActualValue.Value += count;
     106        int current = CurrentScope.SubScopes.Count;
     107        for (int i = 0; i < count; i++) {
     108          CurrentScope.SubScopes.Add(new Scope((current + i).ToString()));
     109        }
    105110
    106       int current = CurrentScope.SubScopes.Count;
    107       for (int i = 0; i < count; i++) {
    108         CurrentScope.SubScopes.Add(new Scope((current + i).ToString()));
     111        creator.ActionParameter.ActualName = "Action";
     112        OperationCollection variableCreation = new OperationCollection() { Parallel = parallel };
     113        OperationCollection creation = new OperationCollection();
     114        OperationCollection evaluation = new OperationCollection() { Parallel = parallel };
     115        for (int i = 0; i < count; i++) {
     116          VariableCreator variableCreator = new VariableCreator();
     117          int pos = RandomParameter.ActualValue.Next(clone.Count);
     118          IClassifier action = clone.ElementAt(pos);
     119          clone.Remove(action);
     120          variableCreator.CollectedValues.Add(new ValueParameter<IClassifier>("Action", action));
     121          variableCreation.Add(ExecutionContext.CreateOperation(variableCreator, CurrentScope.SubScopes[current + i]));
     122          creation.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[current + i]));
     123          evaluation.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[current + i]));
     124        }
     125        OperationCollection next = new OperationCollection();
     126        next.Add(variableCreation);
     127        next.Add(creation);
     128        next.Add(evaluation);
     129        next.Add(base.Apply());
     130        return next;
     131      } else {
     132        return base.Apply();
    109133      }
    110 
    111       creator.ActionParameter.ActualName = "Action";
    112       OperationCollection variableCreation = new OperationCollection() { Parallel = parallel };
    113       OperationCollection creation = new OperationCollection();
    114       OperationCollection evaluation = new OperationCollection() { Parallel = parallel };
    115       for (int i = 0; i < count; i++) {
    116         VariableCreator variableCreator = new VariableCreator();
    117         int pos = RandomParameter.ActualValue.Next(clone.Count);
    118         IClassifier action = clone.ElementAt(pos);
    119         clone.Remove(action);
    120         variableCreator.CollectedValues.Add(new ValueParameter<IClassifier>("Action", action));
    121         variableCreation.Add(ExecutionContext.CreateOperation(variableCreator, CurrentScope.SubScopes[current + i]));
    122         creation.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[current + i]));
    123         evaluation.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[current + i]));
    124       }
    125       OperationCollection next = new OperationCollection();
    126       next.Add(variableCreation);
    127       next.Add(creation);
    128       next.Add(evaluation);
    129       next.Add(base.Apply());
    130       return next;
    131134    }
    132135  }
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering/DoDeletionBeforeCovering.cs

    r9105 r9110  
    2020#endregion
    2121
     22using System;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
     
    3334
    3435    #region Parameter Properties
     36    public ILookupParameter<ItemArray<IClassifier>> ClassifiersParameter {
     37      get { return (ILookupParameter<ItemArray<IClassifier>>)Parameters["Classifiers"]; }
     38    }
     39    public ILookupParameter<ItemArray<BoolValue>> MatchConditionParameter {
     40      get { return (ILookupParameter<ItemArray<BoolValue>>)Parameters["MatchCondition"]; }
     41    }
    3542    public ILookupParameter<IntValue> MinimalNumberOfUniqueActionsParameter {
    3643      get { return (ILookupParameter<IntValue>)Parameters["MinimalNumberOfUniqueActions"]; }
    37     }
    38     public ILookupParameter<IntValue> NumberOfUniqueActionsParameter {
    39       get { return (ILookupParameter<IntValue>)Parameters["NumberOfUniqueActions"]; }
    4044    }
    4145    public ILookupParameter<IntValue> CurrentPopulationSizeParameter {
     
    6064    public DoDeletionBeforeCoveringOperator()
    6165      : base() {
     66      Parameters.Add(new ScopeTreeLookupParameter<IClassifier>("Classifiers"));
     67      Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("MatchCondition"));
    6268      Parameters.Add(new LookupParameter<IntValue>("MinimalNumberOfUniqueActions"));
    63       Parameters.Add(new LookupParameter<IntValue>("NumberOfUniqueActions"));
    6469      Parameters.Add(new LookupParameter<IntValue>("CurrentPopulationSize"));
    6570      Parameters.Add(new LookupParameter<IntValue>("PopulationSize"));
     
    7277
    7378    public override IOperation Apply() {
     79      IItemSet<IClassifier> uniqueActions = new ItemSet<IClassifier>();
     80      var classifiers = ClassifiersParameter.ActualValue;
     81      var matchcondition = MatchConditionParameter.ActualValue;
     82
     83      if (classifiers.Length != matchcondition.Length) {
     84        throw new ArgumentException("Number of classifiers is not equal to the number of 'MatchCondition' variables.");
     85      }
     86
     87      for (int i = 0; i < classifiers.Length; i++) {
     88        if (matchcondition[i].Value) {
     89          uniqueActions.Add(classifiers[i].Action);
     90        }
     91      }
     92
    7493      int populationAfterCovering = MinimalNumberOfUniqueActionsParameter.ActualValue.Value
    75                                     - NumberOfUniqueActionsParameter.ActualValue.Value
     94                                    - uniqueActions.Count
    7695                                    + CurrentPopulationSizeParameter.ActualValue.Value;
    7796      BoolValue doDeletion = new BoolValue(populationAfterCovering > PopulationSizeParameter.ActualValue.Value);
Note: See TracChangeset for help on using the changeset viewer.