Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/26/14 17:22:19 (9 years ago)
Author:
pfleck
Message:

#2269

  • Finished implementing LayerUpdator.
  • Proper implemented per-layer results.
  • Some bugfixes and wiring.
  • Added LastSubScopeCloner. Note that the First/LastSubScopeCloner/Processor might be dropped and Left/Right-Selectors are used instead. Thanks to jkarder for this suggestion.
File:
1 edited

Legend:

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

    r11586 r11590  
    2020#endregion
    2121
     22using System.Linq;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
    2526using HeuristicLab.Operators;
     27using HeuristicLab.Optimization;
    2628using HeuristicLab.Optimization.Operators;
    2729using HeuristicLab.Parameters;
     
    3234  [StorableClass]
    3335  public class LayerUpdator : AlgorithmOperator {
     36
     37    public SolutionsCreator SolutionsCreator {
     38      get { return OperatorGraph.Iterate().OfType<SolutionsCreator>().First(); }
     39    }
    3440
    3541    [StorableConstructor]
     
    5056      var openNewLayerCalculator = new OpenNewLayerCalculator();
    5157      var openNewLayerBranch = new ConditionalBranch() { Name = "OpenNewLayer?" };
     58      var layerCloner = new LastSubScopeCloner() { Name = "Copy Lower Layer" };
    5259      var incrOpenLayers = new IntCounter() { Name = "Incr. OpenLayers" };
    53       var layerScopeCreator = new SubScopesCreator();
    5460      var newLayerProsessor = new LastSubScopeProcessor();
    55       var localRandomCreator = new LocalRandomCreator();
    56       var layerVariableCreator = new Assigner() { Name = "Init Layer" };
    57       var copyPrevSubScope = new CombinedOperator() { Name = "Copy lower layer" };
    58       //var mainOperator = new CombinedOperator() { Name = "Create Offsprings" };
     61      var layerInitializer = new Assigner() { Name = "Init Layer" };
     62      var incrEvaluatedSolutionsForNewLayer = new SubScopesCounter() { Name = "Update EvaluatedSolutions" };
     63      var newResultCollectionAssigner = new Assigner() { Name = "Empty Results" };
    5964      var regenerateLayerZeroProsessor = new FirstSubScopeProcessor();
    6065      var subScopesRemover = new SubScopesRemover();
     
    6267      var initializeAgeProsessor = new UniformSubScopesProcessor();
    6368      var initializeAge = new VariableCreator() { Name = "Initialize Age" };
    64       var incrEvaluatedSolutions = new SubScopesCounter() { Name = "Update EvaluatedSolutions" };
     69      var incrEvaluatedSolutionsAfterReseeding = new SubScopesCounter() { Name = "Update EvaluatedSolutions" };
    6570      var resetGenSlr = new Assigner() { Name = "Reset GenerationsSinceLastRefresh" };
    6671
     
    7782      genSlrEqAgeGap.Successor = updateLayersBranch;
    7883
    79       updateLayersBranch.ConditionParameter.ActualName = "Updatelayers";
     84      updateLayersBranch.ConditionParameter.ActualName = "UpdateLayers";
    8085      updateLayersBranch.TrueBranch = openNewLayerCalculator;
    8186
     
    8994
    9095      openNewLayerBranch.ConditionParameter.ActualName = "OpenNewLayer";
    91       openNewLayerBranch.TrueBranch = incrOpenLayers;
     96      openNewLayerBranch.TrueBranch = layerCloner;
    9297      openNewLayerBranch.Successor = regenerateLayerZeroProsessor;
     98
     99      layerCloner.Successor = newLayerProsessor;
     100
     101      newLayerProsessor.Operator = layerInitializer;
     102      newLayerProsessor.Successor = incrOpenLayers;
     103
     104      layerInitializer.LeftSideParameter.ActualName = "Layer";
     105      layerInitializer.RightSideParameter.ActualName = "OpenLayers";
     106      layerInitializer.Successor = incrEvaluatedSolutionsForNewLayer;
     107
     108      incrEvaluatedSolutionsForNewLayer.ValueParameter.ActualName = "EvaluatedSolutions";
     109      incrEvaluatedSolutionsForNewLayer.AccumulateParameter.Value = new BoolValue(true);
     110      incrEvaluatedSolutionsForNewLayer.Successor = newResultCollectionAssigner;
     111
     112      newResultCollectionAssigner.LeftSideParameter.ActualName = "Results";
     113      newResultCollectionAssigner.RightSideParameter.Value = new ResultCollection();
     114      newResultCollectionAssigner.Successor = mainOperator;
     115      // TODO mainOperator increment age
    93116
    94117      incrOpenLayers.ValueParameter.ActualName = "OpenLayers";
    95118      incrOpenLayers.Increment = new IntValue(1);
    96       incrOpenLayers.Successor = layerScopeCreator;
    97 
    98       layerScopeCreator.NumberOfSubScopesParameter.Value = new IntValue(1);
    99       layerScopeCreator.Successor = newLayerProsessor;
    100 
    101       newLayerProsessor.Operator = localRandomCreator;
    102 
    103       localRandomCreator.Successor = layerVariableCreator;
    104 
    105       layerVariableCreator.LeftSideParameter.ActualName = "Layer";
    106       layerVariableCreator.RightSideParameter.ActualName = "Layer";
    107       layerVariableCreator.Successor = copyPrevSubScope;
    108 
    109       copyPrevSubScope.Successor = mainOperator;
     119      incrOpenLayers.Successor = null;
    110120
    111121      regenerateLayerZeroProsessor.Operator = subScopesRemover;
     
    117127
    118128      initializeAgeProsessor.Operator = initializeAge;
    119       initializeAgeProsessor.Successor = incrEvaluatedSolutions;
     129      initializeAgeProsessor.Successor = incrEvaluatedSolutionsAfterReseeding;
    120130
    121131      initializeAge.CollectedValues.Add(new ValueParameter<IntValue>("Age", new IntValue(0)));
    122132      initializeAge.Successor = null;
    123133
    124       incrEvaluatedSolutions.ValueParameter.ActualName = "EvaluatedSolutions";
    125       incrEvaluatedSolutions.Successor = null;
     134      incrEvaluatedSolutionsAfterReseeding.ValueParameter.ActualName = "EvaluatedSolutions";
     135      incrEvaluatedSolutionsAfterReseeding.AccumulateParameter.Value = new BoolValue(true);
     136      incrEvaluatedSolutionsAfterReseeding.Successor = null;
    126137
    127138      resetGenSlr.LeftSideParameter.ActualName = "GenerationsSinceLastRefresh";
Note: See TracChangeset for help on using the changeset viewer.