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