Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/05/10 23:10:11 (14 years ago)
Author:
abeham
Message:

#999

  • updated SASEGASA to analyzers
File:
1 edited

Legend:

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

    r3616 r3656  
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HeuristicLab.Analysis;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
     
    112113      get { return (ValueLookupParameter<IntValue>)Parameters["SelectedParents"]; }
    113114    }
     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    }
    114121    #endregion
    115122
     
    191198      set { SelectedParentsParameter.Value = value; }
    192199    }
     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    }
    193208    private List<ISelector> selectors;
    194209    private IEnumerable<ISelector> Selectors {
     
    208223      get { return (SASEGASAMainLoop)VillageProcessor.Successor; }
    209224    }
     225    private PopulationBestAverageWorstQualityAnalyzer villageQualityAnalyzer;
     226    //private MultipopulationBestAverageWorstQualityAnalyzer qualityAnalyzer;
    210227    #endregion
    211228
     
    233250      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)));
    234251      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     
    236255      RandomCreator randomCreator = new RandomCreator();
    237256      SubScopesCreator populationCreator = new SubScopesCreator();
     
    299318      ParameterizeMainLoop();
    300319      ParameterizeSelectors();
     320      ParameterizeAnalyzers();
    301321      UpdateCrossovers();
    302322      UpdateMutators();
     323      UpdateAnalyzers();
    303324      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    304325      base.OnProblemChanged();
     
    315336      ParameterizeMainLoop();
    316337      ParameterizeSelectors();
     338      ParameterizeAnalyzers();
    317339      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    318340      base.Problem_EvaluatorChanged(sender, e);
     
    322344      UpdateCrossovers();
    323345      UpdateMutators();
     346      UpdateAnalyzers();
    324347      base.Problem_OperatorsChanged(sender, e);
    325348    }
     
    341364      ParameterizeMainLoop();
    342365      ParameterizeSelectors();
     366      ParameterizeAnalyzers();
    343367    }
    344368    private void MaximumGenerationsParameter_ValueChanged(object sender, EventArgs e) {
     
    365389    private void Initialize() {
    366390      InitializeSelectors();
     391      InitializeAnalyzers();
    367392      UpdateSelectors();
     393      UpdateAnalyzers();
    368394      InitializeComparisonFactorModifiers();
    369395      UpdateComparisonFactorModifiers();
     
    402428      ParameterizeSelectors();
    403429    }
     430    private void InitializeAnalyzers() {
     431      villageQualityAnalyzer = new PopulationBestAverageWorstQualityAnalyzer();
     432      //qualityAnalyzer = new MultipopulationBestAverageWorstQualityAnalyzer();
     433      ParameterizeAnalyzers();
     434    }
    404435    private void InitializeComparisonFactorModifiers() {
    405436      comparisonFactorModifiers = new List<IDiscreteDoubleValueModifier>();
     
    419450          selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    420451        }
     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;
    421461      }
    422462    }
     
    477517      }
    478518    }
     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    }
    479532    #endregion
    480533  }
Note: See TracChangeset for help on using the changeset viewer.