Changeset 9673 for stable/HeuristicLab.Algorithms.GeneticAlgorithm
- Timestamp:
- 06/28/13 16:56:21 (11 years ago)
- Location:
- stable
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 9553-9555,9569,9591-9592,9618
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs
r9456 r9673 79 79 get { return (ValueParameter<IntValue>)Parameters["Elites"]; } 80 80 } 81 private IFixedValueParameter<BoolValue> ReevaluateElitesParameter { 82 get { return (IFixedValueParameter<BoolValue>)Parameters["ReevaluateElites"]; } 83 } 81 84 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 82 85 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } … … 119 122 get { return ElitesParameter.Value; } 120 123 set { ElitesParameter.Value = value; } 124 } 125 public bool ReevaluteElites { 126 get { return ReevaluateElitesParameter.Value.Value; } 127 set { ReevaluateElitesParameter.Value.Value = value; } 121 128 } 122 129 public MultiAnalyzer Analyzer { … … 151 158 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 152 159 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 160 Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", new BoolValue(false)) { Hidden = true }); 153 161 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer())); 154 162 Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000))); … … 182 190 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 183 191 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 192 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 184 193 mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name; 185 194 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; … … 207 216 [StorableHook(HookType.AfterDeserialization)] 208 217 private void AfterDeserialization() { 218 // BackwardsCompatibility3.3 219 #region Backwards compatible code, remove with 3.4 220 if (!Parameters.ContainsKey("ReevaluateElites")) { 221 Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", (BoolValue)new BoolValue(false).AsReadOnly()) { Hidden = true }); 222 } 223 #endregion 224 209 225 Initialize(); 210 226 } 227 228 211 229 212 230 private GeneticAlgorithm(GeneticAlgorithm original, Cloner cloner) -
stable/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs
r9456 r9673 63 63 public ValueLookupParameter<IntValue> ElitesParameter { 64 64 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 65 } 66 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 67 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 65 68 } 66 69 public ValueLookupParameter<IntValue> MaximumGenerationsParameter { … … 112 115 Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization.")); 113 116 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 117 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 114 118 Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.")); 115 119 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); … … 143 147 Placeholder analyzer2 = new Placeholder(); 144 148 ConditionalBranch conditionalBranch = new ConditionalBranch(); 149 ConditionalBranch reevaluateElitesBranch = new ConditionalBranch(); 145 150 146 151 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class GeneticAlgorithm expects this to be called Generations … … 193 198 194 199 conditionalBranch.ConditionParameter.ActualName = "Terminate"; 200 201 reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites"; 202 reevaluateElitesBranch.Name = "Reevaluate elites ?"; 195 203 #endregion 196 204 … … 221 229 subScopesProcessor2.Successor = mergingReducer; 222 230 bestSelector.Successor = rightReducer; 223 rightReducer.Successor = null; 231 rightReducer.Successor = reevaluateElitesBranch; 232 reevaluateElitesBranch.TrueBranch = uniformSubScopesProcessor2; 233 reevaluateElitesBranch.FalseBranch = null; 234 reevaluateElitesBranch.Successor = null; 224 235 mergingReducer.Successor = intCounter; 225 236 intCounter.Successor = comparator; … … 232 243 } 233 244 245 [StorableHook(HookType.AfterDeserialization)] 246 private void AfterDeserialization() { 247 // BackwardsCompatibility3.3 248 #region Backwards compatible code, remove with 3.4 249 if (!Parameters.ContainsKey("ReevaluateElites")) { 250 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 251 } 252 #endregion 253 } 254 234 255 public override IOperation Apply() { 235 256 if (CrossoverParameter.ActualValue == null) -
stable/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
r9456 r9673 100 100 get { return (ValueParameter<IntValue>)Parameters["Elites"]; } 101 101 } 102 private IFixedValueParameter<BoolValue> ReevaluateElitesParameter { 103 get { return (IFixedValueParameter<BoolValue>)Parameters["ReevaluateElites"]; } 104 } 102 105 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 103 106 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } … … 168 171 get { return ElitesParameter.Value; } 169 172 set { ElitesParameter.Value = value; } 173 } 174 public bool ReevaluteElites { 175 get { return ReevaluateElitesParameter.Value.Value; } 176 set { ReevaluateElitesParameter.Value.Value = value; } 170 177 } 171 178 public MultiAnalyzer Analyzer { … … 199 206 [StorableHook(HookType.AfterDeserialization)] 200 207 private void AfterDeserialization() { 208 // BackwardsCompatibility3.3 209 #region Backwards compatible code, remove with 3.4 210 if (!Parameters.ContainsKey("ReevaluateElites")) { 211 Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", (BoolValue)new BoolValue(false).AsReadOnly()) { Hidden = true }); 212 } 213 #endregion 214 201 215 Initialize(); 202 216 } … … 228 242 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 229 243 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 244 Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", new BoolValue(false)) { Hidden = true }); 230 245 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the islands.", new MultiAnalyzer())); 231 246 Parameters.Add(new ValueParameter<MultiAnalyzer>("IslandAnalyzer", "The operator used to analyze each island.", new MultiAnalyzer())); … … 301 316 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 302 317 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 318 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 303 319 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 304 320 mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name; -
stable/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithmMainLoop.cs
r9456 r9673 91 91 public ValueLookupParameter<IntValue> ElitesParameter { 92 92 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 93 } 94 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 95 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 93 96 } 94 97 public ValueLookupParameter<ResultCollection> ResultsParameter { … … 144 147 Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions.")); 145 148 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 149 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 146 150 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection to store the results.")); 147 151 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to the analyze the islands.")); … … 194 198 Placeholder analyzer2 = new Placeholder(); 195 199 ConditionalBranch generationsTerminationCondition = new ConditionalBranch(); 200 ConditionalBranch reevaluateElitesBranch = new ConditionalBranch(); 196 201 197 202 … … 305 310 generationsTerminationCondition.Name = "Terminate?"; 306 311 generationsTerminationCondition.ConditionParameter.ActualName = "TerminateGenerations"; 312 313 reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites"; 314 reevaluateElitesBranch.Name = "Reevaluate elites ?"; 307 315 #endregion 308 316 … … 345 353 evaluator.Successor = null; 346 354 subScopesCounter.Successor = null; 347 subScopesCounter.Successor = null;348 355 subScopesProcessor2.Operators.Add(bestSelector); 349 356 subScopesProcessor2.Operators.Add(new EmptyOperator()); … … 351 358 mergingReducer.Successor = islandAnalyzer2; 352 359 bestSelector.Successor = rightReducer; 353 rightReducer.Successor = null; 360 rightReducer.Successor = reevaluateElitesBranch; 361 reevaluateElitesBranch.TrueBranch = uniformSubScopesProcessor3; 362 reevaluateElitesBranch.FalseBranch = null; 363 reevaluateElitesBranch.Successor = null; 354 364 islandAnalyzer2.Successor = islandGenerationsCounter; 355 365 islandGenerationsCounter.Successor = checkIslandGenerationsReachedMaximum; … … 369 379 } 370 380 381 [StorableHook(HookType.AfterDeserialization)] 382 private void AfterDeserialization() { 383 // BackwardsCompatibility3.3 384 #region Backwards compatible code, remove with 3.4 385 if (!Parameters.ContainsKey("ReevaluateElites")) { 386 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 387 } 388 #endregion 389 } 390 371 391 public override IOperation Apply() { 372 392 if (CrossoverParameter.ActualValue == null)
Note: See TracChangeset
for help on using the changeset viewer.