Changeset 12328 for branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
- Timestamp:
- 04/20/15 11:28:32 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
r12312 r12328 194 194 set { AnalyzerParameter.Value = value; } 195 195 } 196 196 197 public IntValue MaximumEvaluatedSolutions { 197 198 get { return MaximumEvaluatedSolutionsParameter.Value; } … … 202 203 set { FillPopulationWithParentsParameter.Value.Value = value; } 203 204 } 205 private MultiTerminationCriterion TerminationCriteria { 206 get { return TerminationCriteriaParameter.Value; } 207 } 204 208 private RandomCreator RandomCreator { 205 209 get { return (RandomCreator)OperatorGraph.InitialOperator; } … … 217 221 [Storable] 218 222 private SuccessfulOffspringAnalyzer successfulOffspringAnalyzer; 223 [Storable] 224 private ComparisonTerminationCriterion<IntValue> maximumGenerationsTerminationCriterion; 225 [Storable] 226 private ComparisonTerminationCriterion<IntValue> maximumEvaluatedSolutionsTerminationCriterion; 227 [Storable] 228 private ComparisonTerminationCriterion<DoubleValue> maximumSelectionPressureTerminationCriterion; 229 [Storable] 230 private ComparisonTerminationCriterion<DoubleValue> qualityTerminationCriterion; 231 [Storable] 232 private ExecutionTimeTimeTerminationCriterion executionTimeTerminationCriterion; 219 233 #endregion 220 234 … … 241 255 selectionPressureAnalyzer = cloner.Clone(original.selectionPressureAnalyzer); 242 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 qualityTerminationCriterion = cloner.Clone(original.qualityTerminationCriterion); 261 executionTimeTerminationCriterion = cloner.Clone(original.executionTimeTerminationCriterion); 243 262 Initialize(); 244 263 } … … 331 350 ParameterizeAnalyzers(); 332 351 UpdateAnalyzers(); 333 AddTerminationCriteria(); 352 353 maximumGenerationsTerminationCriterion = new ComparisonTerminationCriterion<IntValue>("Generations", "MaximumGenerations", ComparisonType.GreaterOrEqual) { Name = "Maximum Generations" }; 354 maximumEvaluatedSolutionsTerminationCriterion = new ComparisonTerminationCriterion<IntValue>("EvaluatedSolutions", "MaximumEvaluatedSolutions", ComparisonType.GreaterOrEqual) { Name = "Maximum Evaluations" }; 355 maximumSelectionPressureTerminationCriterion = new ComparisonTerminationCriterion<DoubleValue>("SelectionPressure", "MaximumSelectionPressure", ComparisonType.GreaterOrEqual) { Name = "Maximum Selection" }; 356 qualityTerminationCriterion = new ComparisonTerminationCriterion<DoubleValue>() { Name = "Maximum/Minimum Quality" }; 357 executionTimeTerminationCriterion = new ExecutionTimeTimeTerminationCriterion(this, TimeSpan.FromMinutes(5)) { Name = "Maximum Execution Time" }; 358 UpdateTerminationCriteria(); 334 359 335 360 Initialize(); … … 355 380 UpdateMutators(); 356 381 UpdateAnalyzers(); 382 UpdateTerminationCriteria(); 357 383 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 358 384 base.OnProblemChanged(); … … 513 539 Analyzer.Operators.Add(successfulOffspringAnalyzer, successfulOffspringAnalyzer.EnabledByDefault); 514 540 } 515 private void AddTerminationCriteria() { 516 TerminationCriteriaParameter.Value.Operators.Add( 517 new ComparisonTerminationCriterion<IntValue>("Generations", "MaximumGenerations", ComparisonType.GreaterOrEqual) { Name = "Maximum Generations" }); 518 TerminationCriteriaParameter.Value.Operators.Add( 519 new ComparisonTerminationCriterion<IntValue>("EvaluatedSolutions", "MaximumEvaluatedSolutions", ComparisonType.GreaterOrEqual) { Name = "Maximum Evaluations" }); 520 TerminationCriteriaParameter.Value.Operators.Add( 521 new ComparisonTerminationCriterion<DoubleValue>("SelectionPressure", "MaximumSelectionPressure", ComparisonType.GreaterOrEqual) { Name = "Maximum Selection Pressure" }); 541 private void UpdateTerminationCriteria() { 542 TerminationCriteria.Operators.Clear(); 543 544 if (Problem != null) { 545 foreach (var terminationCriterion in Problem.Operators.OfType<ITerminationCriterion>()) 546 TerminationCriteria.Operators.Add(terminationCriterion); 547 bool maximization = ((BoolValue)Problem.MaximizationParameter.ActualValue).Value; 548 qualityTerminationCriterion.Name = maximization ? "Maximum Quality" : "Minimum Quality"; 549 qualityTerminationCriterion.Comparison = new Comparison(maximization ? ComparisonType.GreaterOrEqual : ComparisonType.LessOrEqual); 550 qualityTerminationCriterion.LeftSideParameter.ActualName = qualityAnalyzer.CurrentBestQualityParameter.Name; 551 qualityTerminationCriterion.RightSideParameter.Value = new DoubleValue(maximization ? double.MaxValue : double.MinValue); 552 } 553 TerminationCriteria.Operators.Add(maximumGenerationsTerminationCriterion); 554 TerminationCriteria.Operators.Add(maximumEvaluatedSolutionsTerminationCriterion); 555 TerminationCriteria.Operators.Add(maximumSelectionPressureTerminationCriterion); 556 TerminationCriteria.Operators.Add(qualityTerminationCriterion, checkedState: false); 557 TerminationCriteria.Operators.Add(executionTimeTerminationCriterion, checkedState: false); 522 558 } 523 559 private OffspringSelectionGeneticAlgorithmMainLoop FindMainLoop(IOperator start) {
Note: See TracChangeset
for help on using the changeset viewer.