Changeset 3656 for trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs
- Timestamp:
- 05/05/10 23:10:11 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs
r3616 r3656 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HeuristicLab.Analysis; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; … … 112 113 get { return (ValueLookupParameter<IntValue>)Parameters["SelectedParents"]; } 113 114 } 115 private ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>> AnalyzerParameter { 116 get { return (ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>>)Parameters["Analyzer"]; } 117 } 118 private ValueParameter<MultiAnalyzer<IPopulationAnalyzer>> VillageAnalyzerParameter { 119 get { return (ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>)Parameters["VillageAnalyzer"]; } 120 } 114 121 #endregion 115 122 … … 191 198 set { SelectedParentsParameter.Value = value; } 192 199 } 200 public MultiAnalyzer<IMultiPopulationAnalyzer> Analyzer { 201 get { return AnalyzerParameter.Value; } 202 set { AnalyzerParameter.Value = value; } 203 } 204 public MultiAnalyzer<IPopulationAnalyzer> VillageAnalyzer { 205 get { return VillageAnalyzerParameter.Value; } 206 set { VillageAnalyzerParameter.Value = value; } 207 } 193 208 private List<ISelector> selectors; 194 209 private IEnumerable<ISelector> Selectors { … … 208 223 get { return (SASEGASAMainLoop)VillageProcessor.Successor; } 209 224 } 225 private PopulationBestAverageWorstQualityAnalyzer villageQualityAnalyzer; 226 //private MultipopulationBestAverageWorstQualityAnalyzer qualityAnalyzer; 210 227 #endregion 211 228 … … 233 250 Parameters.Add(new ValueLookupParameter<BoolValue>("OffspringSelectionBeforeMutation", "True if the offspring selection step should be applied before mutation, false if it should be applied after mutation.", new BoolValue(false))); 234 251 Parameters.Add(new ValueLookupParameter<IntValue>("SelectedParents", "Should be about 2 * PopulationSize, for large problems use a smaller value to decrease memory footprint.", new IntValue(200))); 235 252 Parameters.Add(new ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>>("Analyzer", "The operator used to analyze the villages.", new MultiAnalyzer<IMultiPopulationAnalyzer>())); 253 Parameters.Add(new ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>("VillageAnalyzer", "The operator used to analyze each village.", new MultiAnalyzer<IPopulationAnalyzer>())); 254 236 255 RandomCreator randomCreator = new RandomCreator(); 237 256 SubScopesCreator populationCreator = new SubScopesCreator(); … … 299 318 ParameterizeMainLoop(); 300 319 ParameterizeSelectors(); 320 ParameterizeAnalyzers(); 301 321 UpdateCrossovers(); 302 322 UpdateMutators(); 323 UpdateAnalyzers(); 303 324 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 304 325 base.OnProblemChanged(); … … 315 336 ParameterizeMainLoop(); 316 337 ParameterizeSelectors(); 338 ParameterizeAnalyzers(); 317 339 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 318 340 base.Problem_EvaluatorChanged(sender, e); … … 322 344 UpdateCrossovers(); 323 345 UpdateMutators(); 346 UpdateAnalyzers(); 324 347 base.Problem_OperatorsChanged(sender, e); 325 348 } … … 341 364 ParameterizeMainLoop(); 342 365 ParameterizeSelectors(); 366 ParameterizeAnalyzers(); 343 367 } 344 368 private void MaximumGenerationsParameter_ValueChanged(object sender, EventArgs e) { … … 365 389 private void Initialize() { 366 390 InitializeSelectors(); 391 InitializeAnalyzers(); 367 392 UpdateSelectors(); 393 UpdateAnalyzers(); 368 394 InitializeComparisonFactorModifiers(); 369 395 UpdateComparisonFactorModifiers(); … … 402 428 ParameterizeSelectors(); 403 429 } 430 private void InitializeAnalyzers() { 431 villageQualityAnalyzer = new PopulationBestAverageWorstQualityAnalyzer(); 432 //qualityAnalyzer = new MultipopulationBestAverageWorstQualityAnalyzer(); 433 ParameterizeAnalyzers(); 434 } 404 435 private void InitializeComparisonFactorModifiers() { 405 436 comparisonFactorModifiers = new List<IDiscreteDoubleValueModifier>(); … … 419 450 selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 420 451 } 452 } 453 } 454 private void ParameterizeAnalyzers() { 455 villageQualityAnalyzer.ResultsParameter.ActualName = "Results"; 456 //qualityAnalyzer.ResultsParameter.ActualName = "Results"; 457 if (Problem != null) { 458 villageQualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 459 villageQualityAnalyzer.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 460 villageQualityAnalyzer.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name; 421 461 } 422 462 } … … 477 517 } 478 518 } 519 private void UpdateAnalyzers() { 520 VillageAnalyzer.Operators.Clear(); 521 Analyzer.Operators.Clear(); 522 VillageAnalyzer.Operators.Add(villageQualityAnalyzer); 523 //Analyzer.Operators.Add(qualityAnalyzer); 524 if (Problem != null) { 525 foreach (IPopulationAnalyzer analyzer in Problem.Operators.OfType<IPopulationAnalyzer>().OrderBy(x => x.Name)) { 526 VillageAnalyzer.Operators.Add(analyzer); 527 } 528 foreach (IMultiPopulationAnalyzer analyzer in Problem.Operators.OfType<IMultiPopulationAnalyzer>().OrderBy(x => x.Name)) 529 Analyzer.Operators.Add(analyzer); 530 } 531 } 479 532 #endregion 480 533 }
Note: See TracChangeset
for help on using the changeset viewer.