Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/08/16 15:55:31 (8 years ago)
Author:
pkuelzer
Message:

#2558 Include LayerNumber in GroupResults
Added Migration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/IslandALPS/IslandALPS/3.3/IslandALPSAlgorithm.cs

    r13595 r13604  
    8383      get { return (IValueParameter<IntValue>)Parameters["MigrationInterval"]; }
    8484    }
    85 
     85    public IConstrainedValueParameter<IMigrator> MigratorParameter {
     86      get { return (IConstrainedValueParameter<IMigrator>)Parameters["Migrator"]; }
     87    }
     88    public IConstrainedValueParameter<ISelector> EmigrantsSelectorParameter {
     89      get { return (IConstrainedValueParameter<ISelector>)Parameters["EmigrantsSelector"]; }
     90    }
     91    public IConstrainedValueParameter<IReplacer> ImmigrationReplacerParameter {
     92      get { return (IConstrainedValueParameter<IReplacer>)Parameters["ImmigrationReplacer"]; }
     93    }
    8694    #endregion
    8795
     
    284292      Parameters.Add(new ValueParameter<IntValue>("MigrationInterval", "The number Generations before a migration occurs.", new IntValue(20)));
    285293      Parameters.Add(new ValueParameter<MultiAnalyzer>("IslandAnalyzer", "The operator used to analyze each island.", new MultiAnalyzer()));
     294      Parameters.Add(new ConstrainedValueParameter<IMigrator>("Migrator", "The migration strategy."));
     295      Parameters.Add(new ConstrainedValueParameter<ISelector>("EmigrantsSelector", "Selects the individuals that will be migrated."));
     296      Parameters.Add(new ConstrainedValueParameter<IReplacer>("ImmigrationReplacer", "Selects the population from the unification of the original population and the immigrants."));
    286297
    287298      #endregion
     
    429440      UpdateTerminators();
    430441      ParameterizeAgeLimits();
     442      ParametrizeMigration();
    431443      #endregion
    432444
     
    585597      ElitesParameter.ValueChanged += ElitesParameter_ValueChanged;
    586598      Elites.ValueChanged += Elites_ValueChanged;
     599      MigrationRateParameter.Value.ValueChanged += MigrationRate_ValueChanged;
     600      MigrationRateParameter.ValueChanged += MigrationRate_ValueChanged;
    587601
    588602      Analyzer.Operators.ItemsAdded += AnalyzerOperators_ItemsAdded;
     
    603617      NumberOfLayers.ValueChanged += NumberOfLayers_ValueChanged;
    604618
     619    }
     620
     621    private void MigrationRate_ValueChanged(object sender, EventArgs e) {
     622      var migrationSize = (int)Math.Ceiling(MigrationRateParameter.Value.Value * PopulationSize.Value);
     623      foreach (var selector in EmigrantsSelectorParameter.ValidValues) {
     624        selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(migrationSize);
     625      }
    605626    }
    606627
     
    719740      MainLoop.NumberOfLayersParameter.ActualName = NumberOfLayersParameter.Name;
    720741      MainLoop.MigrationIntervalParameter.ActualName = MigrationIntervalParameter.Name;
     742      MainLoop.MigratorParameter.ActualName = MigratorParameter.Name;
     743      MainLoop.EmigrantsSelectorParameter.ActualName = EmigrantsSelectorParameter.Name;
     744      MainLoop.ImmigrationReplacerParameter.ActualName = ImmigrationReplacerParameter.Name;
     745
     746
     747
    721748      MainLoop.PopulationSizeParameter.ActualName = PopulationSizeParameter.Name;
    722749      MainLoop.CurrentPopulationSizeParameter.ActualName = "CurrentPopulationSize";
     
    738765    }
    739766
     767    private void ParametrizeMigration() {
     768      var migrationSize = (int) Math.Ceiling(MigrationRateParameter.Value.Value *PopulationSize.Value);
     769      foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name)) {
     770        selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(migrationSize);
     771        selector.NumberOfSelectedSubScopesParameter.Hidden = true;
     772
     773        ParameterizeStochasticOperatorForLayer(selector);
     774
     775        EmigrantsSelectorParameter.ValidValues.Add(selector);
     776      }
     777
     778      foreach (IReplacer replacer in ApplicationManager.Manager.GetInstances<IReplacer>().OrderBy(x => x.Name)) {
     779        ParameterizeStochasticOperatorForLayer(replacer);
     780        ImmigrationReplacerParameter.ValidValues.Add(replacer);
     781      }
     782
     783      MigratorParameter.ValidValues.Add(new LayerMigrator());
     784    }
     785
    740786    private void ParameterizeSolutionsCreator() {
    741787      SolutionsCreator.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
     
    750796        ParameterizeStochasticOperatorForLayer(selector);
    751797      }
     798
    752799      if (Problem != null) {
    753800        foreach (var selector in SelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
    754           selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
    755           selector.MaximizationParameter.Hidden = true;
    756           selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    757           selector.QualityParameter.Hidden = true;
    758         }
    759       }
     801          ParametrizeSingleObjectiveSelector(selector);
     802        }
     803        foreach (var replacer in EmigrantsSelectorParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
     804          ParametrizeSingleObjectiveSelector(replacer);
     805        }
     806        foreach (var selector in ImmigrationReplacerParameter.ValidValues.OfType<ISingleObjectiveSelector>()) {
     807          ParametrizeSingleObjectiveSelector(selector);
     808        }
     809
     810      }
     811    }
     812
     813    private void ParametrizeSingleObjectiveSelector(ISingleObjectiveSelector selector) {
     814      selector.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
     815      selector.MaximizationParameter.Hidden = true;
     816      selector.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
     817      selector.QualityParameter.Hidden = true;
    760818    }
    761819
Note: See TracChangeset for help on using the changeset viewer.