Changeset 9569
- Timestamp:
- 06/03/13 14:39:36 (11 years ago)
- Location:
- trunk/sources
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.EvolutionStrategy/3.3/EvolutionStrategyMainLoop.cs
r9456 r9569 61 61 get { return (ValueLookupParameter<BoolValue>)Parameters["PlusSelection"]; } 62 62 } 63 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 64 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 65 } 63 66 public ValueLookupParameter<IntValue> MaximumGenerationsParameter { 64 67 get { return (ValueLookupParameter<IntValue>)Parameters["MaximumGenerations"]; } … … 121 124 Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.")); 122 125 Parameters.Add(new ValueLookupParameter<BoolValue>("PlusSelection", "True for plus selection (elitist population), false for comma selection (non-elitist population).")); 126 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 123 127 Parameters.Add(new ValueLookupParameter<IOperator>("Mutator", "The operator used to mutate solutions.")); 124 128 Parameters.Add(new ValueLookupParameter<IOperator>("Recombinator", "The operator used to cross solutions.")); … … 162 166 Placeholder analyzer2 = new Placeholder(); 163 167 ConditionalBranch conditionalBranch = new ConditionalBranch(); 168 ConditionalBranch reevaluateElitesBranch = new ConditionalBranch(); 169 SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor(); 170 UniformSubScopesProcessor uniformSubScopesProcessor4 = new UniformSubScopesProcessor(); 171 Placeholder evaluator2 = new Placeholder(); 172 SubScopesCounter subScopesCounter2 = new SubScopesCounter(); 173 164 174 165 175 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class EvolutionStrategy expects this to be called Generations … … 235 245 236 246 conditionalBranch.ConditionParameter.ActualName = "Terminate"; 247 248 reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites"; 249 reevaluateElitesBranch.Name = "Reevaluate elites ?"; 250 251 uniformSubScopesProcessor4.Parallel.Value = true; 252 253 evaluator2.Name = "Evaluator (placeholder)"; 254 evaluator2.OperatorParameter.ActualName = EvaluatorParameter.Name; 255 256 subScopesCounter2.Name = "Increment EvaluatedSolutions"; 257 subScopesCounter2.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name; 237 258 #endregion 238 259 … … 266 287 evaluator.Successor = null; 267 288 subScopesCounter.Successor = null; 268 plusOrCommaReplacementBranch.TrueBranch = plusReplacement; 289 290 plusOrCommaReplacementBranch.TrueBranch = reevaluateElitesBranch; 291 reevaluateElitesBranch.TrueBranch = subScopesProcessor2; 292 reevaluateElitesBranch.FalseBranch = null; 293 subScopesProcessor2.Operators.Add(uniformSubScopesProcessor4); 294 subScopesProcessor2.Operators.Add(new EmptyOperator()); 295 uniformSubScopesProcessor4.Operator = evaluator2; 296 uniformSubScopesProcessor4.Successor = subScopesCounter2; 297 subScopesCounter2.Successor = null; 298 reevaluateElitesBranch.Successor = plusReplacement; 299 269 300 plusOrCommaReplacementBranch.FalseBranch = commaReplacement; 270 301 plusOrCommaReplacementBranch.Successor = bestSelector; -
trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
r9456 r9569 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 if (!Parameters.ContainsKey("ReevaluateElites")) { 209 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 }); 210 } 201 211 Initialize(); 202 212 } … … 228 238 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 229 239 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 240 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 241 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the islands.", new MultiAnalyzer())); 231 242 Parameters.Add(new ValueParameter<MultiAnalyzer>("IslandAnalyzer", "The operator used to analyze each island.", new MultiAnalyzer())); … … 301 312 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 302 313 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 314 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 303 315 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 304 316 mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithmMainLoop.cs
r9456 r9569 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 if (!Parameters.ContainsKey("ReevaluateElites")) { 384 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 385 } 386 } 387 371 388 public override IOperation Apply() { 372 389 if (CrossoverParameter.ActualValue == null) -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs
r9456 r9569 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 ValueLookupParameter<DoubleValue> SuccessRatioParameter { 103 106 get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; } … … 192 195 get { return ElitesParameter.Value; } 193 196 set { ElitesParameter.Value = value; } 197 } 198 public bool ReevaluteElites { 199 get { return ReevaluateElitesParameter.Value.Value; } 200 set { ReevaluateElitesParameter.Value.Value = value; } 194 201 } 195 202 private DoubleValue SuccessRatio { … … 260 267 if (successfulOffspringAnalyzer == null) 261 268 successfulOffspringAnalyzer = new SuccessfulOffspringAnalyzer(); 269 if (!Parameters.ContainsKey("ReevaluateElites")) { 270 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 }); 271 } 262 272 #endregion 263 273 … … 293 303 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 294 304 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 305 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 }); 295 306 Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved.", new DoubleValue(1))); 296 307 Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start).", new DoubleValue(0))); … … 355 366 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 356 367 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 368 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 357 369 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 358 370 mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithmMainLoop.cs
r9456 r9569 90 90 public ValueLookupParameter<IntValue> ElitesParameter { 91 91 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 92 } 93 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 94 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 92 95 } 93 96 public ValueLookupParameter<ResultCollection> ResultsParameter { … … 158 161 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.")); 159 162 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 163 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 160 164 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection to store the results.")); 161 165 Parameters.Add(new ValueLookupParameter<IOperator>("Visualizer", "The operator used to visualize solutions.")); … … 248 252 mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio"; 249 253 mainOperator.ElitesParameter.ActualName = ElitesParameter.Name; 254 mainOperator.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 250 255 mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name; 251 256 mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name; … … 414 419 } 415 420 421 [StorableHook(HookType.AfterDeserialization)] 422 private void AfterDeserialization() { 423 if (!Parameters.ContainsKey("ReevaluateElites")) { 424 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 425 } 426 } 427 416 428 public override IOperation Apply() { 417 429 if (CrossoverParameter.ActualValue == null) -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
r9456 r9569 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<IntValue> MaximumGenerationsParameter { 82 85 get { return (ValueParameter<IntValue>)Parameters["MaximumGenerations"]; } … … 143 146 get { return ElitesParameter.Value; } 144 147 set { ElitesParameter.Value = value; } 148 } 149 public bool ReevaluteElites { 150 get { return ReevaluateElitesParameter.Value.Value; } 151 set { ReevaluateElitesParameter.Value.Value = value; } 145 152 } 146 153 public IntValue MaximumGenerations { … … 208 215 if (successfulOffspringAnalyzer == null) 209 216 successfulOffspringAnalyzer = new SuccessfulOffspringAnalyzer(); 217 if (!Parameters.ContainsKey("ReevaluateElites")) { 218 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 }); 219 } 210 220 #endregion 211 221 … … 232 242 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 233 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 }); 234 245 Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000))); 235 246 Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved.", new DoubleValue(1))); … … 274 285 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 275 286 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 287 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 276 288 mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions"; 277 289 mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs
r9456 r9569 63 63 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 64 64 } 65 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 66 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 67 } 65 68 public ValueLookupParameter<IntValue> MaximumGenerationsParameter { 66 69 get { return (ValueLookupParameter<IntValue>)Parameters["MaximumGenerations"]; } … … 106 109 : base() { 107 110 Initialize(); 111 } 112 113 [StorableHook(HookType.AfterDeserialization)] 114 private void AfterDeserialization() { 115 if (!Parameters.ContainsKey("ReevaluateElites")) { 116 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 117 } 108 118 } 109 119 … … 120 130 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.")); 121 131 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 132 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 122 133 Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.")); 123 134 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); … … 170 181 mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio"; 171 182 mainOperator.ElitesParameter.ActualName = ElitesParameter.Name; 183 mainOperator.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 172 184 mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name; 173 185 mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainOperator.cs
r9456 r9569 67 67 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 68 68 } 69 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 70 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 71 } 69 72 public LookupParameter<DoubleValue> ComparisonFactorParameter { 70 73 get { return (LookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; } … … 98 101 : base() { 99 102 Initialize(); 103 } 104 105 [StorableHook(HookType.AfterDeserialization)] 106 private void AfterDeserialization() { 107 if (!Parameters.ContainsKey("ReevaluateElites")) { 108 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 109 } 100 110 } 101 111 … … 112 122 Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions.")); 113 123 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 124 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 114 125 Parameters.Add(new LookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor is used to determine whether the offspring should be compared to the better parent, the worse parent or a quality value linearly interpolated between them. It is in the range [0;1].")); 115 126 Parameters.Add(new LookupParameter<DoubleValue>("CurrentSuccessRatio", "The current success ratio.")); … … 159 170 LeftReducer leftReducer = new LeftReducer(); 160 171 MergingReducer mergingReducer2 = new MergingReducer(); 172 ConditionalBranch reevaluateElitesBranch = new ConditionalBranch(); 173 UniformSubScopesProcessor uniformSubScopesProcessor7 = new UniformSubScopesProcessor(); 174 Placeholder evaluator4 = new Placeholder(); 175 SubScopesCounter subScopesCounter4 = new SubScopesCounter(); 161 176 162 177 selector.Name = "Selector (placeholder)"; … … 253 268 worstSelector.NumberOfSelectedSubScopesParameter.ActualName = ElitesParameter.Name; 254 269 worstSelector.QualityParameter.ActualName = QualityParameter.Name; 270 271 reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites"; 272 reevaluateElitesBranch.Name = "Reevaluate elites ?"; 273 274 uniformSubScopesProcessor7.Parallel.Value = true; 275 276 evaluator4.Name = "Evaluator (placeholder)"; 277 evaluator4.OperatorParameter.ActualName = EvaluatorParameter.Name; 278 279 subScopesCounter4.Name = "Increment EvaluatedSolutions"; 280 subScopesCounter4.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name; 255 281 #endregion 256 282 … … 310 336 subScopesProcessor3.Successor = mergingReducer2; 311 337 bestSelector.Successor = rightReducer; 312 rightReducer.Successor = null; 338 rightReducer.Successor = reevaluateElitesBranch; 339 reevaluateElitesBranch.TrueBranch = uniformSubScopesProcessor7; 340 uniformSubScopesProcessor7.Operator = evaluator4; 341 uniformSubScopesProcessor7.Successor = subScopesCounter4; 342 subScopesCounter4.Successor = null; 343 reevaluateElitesBranch.FalseBranch = null; 344 reevaluateElitesBranch.Successor = null; 313 345 worstSelector.Successor = leftReducer; 314 346 leftReducer.Successor = null; -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs
r9456 r9569 85 85 get { return (ValueParameter<IntValue>)Parameters["Elites"]; } 86 86 } 87 private IFixedValueParameter<BoolValue> ReevaluateElitesParameter { 88 get { return (IFixedValueParameter<BoolValue>)Parameters["ReevaluateElites"]; } 89 } 87 90 private ValueLookupParameter<DoubleValue> SuccessRatioParameter { 88 91 get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; } … … 160 163 get { return ElitesParameter.Value; } 161 164 set { ElitesParameter.Value = value; } 165 } 166 public bool ReevaluteElites { 167 get { return ReevaluateElitesParameter.Value.Value; } 168 set { ReevaluateElitesParameter.Value.Value = value; } 162 169 } 163 170 public DoubleValue SuccessRatio { … … 236 243 if (successfulOffspringAnalyzer == null) 237 244 successfulOffspringAnalyzer = new SuccessfulOffspringAnalyzer(); 245 if (!Parameters.ContainsKey("ReevaluateElites")) { 246 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 }); 247 } 238 248 #endregion 239 249 … … 264 274 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 265 275 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 276 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 }); 266 277 Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved.", new DoubleValue(1))); 267 278 Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start).", new DoubleValue(0.3))); … … 321 332 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 322 333 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 334 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 323 335 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 324 336 mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASAMainLoop.cs
r9456 r9569 73 73 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 74 74 } 75 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 76 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 77 } 75 78 public ValueLookupParameter<ResultCollection> ResultsParameter { 76 79 get { return (ValueLookupParameter<ResultCollection>)Parameters["Results"]; } … … 134 137 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.")); 135 138 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 139 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 136 140 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection to store the results.")); 137 141 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to the analyze the villages.")); … … 236 240 mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio"; 237 241 mainOperator.ElitesParameter.ActualName = ElitesParameter.Name; 242 mainOperator.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 238 243 mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name; 239 244 mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name; … … 424 429 } 425 430 431 [StorableHook(HookType.AfterDeserialization)] 432 private void AfterDeserialization() { 433 if (!Parameters.ContainsKey("ReevaluateElites")) { 434 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 435 } 436 } 437 426 438 public override IOperation Apply() { 427 439 if (CrossoverParameter.ActualValue == null) -
trunk/sources/HeuristicLab.Algorithms.RAPGA/3.3/RAPGA.cs
r9456 r9569 94 94 get { return (ValueParameter<IntValue>)Parameters["Elites"]; } 95 95 } 96 private IFixedValueParameter<BoolValue> ReevaluateElitesParameter { 97 get { return (IFixedValueParameter<BoolValue>)Parameters["ReevaluateElites"]; } 98 } 96 99 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 97 100 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } … … 157 160 get { return ElitesParameter.Value; } 158 161 set { ElitesParameter.Value = value; } 162 } 163 public bool ReevaluteElites { 164 get { return ReevaluateElitesParameter.Value.Value; } 165 set { ReevaluateElitesParameter.Value.Value = value; } 159 166 } 160 167 public MultiAnalyzer Analyzer { … … 192 199 private RAPGA(bool deserializing) : base(deserializing) { } 193 200 [StorableHook(HookType.AfterDeserialization)] 194 private void AfterDeserialization() { Initialize(); } 201 private void AfterDeserialization() { 202 if (!Parameters.ContainsKey("ReevaluateElites")) { 203 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 }); 204 } 205 Initialize(); 206 } 195 207 private RAPGA(RAPGA original, Cloner cloner) 196 208 : base(original, cloner) { … … 216 228 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.")); 217 229 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 230 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 }); 218 231 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer())); 219 232 Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000))); … … 248 261 mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 249 262 mainLoop.ElitesParameter.ActualName = ElitesParameter.Name; 263 mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name; 250 264 mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name; 251 265 mainLoop.MutatorParameter.ActualName = MutatorParameter.Name; -
trunk/sources/HeuristicLab.Algorithms.RAPGA/3.3/RAPGAMainLoop.cs
r9456 r9569 65 65 get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; } 66 66 } 67 public IValueLookupParameter<BoolValue> ReevaluateElitesParameter { 68 get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; } 69 } 67 70 public ValueLookupParameter<IntValue> MaximumGenerationsParameter { 68 71 get { return (ValueLookupParameter<IntValue>)Parameters["MaximumGenerations"]; } … … 129 132 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.")); 130 133 Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.")); 134 Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)")); 131 135 Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.")); 132 136 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); … … 190 194 Assigner assigner4 = new Assigner(); 191 195 Assigner assigner5 = new Assigner(); 196 ConditionalBranch reevaluateElitesBranch = new ConditionalBranch(); 197 UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor(); 198 Placeholder evaluator2 = new Placeholder(); 199 SubScopesCounter subScopesCounter4 = new SubScopesCounter(); 192 200 193 201 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class RAPGA expects this to be called Generations … … 338 346 assigner5.LeftSideParameter.ActualName = "OffspringList"; 339 347 assigner5.RightSideParameter.Value = new ScopeList(); 348 349 reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites"; 350 reevaluateElitesBranch.Name = "Reevaluate elites ?"; 351 352 uniformSubScopesProcessor2.Parallel.Value = true; 353 354 evaluator2.Name = "Evaluator (placeholder)"; 355 evaluator2.OperatorParameter.ActualName = EvaluatorParameter.Name; 356 357 subScopesCounter4.Name = "Increment EvaluatedSolutions"; 358 subScopesCounter4.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name; 340 359 #endregion 341 360 … … 378 397 subScopesProcessor2.Successor = mergingReducer; 379 398 bestSelector.Successor = rightReducer2; 380 rightReducer2.Successor = null; 399 rightReducer2.Successor = reevaluateElitesBranch; 400 reevaluateElitesBranch.TrueBranch = uniformSubScopesProcessor2; 401 uniformSubScopesProcessor2.Operator = evaluator2; 402 uniformSubScopesProcessor2.Successor = subScopesCounter4; 403 evaluator2.Successor = null; 404 subScopesCounter4.Successor = null; 405 reevaluateElitesBranch.FalseBranch = null; 406 reevaluateElitesBranch.Successor = null; 381 407 scopeCleaner.Successor = scopeRestorer; 382 408 mergingReducer.Successor = intCounter3;
Note: See TracChangeset
for help on using the changeset viewer.