Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/13 16:16:38 (12 years ago)
Author:
sforsten
Message:

#1980:

  • deleted not needed interface IMatching
  • finished VariableVector encoding
  • the algorithm LearningClassifierSystem is now independent of a specific encoding. It still needs the ConditionActionEncoding.
  • merged r9191:9203 HeuristicLab.Core from trunk to branch
Location:
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVectorManipulator.cs

    r9194 r9204  
    3939      get { return (ILookupParameter<CombinedIntegerVector>)Parameters["Child"]; }
    4040    }
    41     public ILookupParameter<CombinedIntegerVector> FetchedConditionParameter {
    42       get { return (ILookupParameter<CombinedIntegerVector>)Parameters["Parent"]; }
     41    public ILookupParameter<CombinedIntegerVector> FetchedInputParameter {
     42      get { return (ILookupParameter<CombinedIntegerVector>)Parameters["Input"]; }
    4343    }
    4444    #endregion
     
    5353      Parameters.Add(new LookupParameter<IRandom>("Random"));
    5454      Parameters.Add(new LookupParameter<CombinedIntegerVector>("Child"));
    55       Parameters.Add(new LookupParameter<CombinedIntegerVector>("Parent"));
     55      Parameters.Add(new LookupParameter<CombinedIntegerVector>("Input"));
    5656    }
    5757
    5858    public sealed override IOperation Apply() {
    59       ChildParameter.ActualValue = Manipulate(RandomParameter.ActualValue, FetchedConditionParameter.ActualValue, ChildParameter.ActualValue);
     59      ChildParameter.ActualValue = Manipulate(RandomParameter.ActualValue, FetchedInputParameter.ActualValue, ChildParameter.ActualValue);
    6060      return base.Apply();
    6161    }
    6262
    63     protected abstract CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child);
     63    protected abstract CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child);
    6464  }
    6565}
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Covering/CombinedIntegerVectorCoveringCreator.cs

    r9194 r9204  
    2222using HeuristicLab.Common;
    2323using HeuristicLab.Core;
    24 using HeuristicLab.Data;
    2524using HeuristicLab.Encodings.ConditionActionEncoding;
    26 using HeuristicLab.Operators;
    27 using HeuristicLab.Parameters;
    2825using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2926
     
    3128  [Item("CombinedIntegerVectorCoveringCreator", "Description missing")]
    3229  [StorableClass]
    33   public class CombinedIntegerVectorCoveringCreator : SingleSuccessorOperator, ICoveringSolutionCreator {
    34 
    35     #region Parameter Properties
    36     public ILookupParameter<IInput> CoverInputParameter {
    37       get { return (ILookupParameter<IInput>)Parameters["CoverInput"]; }
    38     }
    39     public ILookupParameter<IAction> ActionParameter {
    40       get { return (ILookupParameter<IAction>)Parameters["Action"]; }
    41     }
    42     public IValueLookupParameter<IClassifier> CreatedClassifierParameter {
    43       get { return (IValueLookupParameter<IClassifier>)Parameters["CreatedClassifier"]; }
    44     }
    45     public ILookupParameter<PercentValue> ChangeSymbolProbabilityParameter {
    46       get { return (ILookupParameter<PercentValue>)Parameters["ChangeSymbolProbability"]; }
    47     }
    48     public ILookupParameter<IRandom> RandomParameter {
    49       get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
    50     }
    51 
    52     #endregion
     30  public class CombinedIntegerVectorCoveringCreator : CoveringSolutionCreator, ICombinedIntegerVectorOperator {
    5331
    5432    [StorableConstructor]
     
    6240    public CombinedIntegerVectorCoveringCreator()
    6341      : base() {
    64       Parameters.Add(new LookupParameter<IInput>("CoverInput"));
    65       Parameters.Add(new LookupParameter<IAction>("Action"));
    66       Parameters.Add(new ValueLookupParameter<IClassifier>("CreatedClassifier"));
    67       Parameters.Add(new LookupParameter<PercentValue>("ChangeSymbolProbability"));
    68       Parameters.Add(new LookupParameter<IRandom>("Random"));
    6942    }
    7043
    71     public override IOperation Apply() {
    72       CombinedIntegerVector newCondition = (CombinedIntegerVector)CoverInputParameter.ActualValue.Clone();
     44    protected override IClassifier CreateCoveredClassifier(IInput input, IAction action, IRandom random, double changeSymbolProbability) {
     45      CombinedIntegerVector newCondition = (CombinedIntegerVector)input.Clone();
    7346
    74       CombinedIntegerVector condition = (CombinedIntegerVector)CoverInputParameter.ActualValue;
    75       CombinedIntegerVector action = (CombinedIntegerVector)ActionParameter.ActualValue;
     47      CombinedIntegerVector condition = (CombinedIntegerVector)input;
     48      CombinedIntegerVector newAction = (CombinedIntegerVector)action;
    7649
    77       newCondition = UniformSomePositionManipulator.ManipulateCondition(RandomParameter.ActualValue, condition, newCondition, ChangeSymbolProbabilityParameter.ActualValue.Value);
     50      newCondition = UniformSomePositionManipulator.ManipulateCondition(random, condition, newCondition, changeSymbolProbability);
    7851
    79       CreatedClassifierParameter.ActualValue = new CombinedIntegerVector(newCondition, newCondition.Bounds, action, action.Bounds);
    80       return base.Apply();
     52      return new CombinedIntegerVector(newCondition, newCondition.Bounds, newAction, newAction.Bounds);
    8153    }
    8254  }
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorManipulator.cs

    r9194 r9204  
    2929  public interface ICombinedIntegerVectorManipulator : IManipulator, ICombinedIntegerVectorOperator {
    3030    ILookupParameter<CombinedIntegerVector> ChildParameter { get; }
    31     ILookupParameter<CombinedIntegerVector> FetchedConditionParameter { get; }
     31    ILookupParameter<CombinedIntegerVector> FetchedInputParameter { get; }
    3232  }
    3333}
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformActionManipulator.cs

    r9089 r9204  
    4747    }
    4848
    49     protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector child, CombinedIntegerVector parent) {
    50       return Manipulate(random, parent, child, PossibleActionsParameter.ActualValue);
     49    protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector child, CombinedIntegerVector input) {
     50      return Manipulate(random, child, PossibleActionsParameter.ActualValue);
    5151    }
    5252
    53     public static CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child, IEnumerable<CombinedIntegerVector> possibleActions) {
    54       var otherActions = possibleActions.Except(((CombinedIntegerVector)parent.Action).ToEnumerable());
     53    public static CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector child, IEnumerable<CombinedIntegerVector> possibleActions) {
     54      var otherActions = possibleActions.Except(((CombinedIntegerVector)child.Action).ToEnumerable());
    5555      int actionIndex = random.Next(otherActions.Count());
    5656      CombinedIntegerVector newAction = otherActions.ElementAt(actionIndex);
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformOnePositionInConditionManipulator.cs

    r9090 r9204  
    4141    }
    4242
    43     protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child) {
    44       return Manipulate(parent, child, random.Next(((CombinedIntegerVector)child.Condition).Length));
     43    protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child) {
     44      return Manipulate(input, child, random.Next(((CombinedIntegerVector)child.Condition).Length));
    4545    }
    4646
    47     public static CombinedIntegerVector Manipulate(CombinedIntegerVector parent, CombinedIntegerVector child, int index) {
     47    public static CombinedIntegerVector Manipulate(CombinedIntegerVector input, CombinedIntegerVector child, int index) {
    4848      int max = child.Bounds[index % child.Bounds.Rows, 1] - 1;
    4949      if (child[index].Equals(max)) {
    50         child[index] = parent[index];
     50        child[index] = input[index];
    5151      } else {
    5252        child[index] = max;
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformSomePositionManipulator.cs

    r9154 r9204  
    2323using HeuristicLab.Core;
    2424using HeuristicLab.Data;
     25using HeuristicLab.Encodings.ConditionActionEncoding;
    2526using HeuristicLab.Parameters;
    2627using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2728
    2829namespace HeuristicLab.Encodings.CombinedIntegerVectorEncoding {
    29   public class UniformSomePositionManipulator : CombinedIntegerVectorManipulator {
     30  public class UniformSomePositionManipulator : CombinedIntegerVectorManipulator, IProbabilityMutatorOperator {
    3031
    3132    public IValueLookupParameter<PercentValue> ProbabilityParameter {
     
    5051    }
    5152
    52     protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child) {
    53       return Manipulate(random, parent, child, ProbabilityParameter.ActualValue.Value, PossibleActionsParameter.ActualValue);
     53    protected override CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child) {
     54      return Manipulate(random, input, child, ProbabilityParameter.ActualValue.Value, PossibleActionsParameter.ActualValue);
    5455    }
    5556
    56     public static CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child, double probability, IItemSet<CombinedIntegerVector> possibleActions) {
    57       child = ManipulateCondition(random, parent, child, probability);
    58       return ManipulateAction(random, parent, child, probability, possibleActions);
     57    public static CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child, double probability, IItemSet<CombinedIntegerVector> possibleActions) {
     58      child = ManipulateCondition(random, input, child, probability);
     59      return ManipulateAction(random, child, probability, possibleActions);
    5960    }
    6061
    61     public static CombinedIntegerVector ManipulateCondition(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child, double probability) {
     62    public static CombinedIntegerVector ManipulateCondition(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child, double probability) {
    6263      int conditionLength = child.Length - child.ActionLength;
    6364      for (int index = 0; index < child.Length - child.ActionLength; index++) {
    6465        if (random.NextDouble() < probability) {
    65           child = UniformOnePositionInConditionManipulator.Manipulate(parent, child, index);
     66          child = UniformOnePositionInConditionManipulator.Manipulate(input, child, index);
    6667        }
    6768      }
     
    6970    }
    7071
    71     public static CombinedIntegerVector ManipulateAction(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child, double probability, IItemSet<CombinedIntegerVector> possibleActions) {
     72    public static CombinedIntegerVector ManipulateAction(IRandom random, CombinedIntegerVector child, double probability, IItemSet<CombinedIntegerVector> possibleActions) {
    7273      if (child.ActionLength > 0 && random.NextDouble() < probability) {
    73         UniformActionManipulator.Manipulate(random, parent, child, possibleActions);
     74        UniformActionManipulator.Manipulate(random, child, possibleActions);
    7475      }
    7576      return child;
Note: See TracChangeset for help on using the changeset viewer.