Changeset 12402 for branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
- Timestamp:
- 05/26/15 16:15:54 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
r12368 r12402 116 116 get { return (IFixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; } 117 117 } 118 private IValueParameter<MultiTerminat ionCriterion> TerminationCriteriaParameter {119 get { return (IValueParameter<MultiTerminat ionCriterion>)Parameters["TerminationCriteria"]; }118 private IValueParameter<MultiTerminator> TerminatorsParameter { 119 get { return (IValueParameter<MultiTerminator>)Parameters["Terminators"]; } 120 120 } 121 121 #endregion … … 203 203 set { FillPopulationWithParentsParameter.Value.Value = value; } 204 204 } 205 private MultiTerminat ionCriterion TerminationCriteria{206 get { return Terminat ionCriteriaParameter.Value; }205 private MultiTerminator Terminators { 206 get { return TerminatorsParameter.Value; } 207 207 } 208 208 private RandomCreator RandomCreator { … … 222 222 private SuccessfulOffspringAnalyzer successfulOffspringAnalyzer; 223 223 [Storable] 224 private ComparisonTerminat ionCriterion<IntValue> maximumGenerationsTerminationCriterion;225 [Storable] 226 private ComparisonTerminat ionCriterion<IntValue> maximumEvaluatedSolutionsTerminationCriterion;227 [Storable] 228 private ComparisonTerminat ionCriterion<DoubleValue> maximumSelectionPressureTerminationCriterion;229 [Storable] 230 private ComparisonTerminat ionCriterion<DoubleValue> qualityTerminationCriterion;231 [Storable] 232 private ExecutionTimeTerminat ionCriterion executionTimeTerminationCriterion;224 private ComparisonTerminator<IntValue> generationsTerminator; 225 [Storable] 226 private ComparisonTerminator<IntValue> evaluatedSolutionsTerminator; 227 [Storable] 228 private ComparisonTerminator<DoubleValue> selectionPressureTerminator; 229 [Storable] 230 private ComparisonTerminator<DoubleValue> qualityTerminator; 231 [Storable] 232 private ExecutionTimeTerminator executionTimeTerminator; 233 233 #endregion 234 234 … … 255 255 selectionPressureAnalyzer = cloner.Clone(original.selectionPressureAnalyzer); 256 256 successfulOffspringAnalyzer = cloner.Clone(original.successfulOffspringAnalyzer); 257 maximumGenerationsTerminationCriterion = cloner.Clone(original.maximumGenerationsTerminationCriterion);258 maximumEvaluatedSolutionsTerminationCriterion = cloner.Clone(original.maximumEvaluatedSolutionsTerminationCriterion);259 maximumSelectionPressureTerminationCriterion = cloner.Clone(original.maximumSelectionPressureTerminationCriterion);260 qualityTerminat ionCriterion = cloner.Clone(original.qualityTerminationCriterion);261 executionTimeTerminat ionCriterion = cloner.Clone(original.executionTimeTerminationCriterion);257 generationsTerminator = cloner.Clone(original.generationsTerminator); 258 evaluatedSolutionsTerminator = cloner.Clone(original.evaluatedSolutionsTerminator); 259 selectionPressureTerminator = cloner.Clone(original.selectionPressureTerminator); 260 qualityTerminator = cloner.Clone(original.qualityTerminator); 261 executionTimeTerminator = cloner.Clone(original.executionTimeTerminator); 262 262 Initialize(); 263 263 } … … 287 287 Parameters.Add(new ValueParameter<IntValue>("MaximumEvaluatedSolutions", "The maximum number of evaluated solutions (approximately).", new IntValue(int.MaxValue))); 288 288 Parameters.Add(new FixedValueParameter<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.", new BoolValue(false)) { Hidden = true }); 289 Parameters.Add(new ValueParameter<MultiTerminat ionCriterion>("TerminationCriteria", "The termination criteria which sould be checked.", new MultiTerminationCriterion()));289 Parameters.Add(new ValueParameter<MultiTerminator>("Terminators", "The termination criteria which sould be checked.", new MultiTerminator())); 290 290 291 291 RandomCreator randomCreator = new RandomCreator(); … … 351 351 UpdateAnalyzers(); 352 352 353 maximumGenerationsTerminationCriterion = new ComparisonTerminationCriterion<IntValue>("Generations", new IntValue(50), ComparisonType.GreaterOrEqual) { Name = "MaximumGenerations" };354 maximumEvaluatedSolutionsTerminationCriterion = new ComparisonTerminationCriterion<IntValue>("EvaluatedSolutions", "MaximumEvaluatedSolutions", ComparisonType.GreaterOrEqual) { Name = "MaximumEvaluations" };355 maximumSelectionPressureTerminationCriterion = new ComparisonTerminationCriterion<DoubleValue>("SelectionPressure", "MaximumSelectionPressure", ComparisonType.GreaterOrEqual) { Name = "MaximumSelection Pressure" };356 qualityTerminat ionCriterion = new ComparisonTerminationCriterion<DoubleValue>() { Name = "Maximum/MinimumQuality" };357 executionTimeTerminat ionCriterion = new ExecutionTimeTerminationCriterion(this, TimeSpan.FromMinutes(5)) { Name = "MaximumExecution Time" };358 ParameterizeTerminat ionCriteria();359 UpdateTerminat ionCriteria();353 generationsTerminator = new ComparisonTerminator<IntValue>("Generations", new IntValue(50), ComparisonType.GreaterOrEqual) { Name = "Generations" }; 354 evaluatedSolutionsTerminator = new ComparisonTerminator<IntValue>("EvaluatedSolutions", "MaximumEvaluatedSolutions", ComparisonType.GreaterOrEqual) { Name = "Evaluations" }; 355 selectionPressureTerminator = new ComparisonTerminator<DoubleValue>("SelectionPressure", "MaximumSelectionPressure", ComparisonType.GreaterOrEqual) { Name = "Selection Pressure" }; 356 qualityTerminator = new ComparisonTerminator<DoubleValue>() { Name = "Quality" }; 357 executionTimeTerminator = new ExecutionTimeTerminator(this, TimeSpan.FromMinutes(5)) { Name = "Execution Time" }; 358 ParameterizeTerminators(); 359 UpdateTerminators(); 360 360 361 361 Initialize(); … … 377 377 ParameterizeSelectors(); 378 378 ParameterizeAnalyzers(); 379 ParameterizeTerminat ionCriteria();379 ParameterizeTerminators(); 380 380 ParameterizeIterationBasedOperators(); 381 381 UpdateCrossovers(); 382 382 UpdateMutators(); 383 383 UpdateAnalyzers(); 384 UpdateTerminat ionCriteria();384 UpdateTerminators(); 385 385 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 386 386 base.OnProblemChanged(); … … 407 407 UpdateMutators(); 408 408 UpdateAnalyzers(); 409 UpdateTerminat ionCriteria();409 UpdateTerminators(); 410 410 base.Problem_OperatorsChanged(sender, e); 411 411 } … … 485 485 } 486 486 } 487 private void ParameterizeTerminat ionCriteria() {487 private void ParameterizeTerminators() { 488 488 if (Problem != null) { 489 489 bool maximization = ((BoolValue)Problem.MaximizationParameter.ActualValue).Value; 490 qualityTerminationCriterion.Name = maximization ? "Maximum Quality" : "Minimum Quality"; 491 qualityTerminationCriterion.Comparison = new Comparison(maximization ? ComparisonType.GreaterOrEqual : ComparisonType.LessOrEqual); 492 qualityTerminationCriterion.ValueParameter.ActualName = qualityAnalyzer.CurrentBestQualityParameter.Name; 493 qualityTerminationCriterion.ThresholdParameter.Value = new DoubleValue(maximization ? double.MaxValue : double.MinValue); 490 qualityTerminator.Comparison = new Comparison(maximization ? ComparisonType.GreaterOrEqual : ComparisonType.LessOrEqual); 491 qualityTerminator.ValueParameter.ActualName = qualityAnalyzer.CurrentBestQualityParameter.Name; 492 qualityTerminator.ThresholdParameter.Value = new DoubleValue(maximization ? double.MaxValue : double.MinValue); 494 493 } 495 494 } … … 551 550 Analyzer.Operators.Add(successfulOffspringAnalyzer, successfulOffspringAnalyzer.EnabledByDefault); 552 551 } 553 private void UpdateTerminat ionCriteria() {554 Terminat ionCriteria.Operators.Clear();555 if (Problem != null) { 556 foreach (var terminat ionCriterion in Problem.Operators.OfType<ITerminationCriterion>())557 Terminat ionCriteria.Operators.Add(terminationCriterion);558 } 559 Terminat ionCriteria.Operators.Add(maximumGenerationsTerminationCriterion);560 Terminat ionCriteria.Operators.Add(maximumEvaluatedSolutionsTerminationCriterion);561 Terminat ionCriteria.Operators.Add(maximumSelectionPressureTerminationCriterion);562 Terminat ionCriteria.Operators.Add(qualityTerminationCriterion, checkedState: false);563 Terminat ionCriteria.Operators.Add(executionTimeTerminationCriterion, checkedState: false);552 private void UpdateTerminators() { 553 Terminators.Operators.Clear(); 554 if (Problem != null) { 555 foreach (var terminator in Problem.Operators.OfType<ITerminator>()) 556 Terminators.Operators.Add(terminator); 557 } 558 Terminators.Operators.Add(generationsTerminator); 559 Terminators.Operators.Add(evaluatedSolutionsTerminator); 560 Terminators.Operators.Add(selectionPressureTerminator); 561 Terminators.Operators.Add(qualityTerminator, checkedState: false); 562 Terminators.Operators.Add(executionTimeTerminator, checkedState: false); 564 563 } 565 564 private OffspringSelectionGeneticAlgorithmMainLoop FindMainLoop(IOperator start) {
Note: See TracChangeset
for help on using the changeset viewer.