Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/26/14 11:06:38 (9 years ago)
Author:
pfleck
Message:

#2269 Implemented LayerUpdator.

  • Added First/LastSubScopeProcessor.
  • Added two Calculators because ExpressionCalculator does not support required features yet.
  • Added some wiring.
  • Small bugfixes and refactorings.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithmMainLoop.cs

    r11585 r11586  
    3838  public sealed class AlpsGeneticAlgorithmMainLoop : AlgorithmOperator {
    3939    #region Parameter Properties
    40     public ILookupParameter<IRandom> RandomParameter {
    41       get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
    42     }
    43     /*public ILookupParameter<BoolValue> MaximizationParameter {
    44       get { return (ILookupParameter<BoolValue>)Parameters["Maximization"]; }
    45     }
    46     public IScopeTreeLookupParameter<DoubleValue> QualityParameter {
    47       get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }
    48     }
    49     public ILookupParameter<DoubleValue> BestKnownQualityParameter {
    50       get { return (ILookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
    51     }
    52     public ILookupParameter<IOperator> EvaluatorParameter {
    53       get { return (ILookupParameter<IOperator>)Parameters["Evaluator"]; }
    54     }*/
    55     public ILookupParameter<IntValue> PopulationSizeParameter {
    56       get { return (ILookupParameter<IntValue>)Parameters["PopulationSize"]; }
    57     }
    5840    public ILookupParameter<IntValue> MaximumGenerationsParameter {
    5941      get { return (ILookupParameter<IntValue>)Parameters["MaximumGenerations"]; }
    60     }
    61     public ILookupParameter<IOperator> SelectorParameter {
    62       get { return (ILookupParameter<IOperator>)Parameters["Selector"]; }
    63     }
    64     public ILookupParameter<IOperator> CrossoverParameter {
    65       get { return (ILookupParameter<IOperator>)Parameters["Crossover"]; }
    66     }
    67     public ILookupParameter<PercentValue> MutationProbabilityParameter {
    68       get { return (ILookupParameter<PercentValue>)Parameters["MutationProbability"]; }
    69     }
    70     public ILookupParameter<IOperator> MutatorParameter {
    71       get { return (ILookupParameter<IOperator>)Parameters["Mutator"]; }
    72     }
    73     public ILookupParameter<IntValue> ElitesParameter {
    74       get { return (ILookupParameter<IntValue>)Parameters["Elites"]; }
    75     }
    76     public IValueLookupParameter<BoolValue> ReevaluateElitesParameter {
    77       get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; }
    78     }
    79     public ILookupParameter<ResultCollection> ResultsParameter {
    80       get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }
    8142    }
    8243    public ILookupParameter<IOperator> AnalyzerParameter {
     
    9152      get { return OperatorGraph.Iterate().OfType<GeneticAlgorithmMainLoop>().First(); }
    9253    }
     54    public EldersEmigrator EldersEmigrator {
     55      get { return OperatorGraph.Iterate().OfType<EldersEmigrator>().First(); }
     56    }
    9357
    9458    [StorableConstructor]
     
    10266    public AlpsGeneticAlgorithmMainLoop()
    10367      : base() {
    104       Parameters.Add(new LookupParameter<IRandom>("Random", "A pseudo random number generator."));
    105       /*Parameters.Add(new LookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));
    106       Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution."));
    107       Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The best known quality value found so far."));
    108       Parameters.Add(new LookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));*/
    109       Parameters.Add(new LookupParameter<IntValue>("PopulationSize", "The size of the population of solutions."));
    11068      Parameters.Add(new LookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations that the algorithm should process."));
    111       Parameters.Add(new LookupParameter<IOperator>("Selector", "The operator used to select solutions for reproduction."));
    112       Parameters.Add(new LookupParameter<IOperator>("Crossover", "The operator used to cross solutions."));
    113       Parameters.Add(new LookupParameter<PercentValue>("MutationProbability", "The probability that the mutation operator is applied on a solution."));
    114       Parameters.Add(new LookupParameter<IOperator>("Mutator", "The operator used to mutate solutions."));
    115       Parameters.Add(new LookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation."));
    116       Parameters.Add(new LookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    117       Parameters.Add(new LookupParameter<ResultCollection>("Results", "The results collection to store the results."));
    11869      Parameters.Add(new LookupParameter<IOperator>("Analyzer", "The operator used to the analyze all individuals."));
    11970      Parameters.Add(new LookupParameter<IOperator>("LayerAnalyzer", "The operator used to analyze each layer."));
     
    12677      var matingPoolCreator = new MatingPoolCreator() { Name = "Create Mating Pools" };
    12778      var matingPoolProcessor = new UniformSubScopesProcessor();
    128       var mainOperator = PrepareGeneticAlgorithmMainLoop();
     79      var mainOperator = CreatePreparedGeneticAlgorithmMainLoop();
    12980      var layerAnalyzerPlaceholder = new Placeholder() { Name = "LayerAnalyzer (Placeholder)" };
    13081      var generationsIcrementor = new IntCounter() { Name = "Increment Generations" };
    13182      var evaluatedSolutionsReducer = new DataReducer() { Name = "Increment EvaluatedSolutions" };
    13283      var eldersEmigrator = new EldersEmigrator() { Name = "Emigrate Elders" };
    133       var layerUpdator = new CombinedOperator() { Name = "Update Layers" };
     84      var layerUpdator = new LayerUpdator(mainOperator) { Name = "Update Layers" };
    13485      var analyzerPlaceholder = new Placeholder() { Name = "Analyzer (Placeholder)" };
    13586      var generationsComparator = new Comparator() { Name = "Generations >= MaximumGenerations" };
     
    14091      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0)));
    14192      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("GenerationsSinceLastRefresh", new IntValue(0)));
     93      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("OpenLayers", new IntValue(1)));
    14294      variableCreator.Successor = resultsCollector;
    14395
     
    193145    }
    194146
    195     private GeneticAlgorithmMainLoop PrepareGeneticAlgorithmMainLoop() {
     147    private GeneticAlgorithmMainLoop CreatePreparedGeneticAlgorithmMainLoop() {
    196148      var mainLoop = new GeneticAlgorithmMainLoop();
    197149      var selector = mainLoop.OperatorGraph.Iterate().OfType<Placeholder>().First(o => o.OperatorParameter.ActualName == "Selector");
     
    228180        stochasticBranch.RandomParameter.ActualName = "LocalRandom";
    229181
    230       // Remove unnessesary subtrees
    231       //foreach (var @operator in mainLoop.OperatorGraph.Operators.OfType<SingleSuccessorOperator>().Where(o => o.Successor == selector))
    232       //  @operator.Successor = null;
    233 
    234182      return mainLoop;
    235183    }
Note: See TracChangeset for help on using the changeset viewer.