Changeset 9204 for branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator
- Timestamp:
- 02/04/13 16:16:38 (12 years ago)
- Location:
- branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Manipulator
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
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.