Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/05/10 18:54:00 (14 years ago)
Author:
abeham
Message:

#999

  • ported Island GA to Analyzers
  • ported OSGA to Analyzers
  • changed OSGA to use OSGA's main operator
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs

    r3616 r3650  
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HeuristicLab.Analysis;
    2526using HeuristicLab.Core;
    2627using HeuristicLab.Data;
    27 using HeuristicLab.Operators;
    2828using HeuristicLab.Optimization;
    2929using HeuristicLab.Optimization.Operators;
     
    101101      get { return (ValueLookupParameter<IntValue>)Parameters["SelectedParents"]; }
    102102    }
     103    private ValueParameter<MultiAnalyzer<IPopulationAnalyzer>> AnalyzerParameter {
     104      get { return (ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>)Parameters["Analyzer"]; }
     105    }
    103106    #endregion
    104107
     
    167170      get { return SelectedParentsParameter.Value; }
    168171      set { SelectedParentsParameter.Value = value; }
     172    }
     173    public MultiAnalyzer<IPopulationAnalyzer> Analyzer {
     174      get { return AnalyzerParameter.Value; }
     175      set { AnalyzerParameter.Value = value; }
    169176    }
    170177    private RandomCreator RandomCreator {
     
    204211      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)));
    205212      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)));
    206 
     213      Parameters.Add(new ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer<IPopulationAnalyzer>()));
     214     
    207215      RandomCreator randomCreator = new RandomCreator();
    208216      SolutionsCreator solutionsCreator = new SolutionsCreator();
     
    250258      ParameterizMainLoop();
    251259      ParameterizeSelectors();
     260      ParameterizeAnalyzers();
    252261      UpdateCrossovers();
    253262      UpdateMutators();
     263      UpdateAnalyzers();
    254264      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    255265      base.OnProblemChanged();
     
    266276      ParameterizMainLoop();
    267277      ParameterizeSelectors();
     278      ParameterizeAnalyzers();
    268279      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    269280      base.Problem_EvaluatorChanged(sender, e);
     
    273284      UpdateCrossovers();
    274285      UpdateMutators();
     286      UpdateAnalyzers();
    275287      base.Problem_OperatorsChanged(sender, e);
    276288    }
     
    292304      ParameterizMainLoop();
    293305      ParameterizeSelectors();
     306      ParameterizeAnalyzers();
    294307    }
    295308    #endregion
     
    299312    private void Initialize() {
    300313      InitializeSelectors();
     314      InitializeAnalyzers();
    301315      UpdateSelectors();
     316      UpdateAnalyzers();
    302317      InitializeComparisonFactorModifiers();
    303318      UpdateComparisonFactorModifiers();
     
    317332    }
    318333    private void ParameterizMainLoop() {
    319       MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
    320334      MainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
    321335      MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
     
    330344      selectors.AddRange(ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name));
    331345      ParameterizeSelectors();
     346    }
     347    private void InitializeAnalyzers() {
     348      //qualityAnalyzer = new PopulationBestAverageWorstQualityAnalyzer();
     349      ParameterizeAnalyzers();
    332350    }
    333351    private void InitializeComparisonFactorModifiers() {
     
    348366          selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    349367        }
     368      }
     369    }
     370    private void ParameterizeAnalyzers() {
     371      //qualityAnalyzer.ResultsParameter.ActualName = "Results";
     372      if (Problem != null) {
     373        //qualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
     374        //qualityAnalyzer.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
     375        //qualityAnalyzer.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
    350376      }
    351377    }
     
    406432      }
    407433    }
     434    private void UpdateAnalyzers() {
     435      Analyzer.Operators.Clear();
     436      //Analyzer.Operators.Add(qualityAnalyzer);
     437      if (Problem != null) {
     438        foreach (IPopulationAnalyzer analyzer in Problem.Operators.OfType<IPopulationAnalyzer>().OrderBy(x => x.Name))
     439          Analyzer.Operators.Add(analyzer);
     440      }
     441    }
    408442    #endregion
    409443  }
Note: See TracChangeset for help on using the changeset viewer.