Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/07/10 02:08:30 (14 years ago)
Author:
abeham
Message:

#893

  • fixed wiring in the algorithms
File:
1 edited

Legend:

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

    r3672 r3689  
    184184      get { return (OffspringSelectionGeneticAlgorithmMainLoop)SolutionsCreator.Successor; }
    185185    }
    186     private List<ISelector> selectors;
    187     private IEnumerable<ISelector> Selectors {
    188       get { return selectors; }
    189     }
    190     private List<IDiscreteDoubleValueModifier> comparisonFactorModifiers;
     186    [Storable]
    191187    private BestAverageWorstQualityAnalyzer qualityAnalyzer;
     188    [Storable]
    192189    private ValueAnalyzer selectionPressureAnalyzer;
    193190    #endregion
     
    239236      mainLoop.ResultsParameter.ActualName = "Results";
    240237
     238      foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
     239        SelectorParameter.ValidValues.Add(selector);
     240      ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
     241      if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
     242      ParameterizeSelectors();
     243
     244      foreach (IDiscreteDoubleValueModifier modifier in ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name))
     245        ComparisonFactorModifierParameter.ValidValues.Add(modifier);
     246      IDiscreteDoubleValueModifier linearModifier = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("LinearDiscreteDoubleValueModifier"));
     247      if (linearModifier != null) ComparisonFactorModifierParameter.Value = linearModifier;
     248      ParameterizeComparisonFactorModifiers();
     249
     250      qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
     251      selectionPressureAnalyzer = new ValueAnalyzer();
     252      ParameterizeAnalyzers();
     253      UpdateAnalyzers();
     254
    241255      Initialize();
    242256    }
     
    244258    public override IDeepCloneable Clone(Cloner cloner) {
    245259      OffspringSelectionGeneticAlgorithm clone = (OffspringSelectionGeneticAlgorithm)base.Clone(cloner);
     260      clone.qualityAnalyzer = (BestAverageWorstQualityAnalyzer)cloner.Clone(qualityAnalyzer);
     261      clone.selectionPressureAnalyzer = (ValueAnalyzer)cloner.Clone(selectionPressureAnalyzer);
    246262      clone.Initialize();
    247263      return clone;
     
    313329    [StorableHook(HookType.AfterDeserialization)]
    314330    private void Initialize() {
    315       InitializeSelectors();
    316       InitializeAnalyzers();
    317       UpdateSelectors();
    318       UpdateAnalyzers();
    319       InitializeComparisonFactorModifiers();
    320       UpdateComparisonFactorModifiers();
    321331      PopulationSizeParameter.ValueChanged += new EventHandler(PopulationSizeParameter_ValueChanged);
    322332      PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged);
     
    324334      Elites.ValueChanged += new EventHandler(Elites_ValueChanged);
    325335      if (Problem != null) {
    326         UpdateCrossovers();
    327         UpdateMutators();
    328336        Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    329337      }
     
    342350        ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
    343351    }
    344     private void InitializeSelectors() {
    345       selectors = new List<ISelector>();
    346       selectors.AddRange(ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name));
    347       ParameterizeSelectors();
    348     }
    349     private void InitializeAnalyzers() {
    350       qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
    351       selectionPressureAnalyzer = new ValueAnalyzer();
    352       ParameterizeAnalyzers();
    353     }
    354     private void InitializeComparisonFactorModifiers() {
    355       comparisonFactorModifiers = new List<IDiscreteDoubleValueModifier>();
    356       comparisonFactorModifiers.AddRange(ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name));
    357       ParameterizeComparisonFactorModifiers();
    358     }
    359352    private void ParameterizeSelectors() {
    360       foreach (ISelector selector in Selectors) {
     353      foreach (ISelector selector in SelectorParameter.ValidValues) {
    361354        selector.CopySelected = new BoolValue(true);
    362355        selector.NumberOfSelectedSubScopesParameter.Value = null;
     
    365358      }
    366359      if (Problem != null) {
    367         foreach (ISingleObjectiveSelector selector in Selectors.OfType<ISingleObjectiveSelector>()) {
     360        foreach (ISingleObjectiveSelector selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
    368361          selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
    369362          selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
     
    385378    }
    386379    private void ParameterizeComparisonFactorModifiers() {
    387       foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers) {
     380      foreach (IDiscreteDoubleValueModifier modifier in ComparisonFactorModifierParameter.ValidValues) {
    388381        modifier.IndexParameter.ActualName = "Generations";
    389382        modifier.EndIndexParameter.ActualName = MaximumGenerationsParameter.Name;
     
    392385        modifier.StartValueParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    393386        modifier.ValueParameter.ActualName = "ComparisonFactor";
    394       }
    395     }
    396     private void UpdateSelectors() {
    397       ISelector oldSelector = SelectorParameter.Value;
    398       SelectorParameter.ValidValues.Clear();
    399       foreach (ISelector selector in Selectors.OrderBy(x => x.Name))
    400         SelectorParameter.ValidValues.Add(selector);
    401 
    402       ISelector proportionalSelector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType().Name.Equals("ProportionalSelector"));
    403       if (proportionalSelector != null) SelectorParameter.Value = proportionalSelector;
    404 
    405       if (oldSelector != null) {
    406         ISelector selector = SelectorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSelector.GetType());
    407         if (selector != null) SelectorParameter.Value = selector;
    408       }
    409     }
    410     private void UpdateComparisonFactorModifiers() {
    411       IDiscreteDoubleValueModifier oldModifier = ComparisonFactorModifier;
    412 
    413       ComparisonFactorModifierParameter.ValidValues.Clear();
    414       foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers)
    415         ComparisonFactorModifierParameter.ValidValues.Add(modifier);
    416 
    417       if (oldModifier != null) {
    418         IDiscreteDoubleValueModifier mod = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldModifier.GetType());
    419         if (mod != null) ComparisonFactorModifierParameter.Value = mod;
    420387      }
    421388    }
Note: See TracChangeset for help on using the changeset viewer.