Changeset 9110 for branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering
- Timestamp:
- 01/04/13 20:46:18 (12 years ago)
- Location:
- branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering/CoveringOperator.cs
r9105 r9110 101 101 throw new ArgumentException("More classifiers with unique actions shall be created than unique actions are available."); 102 102 } 103 if (count > 0) { 104 CurrentPopulationSizeParameter.ActualValue.Value += count; 103 105 104 CurrentPopulationSizeParameter.ActualValue.Value += count; 106 int current = CurrentScope.SubScopes.Count; 107 for (int i = 0; i < count; i++) { 108 CurrentScope.SubScopes.Add(new Scope((current + i).ToString())); 109 } 105 110 106 int current = CurrentScope.SubScopes.Count; 107 for (int i = 0; i < count; i++) { 108 CurrentScope.SubScopes.Add(new Scope((current + i).ToString())); 111 creator.ActionParameter.ActualName = "Action"; 112 OperationCollection variableCreation = new OperationCollection() { Parallel = parallel }; 113 OperationCollection creation = new OperationCollection(); 114 OperationCollection evaluation = new OperationCollection() { Parallel = parallel }; 115 for (int i = 0; i < count; i++) { 116 VariableCreator variableCreator = new VariableCreator(); 117 int pos = RandomParameter.ActualValue.Next(clone.Count); 118 IClassifier action = clone.ElementAt(pos); 119 clone.Remove(action); 120 variableCreator.CollectedValues.Add(new ValueParameter<IClassifier>("Action", action)); 121 variableCreation.Add(ExecutionContext.CreateOperation(variableCreator, CurrentScope.SubScopes[current + i])); 122 creation.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[current + i])); 123 evaluation.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[current + i])); 124 } 125 OperationCollection next = new OperationCollection(); 126 next.Add(variableCreation); 127 next.Add(creation); 128 next.Add(evaluation); 129 next.Add(base.Apply()); 130 return next; 131 } else { 132 return base.Apply(); 109 133 } 110 111 creator.ActionParameter.ActualName = "Action";112 OperationCollection variableCreation = new OperationCollection() { Parallel = parallel };113 OperationCollection creation = new OperationCollection();114 OperationCollection evaluation = new OperationCollection() { Parallel = parallel };115 for (int i = 0; i < count; i++) {116 VariableCreator variableCreator = new VariableCreator();117 int pos = RandomParameter.ActualValue.Next(clone.Count);118 IClassifier action = clone.ElementAt(pos);119 clone.Remove(action);120 variableCreator.CollectedValues.Add(new ValueParameter<IClassifier>("Action", action));121 variableCreation.Add(ExecutionContext.CreateOperation(variableCreator, CurrentScope.SubScopes[current + i]));122 creation.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[current + i]));123 evaluation.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[current + i]));124 }125 OperationCollection next = new OperationCollection();126 next.Add(variableCreation);127 next.Add(creation);128 next.Add(evaluation);129 next.Add(base.Apply());130 return next;131 134 } 132 135 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.ConditionActionEncoding/3.3/Covering/DoDeletionBeforeCovering.cs
r9105 r9110 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 33 34 34 35 #region Parameter Properties 36 public ILookupParameter<ItemArray<IClassifier>> ClassifiersParameter { 37 get { return (ILookupParameter<ItemArray<IClassifier>>)Parameters["Classifiers"]; } 38 } 39 public ILookupParameter<ItemArray<BoolValue>> MatchConditionParameter { 40 get { return (ILookupParameter<ItemArray<BoolValue>>)Parameters["MatchCondition"]; } 41 } 35 42 public ILookupParameter<IntValue> MinimalNumberOfUniqueActionsParameter { 36 43 get { return (ILookupParameter<IntValue>)Parameters["MinimalNumberOfUniqueActions"]; } 37 }38 public ILookupParameter<IntValue> NumberOfUniqueActionsParameter {39 get { return (ILookupParameter<IntValue>)Parameters["NumberOfUniqueActions"]; }40 44 } 41 45 public ILookupParameter<IntValue> CurrentPopulationSizeParameter { … … 60 64 public DoDeletionBeforeCoveringOperator() 61 65 : base() { 66 Parameters.Add(new ScopeTreeLookupParameter<IClassifier>("Classifiers")); 67 Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("MatchCondition")); 62 68 Parameters.Add(new LookupParameter<IntValue>("MinimalNumberOfUniqueActions")); 63 Parameters.Add(new LookupParameter<IntValue>("NumberOfUniqueActions"));64 69 Parameters.Add(new LookupParameter<IntValue>("CurrentPopulationSize")); 65 70 Parameters.Add(new LookupParameter<IntValue>("PopulationSize")); … … 72 77 73 78 public override IOperation Apply() { 79 IItemSet<IClassifier> uniqueActions = new ItemSet<IClassifier>(); 80 var classifiers = ClassifiersParameter.ActualValue; 81 var matchcondition = MatchConditionParameter.ActualValue; 82 83 if (classifiers.Length != matchcondition.Length) { 84 throw new ArgumentException("Number of classifiers is not equal to the number of 'MatchCondition' variables."); 85 } 86 87 for (int i = 0; i < classifiers.Length; i++) { 88 if (matchcondition[i].Value) { 89 uniqueActions.Add(classifiers[i].Action); 90 } 91 } 92 74 93 int populationAfterCovering = MinimalNumberOfUniqueActionsParameter.ActualValue.Value 75 - NumberOfUniqueActionsParameter.ActualValue.Value94 - uniqueActions.Count 76 95 + CurrentPopulationSizeParameter.ActualValue.Value; 77 96 BoolValue doDeletion = new BoolValue(populationAfterCovering > PopulationSizeParameter.ActualValue.Value);
Note: See TracChangeset
for help on using the changeset viewer.