Changeset 3650 for trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
- Timestamp:
- 05/05/10 18:54:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
r3616 r3650 34 34 using HeuristicLab.Random; 35 35 using HeuristicLab.Selection; 36 using HeuristicLab.Analysis; 36 37 37 38 namespace HeuristicLab.Algorithms.GeneticAlgorithm { … … 103 104 get { return (ValueParameter<BoolValue>)Parameters["Parallel"]; } 104 105 } 106 private ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>> AnalyzerParameter { 107 get { return (ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>>)Parameters["Analyzer"]; } 108 } 109 private ValueParameter<MultiAnalyzer<IPopulationAnalyzer>> IslandAnalyzerParameter { 110 get { return (ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>)Parameters["IslandAnalyzer"]; } 111 } 105 112 #endregion 106 113 … … 169 176 get { return ParallelParameter.Value; } 170 177 set { ParallelParameter.Value = value; } 178 } 179 public MultiAnalyzer<IMultiPopulationAnalyzer> Analyzer { 180 get { return AnalyzerParameter.Value; } 181 set { AnalyzerParameter.Value = value; } 182 } 183 public MultiAnalyzer<IPopulationAnalyzer> IslandAnalyzer { 184 get { return IslandAnalyzerParameter.Value; } 185 set { IslandAnalyzerParameter.Value = value; } 171 186 } 172 187 private List<ISelector> selectors; … … 189 204 get { return (IslandGeneticAlgorithmMainLoop)IslandProcessor.Successor; } 190 205 } 206 private PopulationBestAverageWorstQualityAnalyzer islandQualityAnalyzer; 207 //private MultipopulationBestAverageWorstQualityAnalyzer qualityAnalyzer; 191 208 #endregion 192 209 … … 211 228 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1))); 212 229 Parameters.Add(new ValueParameter<BoolValue>("Parallel", "True if the islands should be run in parallel (also requires a parallel engine)", new BoolValue(false))); 213 230 Parameters.Add(new ValueParameter<MultiAnalyzer<IMultiPopulationAnalyzer>>("Analyzer", "The operator used to analyze the islands.", new MultiAnalyzer<IMultiPopulationAnalyzer>())); 231 Parameters.Add(new ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>("IslandAnalyzer", "The operator used to analyze each island.", new MultiAnalyzer<IPopulationAnalyzer>())); 232 214 233 RandomCreator randomCreator = new RandomCreator(); 215 234 SubScopesCreator populationCreator = new SubScopesCreator(); … … 251 270 mainLoop.RandomParameter.ActualName = randomCreator.RandomParameter.ActualName; 252 271 mainLoop.ResultsParameter.ActualName = "Results"; 272 mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name; 273 mainLoop.IslandAnalyzerParameter.ActualName = IslandAnalyzerParameter.Name; 253 274 254 275 mainLoop.Successor = null; … … 275 296 ParameterizeMainLoop(); 276 297 ParameterizeSelectors(); 298 ParameterizeAnalyzers(); 277 299 UpdateCrossovers(); 278 300 UpdateMutators(); 301 UpdateAnalyzers(); 279 302 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 280 303 base.OnProblemChanged(); … … 291 314 ParameterizeMainLoop(); 292 315 ParameterizeSelectors(); 316 ParameterizeAnalyzers(); 293 317 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 294 318 base.Problem_EvaluatorChanged(sender, e); … … 298 322 UpdateCrossovers(); 299 323 UpdateMutators(); 324 UpdateAnalyzers(); 300 325 base.Problem_OperatorsChanged(sender, e); 301 326 } … … 317 342 ParameterizeMainLoop(); 318 343 ParameterizeSelectors(); 344 ParameterizeAnalyzers(); 319 345 } 320 346 private void MigrationRateParameter_ValueChanged(object sender, EventArgs e) { … … 331 357 private void Initialize() { 332 358 InitializeSelectors(); 359 InitializeAnalyzers(); 333 360 UpdateSelectors(); 361 UpdateAnalyzers(); 334 362 InitializeMigrators(); 335 363 UpdateMigrators(); … … 368 396 immigrationReplacers.AddRange(ApplicationManager.Manager.GetInstances<IReplacer>().OrderBy(x => x.Name)); 369 397 ParameterizeSelectors(); 398 } 399 private void InitializeAnalyzers() { 400 islandQualityAnalyzer = new PopulationBestAverageWorstQualityAnalyzer(); 401 //qualityAnalyzer = new MultipopulationBestAverageWorstQualityAnalyzer(); 402 ParameterizeAnalyzers(); 370 403 } 371 404 private void InitializeMigrators() { … … 403 436 } 404 437 } 438 private void ParameterizeAnalyzers() { 439 islandQualityAnalyzer.ResultsParameter.ActualName = "Results"; 440 //qualityAnalyzer.ResultsParameter.ActualName = "Results"; 441 if (Problem != null) { 442 islandQualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 443 islandQualityAnalyzer.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 444 islandQualityAnalyzer.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name; 445 } 446 } 405 447 private void UpdateSelectors() { 406 448 ISelector oldSelector = SelectorParameter.Value; … … 465 507 } 466 508 } 509 private void UpdateAnalyzers() { 510 IslandAnalyzer.Operators.Clear(); 511 Analyzer.Operators.Clear(); 512 IslandAnalyzer.Operators.Add(islandQualityAnalyzer); 513 //Analyzer.Operators.Add(qualityAnalyzer); 514 if (Problem != null) { 515 foreach (IPopulationAnalyzer analyzer in Problem.Operators.OfType<IPopulationAnalyzer>().OrderBy(x => x.Name)) { 516 IslandAnalyzer.Operators.Add(analyzer); 517 } 518 foreach (IMultiPopulationAnalyzer analyzer in Problem.Operators.OfType<IMultiPopulationAnalyzer>().OrderBy(x => x.Name)) 519 Analyzer.Operators.Add(analyzer); 520 } 521 } 467 522 #endregion 468 523 }
Note: See TracChangeset
for help on using the changeset viewer.