Changeset 10644 for stable/HeuristicLab.Selection
- Timestamp:
- 03/21/14 14:59:41 (11 years ago)
- Location:
- stable
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 10639,10643
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Selection/3.3/OffspringSelector.cs
r9456 r10644 57 57 } 58 58 59 public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter { 60 get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; } 61 } 62 59 63 public IOperator OffspringCreator { 60 64 get { return OffspringCreatorParameter.Value; } … … 64 68 [StorableConstructor] 65 69 protected OffspringSelector(bool deserializing) : base(deserializing) { } 70 [StorableHook(HookType.AfterDeserialization)] 71 private void AfterDeserialization() { 72 // BackwardsCompatibility3.3 73 #region Backwards compatible code, remove with 3.4 74 if (Parameters.ContainsKey("FillPopulationWithParents") && Parameters["FillPopulationWithParents"] is FixedValueParameter<BoolValue>) 75 Parameters.Remove("FillPopulationWithParents"); 76 if (!Parameters.ContainsKey("FillPopulationWithParents")) 77 Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers.")); 78 #endregion 79 } 80 66 81 protected OffspringSelector(OffspringSelector original, Cloner cloner) : base(original, cloner) { } 67 82 public override IDeepCloneable Clone(Cloner cloner) { … … 78 93 Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was more successful than its parents.", 2)); 79 94 Parameters.Add(new OperatorParameter("OffspringCreator", "The operator used to create new offspring.")); 95 Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.")); 80 96 } 81 97 … … 83 99 double maxSelPress = MaximumSelectionPressureParameter.ActualValue.Value; 84 100 double successRatio = SuccessRatioParameter.ActualValue.Value; 101 bool fillPopulationWithParents = FillPopulationWithParentsParameter.ActualValue.Value; 85 102 IScope scope = ExecutionContext.Scope; 86 103 IScope parents = scope.SubScopes[0]; … … 133 150 successfulOffspringAdded++; 134 151 } else if (worseOffspringNeeded > 0 || tmpSelPress >= maxSelPress) { 135 IScope currentOffspring = offspring.SubScopes[i]; 136 offspring.SubScopes.Remove(currentOffspring); 137 i--; 152 IScope currentOffspring; 153 if (!fillPopulationWithParents || worseOffspringNeeded > 0) { 154 currentOffspring = offspring.SubScopes[i]; 155 offspring.SubScopes.Remove(currentOffspring); 156 i--; 157 worseOffspringNeeded--; 158 } else { 159 currentOffspring = parents.SubScopes[i]; 160 } 138 161 population.Add(currentOffspring); 139 worseOffspringNeeded--;140 162 } 141 163 tmpSelPress += tmpSelPressInc;
Note: See TracChangeset
for help on using the changeset viewer.