Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/25/13 12:37:18 (12 years ago)
Author:
sforsten
Message:

#1980:

  • fixed several bugs (crossover, subsumption, serialization etc.)
  • added ModuloOperator
  • CombinedIntegerVectorClassificationProblem\Data and VariableVectorClassificationProblem\Data inherit from ConditionActionClassificationProblem\Data
  • it can now be set how often the analyzers have to be executed
  • VariableVectorAction, VariableVectorCondition and VariableVectorInput now inherit from Item
Location:
branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3

    • Property svn:ignore
      •  

        old new  
        11obj
         2Plugin.cs
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Crossover/SinglePointCrossover.cs

    r9226 r9242  
    5454
    5555      if (parent1.Count != parent2.Count && parent1.VirtualLength != parent2.VirtualLength
    56         && parent1Condition.Count != parent2Condition.Count && parent1Condition.VirtualLength != parent2Condition.VirtualLength
    57         && parent1Action.Count != parent2Action.Count && parent1Action.VirtualLength != parent2Action.VirtualLength)
     56        && parent1Condition.VariableDictionary.Count != parent2Condition.VariableDictionary.Count && parent1Condition.VirtualLength != parent2Condition.VirtualLength
     57        && parent1Action.VariableDictionary.Count != parent2Action.VariableDictionary.Count && parent1Action.VirtualLength != parent2Action.VirtualLength)
    5858        throw new ArgumentException("SinglePointCrossover: The parents are of different length.");
    5959
    6060      int conditionLength = parent1Condition.VirtualLength;
    6161      int breakPoint = random.Next(1, conditionLength);
    62       IList<IVariable> newCondition = new List<IVariable>(parent1Condition.Count);
     62      IList<IVariable> newCondition = new List<IVariable>(parent1Condition.VariableDictionary.Count);
    6363
    6464      var keyEnumerator = parent1Condition.Order.GetEnumerator();
    6565
    6666      int index = 0;
    67       IVariable curVariable;
     67      IVariable curVariable = null;
    6868      while (index < breakPoint) {
    69         keyEnumerator.MoveNext();
    70         curVariable = parent1Condition[keyEnumerator.Current];
    71         if (curVariable.VirtualLength == 1 || index + curVariable.VirtualLength - 1 < breakPoint) {
     69        if (!keyEnumerator.MoveNext()) { throw new IndexOutOfRangeException("Enumerator has no next element!"); }
     70        curVariable = parent1Condition.VariableDictionary[keyEnumerator.Current];
     71        if (index + curVariable.VirtualLength <= breakPoint) {
    7272          newCondition.Add(curVariable.GetSetCopy());
    73           index += curVariable.VirtualLength;
    7473        }
     74        index += curVariable.VirtualLength;
    7575      }
    7676
    7777      // breakpoint is in between a variable
    7878      if (index != breakPoint) {
    79         newCondition.Add(parent1Condition[keyEnumerator.Current].CrossParentsAtPosition(parent2Condition[keyEnumerator.Current], breakPoint - index - 1));
     79        newCondition.Add(parent1Condition.VariableDictionary[keyEnumerator.Current].CrossParentsAtPosition(parent2Condition.VariableDictionary[keyEnumerator.Current], breakPoint - (index - curVariable.VirtualLength)));
    8080      }
    8181
    8282      while (index < conditionLength) {
    8383        keyEnumerator.MoveNext();
    84         curVariable = parent2Condition[keyEnumerator.Current];
     84        curVariable = parent2Condition.VariableDictionary[keyEnumerator.Current];
    8585        newCondition.Add(curVariable.GetSetCopy());
    8686        index += curVariable.VirtualLength;
    8787      }
    8888
    89       var action = random.Next(2) == 1 ? parent1Action.Values.Select(x => x.GetSetCopy()) : parent2Action.Values.Select(x => x.GetSetCopy());
     89      var action = random.Next(2) == 1 ? parent1Action.VariableDictionary.Values.Select(x => x.GetSetCopy()) : parent2Action.VariableDictionary.Values.Select(x => x.GetSetCopy());
    9090
    9191      return new VariableVector(newCondition, action);
Note: See TracChangeset for help on using the changeset viewer.