Changeset 10639 for trunk/sources/HeuristicLab.Selection
- Timestamp:
- 03/19/14 16:47:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Selection/3.3/OffspringSelector.cs
r9456 r10639 57 57 } 58 58 59 public FixedValueParameter<BoolValue> FillPopulationWithParentsParameter { 60 get { return (FixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; } 61 } 62 59 63 public IOperator OffspringCreator { 60 64 get { return OffspringCreatorParameter.Value; } … … 62 66 } 63 67 68 public bool FillPopulationWithParents { 69 get { return FillPopulationWithParentsParameter.Value.Value; } 70 set { FillPopulationWithParentsParameter.Value.Value = value; } 71 } 72 64 73 [StorableConstructor] 65 74 protected OffspringSelector(bool deserializing) : base(deserializing) { } 75 [StorableHook(HookType.AfterDeserialization)] 76 private void AfterDeserialization() { 77 // BackwardsCompatibility3.3 78 #region Backwards compatible code, remove with 3.4 79 if (!Parameters.ContainsKey("FillPopulationWithParents")) 80 Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers.", new BoolValue(false))); 81 #endregion 82 } 83 66 84 protected OffspringSelector(OffspringSelector original, Cloner cloner) : base(original, cloner) { } 67 85 public override IDeepCloneable Clone(Cloner cloner) { … … 78 96 Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was more successful than its parents.", 2)); 79 97 Parameters.Add(new OperatorParameter("OffspringCreator", "The operator used to create new offspring.")); 98 Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers.", new BoolValue(false))); 80 99 } 81 100 … … 133 152 successfulOffspringAdded++; 134 153 } else if (worseOffspringNeeded > 0 || tmpSelPress >= maxSelPress) { 135 IScope currentOffspring = offspring.SubScopes[i]; 136 offspring.SubScopes.Remove(currentOffspring); 137 i--; 154 IScope currentOffspring; 155 if (!FillPopulationWithParents || worseOffspringNeeded > 0) { 156 currentOffspring = offspring.SubScopes[i]; 157 offspring.SubScopes.Remove(currentOffspring); 158 i--; 159 worseOffspringNeeded--; 160 } else { 161 currentOffspring = parents.SubScopes[i]; 162 } 138 163 population.Add(currentOffspring); 139 worseOffspringNeeded--;140 164 } 141 165 tmpSelPress += tmpSelPressInc;
Note: See TracChangeset
for help on using the changeset viewer.