Changeset 9204 for branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3
- Timestamp:
- 02/04/13 16:16:38 (12 years ago)
- 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 39 39 get { return (ILookupParameter<CombinedIntegerVector>)Parameters["Child"]; } 40 40 } 41 public ILookupParameter<CombinedIntegerVector> Fetched ConditionParameter {42 get { return (ILookupParameter<CombinedIntegerVector>)Parameters[" Parent"]; }41 public ILookupParameter<CombinedIntegerVector> FetchedInputParameter { 42 get { return (ILookupParameter<CombinedIntegerVector>)Parameters["Input"]; } 43 43 } 44 44 #endregion … … 53 53 Parameters.Add(new LookupParameter<IRandom>("Random")); 54 54 Parameters.Add(new LookupParameter<CombinedIntegerVector>("Child")); 55 Parameters.Add(new LookupParameter<CombinedIntegerVector>(" Parent"));55 Parameters.Add(new LookupParameter<CombinedIntegerVector>("Input")); 56 56 } 57 57 58 58 public sealed override IOperation Apply() { 59 ChildParameter.ActualValue = Manipulate(RandomParameter.ActualValue, Fetched ConditionParameter.ActualValue, ChildParameter.ActualValue);59 ChildParameter.ActualValue = Manipulate(RandomParameter.ActualValue, FetchedInputParameter.ActualValue, ChildParameter.ActualValue); 60 60 return base.Apply(); 61 61 } 62 62 63 protected abstract CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVector child);63 protected abstract CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector input, CombinedIntegerVector child); 64 64 } 65 65 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Covering/CombinedIntegerVectorCoveringCreator.cs
r9194 r9204 22 22 using HeuristicLab.Common; 23 23 using HeuristicLab.Core; 24 using HeuristicLab.Data;25 24 using HeuristicLab.Encodings.ConditionActionEncoding; 26 using HeuristicLab.Operators;27 using HeuristicLab.Parameters;28 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 26 … … 31 28 [Item("CombinedIntegerVectorCoveringCreator", "Description missing")] 32 29 [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 { 53 31 54 32 [StorableConstructor] … … 62 40 public CombinedIntegerVectorCoveringCreator() 63 41 : 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"));69 42 } 70 43 71 p ublic 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(); 73 46 74 CombinedIntegerVector condition = (CombinedIntegerVector) CoverInputParameter.ActualValue;75 CombinedIntegerVector action = (CombinedIntegerVector)ActionParameter.ActualValue;47 CombinedIntegerVector condition = (CombinedIntegerVector)input; 48 CombinedIntegerVector newAction = (CombinedIntegerVector)action; 76 49 77 newCondition = UniformSomePositionManipulator.ManipulateCondition( RandomParameter.ActualValue, condition, newCondition, ChangeSymbolProbabilityParameter.ActualValue.Value);50 newCondition = UniformSomePositionManipulator.ManipulateCondition(random, condition, newCondition, changeSymbolProbability); 78 51 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); 81 53 } 82 54 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorManipulator.cs
r9194 r9204 29 29 public interface ICombinedIntegerVectorManipulator : IManipulator, ICombinedIntegerVectorOperator { 30 30 ILookupParameter<CombinedIntegerVector> ChildParameter { get; } 31 ILookupParameter<CombinedIntegerVector> Fetched ConditionParameter { get; }31 ILookupParameter<CombinedIntegerVector> FetchedInputParameter { get; } 32 32 } 33 33 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformActionManipulator.cs
r9089 r9204 47 47 } 48 48 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); 51 51 } 52 52 53 public static CombinedIntegerVector Manipulate(IRandom random, CombinedIntegerVector parent, CombinedIntegerVectorchild, 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()); 55 55 int actionIndex = random.Next(otherActions.Count()); 56 56 CombinedIntegerVector newAction = otherActions.ElementAt(actionIndex); -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformOnePositionInConditionManipulator.cs
r9090 r9204 41 41 } 42 42 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)); 45 45 } 46 46 47 public static CombinedIntegerVector Manipulate(CombinedIntegerVector parent, CombinedIntegerVector child, int index) {47 public static CombinedIntegerVector Manipulate(CombinedIntegerVector input, CombinedIntegerVector child, int index) { 48 48 int max = child.Bounds[index % child.Bounds.Rows, 1] - 1; 49 49 if (child[index].Equals(max)) { 50 child[index] = parent[index];50 child[index] = input[index]; 51 51 } else { 52 52 child[index] = max; -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator/UniformSomePositionManipulator.cs
r9154 r9204 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Data; 25 using HeuristicLab.Encodings.ConditionActionEncoding; 25 26 using HeuristicLab.Parameters; 26 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 28 28 29 namespace HeuristicLab.Encodings.CombinedIntegerVectorEncoding { 29 public class UniformSomePositionManipulator : CombinedIntegerVectorManipulator {30 public class UniformSomePositionManipulator : CombinedIntegerVectorManipulator, IProbabilityMutatorOperator { 30 31 31 32 public IValueLookupParameter<PercentValue> ProbabilityParameter { … … 50 51 } 51 52 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); 54 55 } 55 56 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); 59 60 } 60 61 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) { 62 63 int conditionLength = child.Length - child.ActionLength; 63 64 for (int index = 0; index < child.Length - child.ActionLength; index++) { 64 65 if (random.NextDouble() < probability) { 65 child = UniformOnePositionInConditionManipulator.Manipulate( parent, child, index);66 child = UniformOnePositionInConditionManipulator.Manipulate(input, child, index); 66 67 } 67 68 } … … 69 70 } 70 71 71 public static CombinedIntegerVector ManipulateAction(IRandom random, CombinedIntegerVector parent, CombinedIntegerVectorchild, double probability, IItemSet<CombinedIntegerVector> possibleActions) {72 public static CombinedIntegerVector ManipulateAction(IRandom random, CombinedIntegerVector child, double probability, IItemSet<CombinedIntegerVector> possibleActions) { 72 73 if (child.ActionLength > 0 && random.NextDouble() < probability) { 73 UniformActionManipulator.Manipulate(random, parent,child, possibleActions);74 UniformActionManipulator.Manipulate(random, child, possibleActions); 74 75 } 75 76 return child;
Note: See TracChangeset
for help on using the changeset viewer.