Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/22/11 15:18:20 (14 years ago)
Author:
abeham
Message:

#1344

  • Adapted all algorithms to count evaluated solutions / moves and outside of the parallel region
  • Used the same pattern in every algorithm: Initialize and collect the variable in the Algorithm and increment it in the main loops and main operators
Location:
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3
Files:
7 edited

Legend:

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

    r4722 r5356  
    239239    }
    240240    private IslandOffspringSelectionGeneticAlgorithmMainLoop MainLoop {
    241       get { return (IslandOffspringSelectionGeneticAlgorithmMainLoop)IslandProcessor.Successor; }
     241      get {
     242        return (IslandOffspringSelectionGeneticAlgorithmMainLoop)(
     243          (ResultsCollector)(
     244            (UniformSubScopesProcessor)(
     245              (VariableCreator)IslandProcessor.Successor
     246            ).Successor
     247          ).Successor
     248        ).Successor;
     249      }
    242250    }
    243251    [Storable]
     
    300308      UniformSubScopesProcessor ussp1 = new UniformSubScopesProcessor();
    301309      SolutionsCreator solutionsCreator = new SolutionsCreator();
     310      VariableCreator variableCreator = new VariableCreator();
     311      UniformSubScopesProcessor ussp2 = new UniformSubScopesProcessor();
     312      SubScopesCounter subScopesCounter = new SubScopesCounter();
     313      ResultsCollector resultsCollector = new ResultsCollector();
    302314      IslandOffspringSelectionGeneticAlgorithmMainLoop mainLoop = new IslandOffspringSelectionGeneticAlgorithmMainLoop();
    303315      OperatorGraph.InitialOperator = randomCreator;
     
    314326
    315327      ussp1.Operator = solutionsCreator;
    316       ussp1.Successor = mainLoop;
     328      ussp1.Successor = variableCreator;
    317329
    318330      solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
    319331      solutionsCreator.Successor = null;
     332
     333      variableCreator.Name = "Initialize EvaluatedSolutions";
     334      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue()));
     335      variableCreator.Successor = ussp2;
     336
     337      ussp2.Operator = subScopesCounter;
     338      ussp2.Successor = resultsCollector;
     339
     340      subScopesCounter.Name = "Increment EvaluatedSolutions";
     341      subScopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
     342
     343      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", "", "EvaluatedSolutions"));
     344      resultsCollector.ResultsParameter.ActualName = "Results";
     345      resultsCollector.Successor = mainLoop;
    320346
    321347      mainLoop.EmigrantsSelectorParameter.ActualName = EmigrantsSelectorParameter.Name;
     
    339365      mainLoop.MaximumSelectionPressureParameter.ActualName = MaximumSelectionPressureParameter.Name;
    340366      mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
     367      mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
    341368      mainLoop.Successor = null;
    342369
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithmMainLoop.cs

    r5208 r5356  
    123123    public ValueLookupParameter<IOperator> IslandAnalyzerParameter {
    124124      get { return (ValueLookupParameter<IOperator>)Parameters["IslandAnalyzer"]; }
     125    }
     126    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
     127      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    125128    }
    126129    #endregion
     
    166169      Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to the analyze the islands."));
    167170      Parameters.Add(new ValueLookupParameter<IOperator>("IslandAnalyzer", "The operator used to analyze each island."));
     171      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
    168172      #endregion
    169173
     
    177181      Placeholder analyzer1 = new Placeholder();
    178182      ResultsCollector resultsCollector1 = new ResultsCollector();
    179       ResultsCollector resultsCollector2 = new ResultsCollector();
    180183      UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
    181184      ConditionalBranch islandTerminatedBySelectionPressure1 = new ConditionalBranch();
     
    183186      Placeholder islandAnalyzer2 = new Placeholder();
    184187      ResultsCollector islandResultsCollector2 = new ResultsCollector();
    185       IntCounter islandEvaluatedSolutionsCounter = new IntCounter();
    186       Assigner islandEvaluatedSolutionsAssigner = new Assigner();
    187188      Comparator islandSelectionPressureComparator = new Comparator();
    188189      ConditionalBranch islandTerminatedBySelectionPressure2 = new ConditionalBranch();
     
    206207      Placeholder comparisonFactorModifier = new Placeholder();
    207208      Placeholder analyzer2 = new Placeholder();
    208       ResultsCollector resultsCollector3 = new ResultsCollector();
    209209      ConditionalBranch generationsTerminationCondition = new ConditionalBranch();
    210210      ConditionalBranch terminatedIslandsCondition = new ConditionalBranch();
     
    215215      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("GenerationsSinceLastMigration", new IntValue(0)));
    216216      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("TerminatedIslands", new IntValue(0)));
    217       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
    218217
    219218      islandVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>(ResultsParameter.Name, new ResultCollection()));
    220       islandVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("IslandEvaluatedSolutions", new IntValue(0)));
    221219      islandVariableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("TerminateSelectionPressure", new BoolValue(false)));
    222220      islandVariableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
     
    243241      resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
    244242
    245       resultsCollector2.CopyValue = new BoolValue(true);
    246       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    247       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    248 
    249243      islandTerminatedBySelectionPressure1.Name = "Island Terminated ?";
    250244      islandTerminatedBySelectionPressure1.ConditionParameter.ActualName = "TerminateSelectionPressure";
     
    254248      mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio";
    255249      mainOperator.ElitesParameter.ActualName = ElitesParameter.Name;
    256       mainOperator.EvaluatedSolutionsParameter.ActualName = "IslandEvaluatedSolutions";
     250      mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name;
    257251      mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
    258252      mainOperator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     
    274268      islandResultsCollector2.ResultsParameter.ActualName = "Results";
    275269
    276       islandEvaluatedSolutionsCounter.Name = "Update EvaluatedSolutions";
    277       islandEvaluatedSolutionsCounter.ValueParameter.ActualName = "EvaluatedSolutions";
    278       islandEvaluatedSolutionsCounter.Increment = null;
    279       islandEvaluatedSolutionsCounter.IncrementParameter.ActualName = "IslandEvaluatedSolutions";
    280 
    281       islandEvaluatedSolutionsAssigner.Name = "Reset EvaluatedSolutions";
    282       islandEvaluatedSolutionsAssigner.LeftSideParameter.ActualName = "IslandEvaluatedSolutions";
    283       islandEvaluatedSolutionsAssigner.RightSideParameter.Value = new IntValue(0);
    284 
    285270      islandSelectionPressureComparator.Name = "SelectionPressure >= MaximumSelectionPressure ?";
    286271      islandSelectionPressureComparator.LeftSideParameter.ActualName = "SelectionPressure";
     
    352337      maxEvaluatedSolutionsComparator.Name = "EvaluatedSolutions >= MaximumEvaluatedSolutions ?";
    353338      maxEvaluatedSolutionsComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
    354       maxEvaluatedSolutionsComparator.LeftSideParameter.ActualName = "EvaluatedSolutions";
     339      maxEvaluatedSolutionsComparator.LeftSideParameter.ActualName = EvaluatedSolutionsParameter.Name;
    355340      maxEvaluatedSolutionsComparator.ResultParameter.ActualName = "TerminateEvaluatedSolutions";
    356341      maxEvaluatedSolutionsComparator.RightSideParameter.ActualName = "MaximumEvaluatedSolutions";
     
    361346      analyzer2.Name = "Analyzer (placeholder)";
    362347      analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;
    363 
    364       resultsCollector3.CopyValue = new BoolValue(true);
    365       resultsCollector3.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    366       resultsCollector3.ResultsParameter.ActualName = ResultsParameter.Name;
    367348
    368349      generationsTerminationCondition.Name = "Terminate (MaxGenerations) ?";
     
    386367      comparisonFactorInitializer.Successor = analyzer1;
    387368      analyzer1.Successor = resultsCollector1;
    388       resultsCollector1.Successor = resultsCollector2;
    389       resultsCollector2.Successor = uniformSubScopesProcessor1;
     369      resultsCollector1.Successor = uniformSubScopesProcessor1;
    390370      uniformSubScopesProcessor1.Operator = islandTerminatedBySelectionPressure1;
    391371      uniformSubScopesProcessor1.Successor = generationsCounter;
     
    395375      mainOperator.Successor = islandAnalyzer2;
    396376      islandAnalyzer2.Successor = islandResultsCollector2;
    397       islandResultsCollector2.Successor = islandEvaluatedSolutionsCounter;
    398       islandEvaluatedSolutionsCounter.Successor = islandEvaluatedSolutionsAssigner;
    399       islandEvaluatedSolutionsAssigner.Successor = islandSelectionPressureComparator;
     377      islandResultsCollector2.Successor = islandSelectionPressureComparator;
    400378      islandSelectionPressureComparator.Successor = islandTerminatedBySelectionPressure2;
    401379      islandTerminatedBySelectionPressure2.TrueBranch = terminatedIslandsCounter;
     
    423401      maxEvaluatedSolutionsComparator.Successor = comparisonFactorModifier;
    424402      comparisonFactorModifier.Successor = analyzer2;
    425       analyzer2.Successor = resultsCollector3;
    426       resultsCollector3.Successor = generationsTerminationCondition;
     403      analyzer2.Successor = generationsTerminationCondition;
    427404      generationsTerminationCondition.TrueBranch = null;
    428405      generationsTerminationCondition.FalseBranch = terminatedIslandsCondition;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs

    r4722 r5356  
    2626using HeuristicLab.Core;
    2727using HeuristicLab.Data;
     28using HeuristicLab.Operators;
    2829using HeuristicLab.Optimization;
    2930using HeuristicLab.Optimization.Operators;
     
    190191    }
    191192    private OffspringSelectionGeneticAlgorithmMainLoop MainLoop {
    192       get { return (OffspringSelectionGeneticAlgorithmMainLoop)SolutionsCreator.Successor; }
     193      get {
     194        return (OffspringSelectionGeneticAlgorithmMainLoop)(
     195          (ResultsCollector)(
     196            (SubScopesCounter)SolutionsCreator.Successor
     197          ).Successor
     198        ).Successor;
     199      }
    193200    }
    194201    [Storable]
     
    236243      RandomCreator randomCreator = new RandomCreator();
    237244      SolutionsCreator solutionsCreator = new SolutionsCreator();
     245      SubScopesCounter subScopesCounter = new SubScopesCounter();
     246      ResultsCollector resultsCollector = new ResultsCollector();
    238247      OffspringSelectionGeneticAlgorithmMainLoop mainLoop = new OffspringSelectionGeneticAlgorithmMainLoop();
    239248      OperatorGraph.InitialOperator = randomCreator;
     
    247256
    248257      solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
    249       solutionsCreator.Successor = mainLoop;
     258      solutionsCreator.Successor = subScopesCounter;
     259
     260      subScopesCounter.Name = "Initialize EvaluatedSolutions";
     261      subScopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
     262      subScopesCounter.Successor = resultsCollector;
     263
     264      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", "", "EvaluatedSolutions"));
     265      resultsCollector.ResultsParameter.ActualName = "Results";
     266      resultsCollector.Successor = mainLoop;
    250267
    251268      mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
     
    255272      mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
    256273      mainLoop.ElitesParameter.ActualName = ElitesParameter.Name;
     274      mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
    257275      mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name;
    258276      mainLoop.MaximumSelectionPressureParameter.ActualName = MaximumSelectionPressureParameter.Name;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs

    r5208 r5356  
    8989    public ValueLookupParameter<BoolValue> OffspringSelectionBeforeMutationParameter {
    9090      get { return (ValueLookupParameter<BoolValue>)Parameters["OffspringSelectionBeforeMutation"]; }
     91    }
     92    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
     93      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    9194    }
    9295    #endregion
     
    126129      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm."));
    127130      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."));
     131      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
    128132      #endregion
    129133
     
    133137      Placeholder analyzer1 = new Placeholder();
    134138      ResultsCollector resultsCollector1 = new ResultsCollector();
    135       ResultsCollector resultsCollector2 = new ResultsCollector();
    136139      OffspringSelectionGeneticAlgorithmMainOperator mainOperator = new OffspringSelectionGeneticAlgorithmMainOperator();
    137140      IntCounter generationsCounter = new IntCounter();
     
    141144      Placeholder comparisonFactorModifier = new Placeholder();
    142145      Placeholder analyzer2 = new Placeholder();
    143       ResultsCollector resultsCollector3 = new ResultsCollector();
    144146      ConditionalBranch conditionalBranch1 = new ConditionalBranch();
    145147      ConditionalBranch conditionalBranch2 = new ConditionalBranch();
     
    147149
    148150      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class OffspringSelectionGeneticAlgorithm expects this to be called Generations
    149       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
    150151      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
    151152      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentSuccessRatio", new DoubleValue(0)));
     
    165166      resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
    166167
    167       resultsCollector2.CopyValue = new BoolValue(true);
    168       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    169       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    170 
    171168      mainOperator.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
    172169      mainOperator.CrossoverParameter.ActualName = CrossoverParameter.Name;
    173170      mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio";
    174171      mainOperator.ElitesParameter.ActualName = ElitesParameter.Name;
    175       mainOperator.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
     172      mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name;
    176173      mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
    177174      mainOperator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     
    200197
    201198      maxEvaluatedSolutionsComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
    202       maxEvaluatedSolutionsComparator.LeftSideParameter.ActualName = "EvaluatedSolutions";
     199      maxEvaluatedSolutionsComparator.LeftSideParameter.ActualName = EvaluatedSolutionsParameter.Name;
    203200      maxEvaluatedSolutionsComparator.ResultParameter.ActualName = "TerminateEvaluatedSolutions";
    204201      maxEvaluatedSolutionsComparator.RightSideParameter.ActualName = "MaximumEvaluatedSolutions";
     
    209206      analyzer2.Name = "Analyzer (placeholder)";
    210207      analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;
    211 
    212       resultsCollector3.CopyValue = new BoolValue(true);
    213       resultsCollector3.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    214       resultsCollector3.ResultsParameter.ActualName = ResultsParameter.Name;
    215208
    216209      conditionalBranch1.Name = "MaximumSelectionPressure reached?";
     
    229222      comparisonFactorInitializer.Successor = analyzer1;
    230223      analyzer1.Successor = resultsCollector1;
    231       resultsCollector1.Successor = resultsCollector2;
    232       resultsCollector2.Successor = mainOperator;
     224      resultsCollector1.Successor = mainOperator;
    233225      mainOperator.Successor = generationsCounter;
    234226      generationsCounter.Successor = maxGenerationsComparator;
     
    237229      maxEvaluatedSolutionsComparator.Successor = comparisonFactorModifier;
    238230      comparisonFactorModifier.Successor = analyzer2;
    239       analyzer2.Successor = resultsCollector3;
    240       resultsCollector3.Successor = conditionalBranch1;
     231      analyzer2.Successor = conditionalBranch1;
    241232      conditionalBranch1.FalseBranch = conditionalBranch2;
    242233      conditionalBranch1.TrueBranch = null;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainOperator.cs

    r5208 r5356  
    129129      UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
    130130      Placeholder evaluator1 = new Placeholder();
    131       IntCounter evaluationCounter1 = new IntCounter();
     131      SubScopesCounter subScopesCounter1 = new SubScopesCounter();
    132132      WeightedParentsQualityComparator qualityComparer1 = new WeightedParentsQualityComparator();
    133133      SubScopesRemover subScopesRemover1 = new SubScopesRemover();
     
    141141      UniformSubScopesProcessor uniformSubScopesProcessor4 = new UniformSubScopesProcessor();
    142142      Placeholder evaluator2 = new Placeholder();
    143       IntCounter evaluationCounter2 = new IntCounter();
     143      SubScopesCounter subScopesCounter2 = new SubScopesCounter();
    144144      MergingReducer mergingReducer1 = new MergingReducer();
    145145      UniformSubScopesProcessor uniformSubScopesProcessor5 = new UniformSubScopesProcessor();
     
    149149      UniformSubScopesProcessor uniformSubScopesProcessor6 = new UniformSubScopesProcessor();
    150150      Placeholder evaluator3 = new Placeholder();
    151       IntCounter evaluationCounter3 = new IntCounter();
     151      SubScopesCounter subScopesCounter3 = new SubScopesCounter();
    152152      WeightedParentsQualityComparator qualityComparer2 = new WeightedParentsQualityComparator();
    153153      SubScopesRemover subScopesRemover2 = new SubScopesRemover();
     
    176176      evaluator1.OperatorParameter.ActualName = EvaluatorParameter.Name;
    177177
    178       evaluationCounter1.Name = "EvaluatedSolutions++";
    179       evaluationCounter1.Increment = new IntValue(1);
    180       evaluationCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
     178      subScopesCounter1.Name = "Increment EvaluatedSolutions";
     179      subScopesCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
    181180
    182181      qualityComparer1.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
     
    209208      evaluator2.OperatorParameter.ActualName = EvaluatorParameter.Name;
    210209
    211       evaluationCounter2.Name = "EvaluatedSolutions++";
    212       evaluationCounter2.Increment = new IntValue(1);
    213       evaluationCounter2.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
     210      subScopesCounter2.Name = "Increment EvaluatedSolutions";
     211      subScopesCounter2.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
    214212
    215213      crossover2.Name = "Crossover (placeholder)";
     
    227225      evaluator3.OperatorParameter.ActualName = EvaluatorParameter.Name;
    228226
    229       evaluationCounter3.Name = "EvaluatedSolutions++";
    230       evaluationCounter3.Increment = new IntValue(1);
    231       evaluationCounter3.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
     227      subScopesCounter3.Name = "Increment EvaluatedSolutions";
     228      subScopesCounter3.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
    232229
    233230      qualityComparer2.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
     
    272269      crossover1.Successor = null;
    273270      uniformSubScopesProcessor2.Operator = evaluator1;
    274       uniformSubScopesProcessor2.Successor = uniformSubScopesProcessor3;
    275       evaluator1.Successor = evaluationCounter1;
    276       evaluationCounter1.Successor = qualityComparer1;
     271      uniformSubScopesProcessor2.Successor = subScopesCounter1;
     272      evaluator1.Successor = qualityComparer1;
    277273      qualityComparer1.Successor = subScopesRemover1;
    278274      subScopesRemover1.Successor = null;
     275      subScopesCounter1.Successor = uniformSubScopesProcessor3;
    279276      uniformSubScopesProcessor3.Operator = mutationBranch1;
    280277      uniformSubScopesProcessor3.Successor = conditionalSelector;
     
    290287      subScopesProcessor2.Successor = mergingReducer1;
    291288      uniformSubScopesProcessor4.Operator = evaluator2;
    292       uniformSubScopesProcessor4.Successor = null;
    293       evaluator2.Successor = evaluationCounter2;
    294       evaluationCounter2.Successor = null;
     289      uniformSubScopesProcessor4.Successor = subScopesCounter2;
     290      evaluator2.Successor = null;
     291      subScopesCounter2.Successor = null;
    295292      mergingReducer1.Successor = null;
    296293      uniformSubScopesProcessor5.Operator = crossover2;
     
    302299      mutator2.Successor = null;
    303300      uniformSubScopesProcessor6.Operator = evaluator3;
    304       uniformSubScopesProcessor6.Successor = null;
    305       evaluator3.Successor = evaluationCounter3;
    306       evaluationCounter3.Successor = qualityComparer2;
     301      uniformSubScopesProcessor6.Successor = subScopesCounter3;
     302      evaluator3.Successor = qualityComparer2;
    307303      qualityComparer2.Successor = subScopesRemover2;
    308304      subScopesRemover2.Successor = null;
     305      subScopesCounter3.Successor = null;
    309306      offspringSelector.OffspringCreator = selector;
    310307      offspringSelector.Successor = subScopesProcessor3;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs

    r4722 r5356  
    215215    }
    216216    private SASEGASAMainLoop MainLoop {
    217       get { return (SASEGASAMainLoop)VillageProcessor.Successor; }
     217      get {
     218        return (SASEGASAMainLoop)(
     219          (ResultsCollector)(
     220            (UniformSubScopesProcessor)(
     221              (VariableCreator)VillageProcessor.Successor
     222            ).Successor
     223          ).Successor
     224        ).Successor;
     225      }
    218226    }
    219227    [Storable]
     
    272280      UniformSubScopesProcessor ussp1 = new UniformSubScopesProcessor();
    273281      SolutionsCreator solutionsCreator = new SolutionsCreator();
     282      VariableCreator variableCreator = new VariableCreator();
     283      UniformSubScopesProcessor ussp2 = new UniformSubScopesProcessor();
     284      SubScopesCounter subScopesCounter = new SubScopesCounter();
     285      ResultsCollector resultsCollector = new ResultsCollector();
    274286      SASEGASAMainLoop mainLoop = new SASEGASAMainLoop();
    275287      OperatorGraph.InitialOperator = randomCreator;
     
    286298
    287299      ussp1.Operator = solutionsCreator;
    288       ussp1.Successor = mainLoop;
     300      ussp1.Successor = variableCreator;
    289301
    290302      solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
    291303      solutionsCreator.Successor = null;
     304
     305      variableCreator.Name = "Initialize EvaluatedSolutions";
     306      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue()));
     307      variableCreator.Successor = ussp2;
     308
     309      ussp2.Operator = subScopesCounter;
     310      ussp2.Successor = resultsCollector;
     311
     312      subScopesCounter.Name = "Increment EvaluatedSolutions";
     313      subScopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
     314
     315      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", "", "EvaluatedSolutions"));
     316      resultsCollector.ResultsParameter.ActualName = "Results";
     317      resultsCollector.Successor = mainLoop;
    292318
    293319      mainLoop.NumberOfVillagesParameter.ActualName = NumberOfVillagesParameter.Name;
     
    306332      mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name;
    307333      mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
     334      mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
    308335      mainLoop.Successor = null;
    309336
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASAMainLoop.cs

    r5208 r5356  
    105105    public ValueLookupParameter<BoolValue> OffspringSelectionBeforeMutationParameter {
    106106      get { return (ValueLookupParameter<BoolValue>)Parameters["OffspringSelectionBeforeMutation"]; }
     107    }
     108    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
     109      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    107110    }
    108111    #endregion
     
    142145      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum genreation that terminates the algorithm."));
    143146      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."));
     147      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
    144148      #endregion
    145149
     
    155159      Placeholder analyzer1 = new Placeholder();
    156160      ResultsCollector resultsCollector1 = new ResultsCollector();
    157       ResultsCollector resultsCollector2 = new ResultsCollector();
    158161      UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
    159162      ConditionalBranch villageTerminatedBySelectionPressure1 = new ConditionalBranch();
     
    161164      Placeholder villageAnalyzer2 = new Placeholder();
    162165      ResultsCollector villageResultsCollector2 = new ResultsCollector();
    163       IntCounter evaluatedSolutionsCounter = new IntCounter();
    164       Assigner villageEvaluatedSolutionsAssigner = new Assigner();
    165166      Comparator villageSelectionPressureComparator = new Comparator();
    166167      ConditionalBranch villageTerminatedBySelectionPressure2 = new ConditionalBranch();
     
    187188      Comparator maximumEvaluatedSolutionsComparator = new Comparator();
    188189      Placeholder analyzer2 = new Placeholder();
    189       ResultsCollector resultsCollector3 = new ResultsCollector();
    190190      ConditionalBranch terminationCondition = new ConditionalBranch();
    191191      ConditionalBranch maximumGenerationsTerminationCondition = new ConditionalBranch();
     
    195195      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class SASEGASA expects this to be called Generations
    196196      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("GenerationsSinceLastReunification", new IntValue(0)));
    197       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
    198197      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("TerminatedVillages", new IntValue(0)));
    199198
     
    208207
    209208      villageVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("Results", new ResultCollection()));
    210       villageVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("VillageEvaluatedSolutions", new IntValue(0)));
    211209      villageVariableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("TerminateSelectionPressure", new BoolValue(false)));
    212210      villageVariableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
     
    231229      resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
    232230
    233       resultsCollector2.CopyValue = new BoolValue(true);
    234       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    235       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    236 
    237231      villageTerminatedBySelectionPressure1.Name = "Village Terminated ?";
    238232      villageTerminatedBySelectionPressure1.ConditionParameter.ActualName = "TerminateSelectionPressure";
     
    242236      mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio";
    243237      mainOperator.ElitesParameter.ActualName = ElitesParameter.Name;
    244       mainOperator.EvaluatedSolutionsParameter.ActualName = "VillageEvaluatedSolutions";
     238      mainOperator.EvaluatedSolutionsParameter.ActualName = EvaluatedSolutionsParameter.Name;
    245239      mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
    246240      mainOperator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     
    262256      villageResultsCollector2.ResultsParameter.ActualName = "Results";
    263257
    264       evaluatedSolutionsCounter.Name = "Update EvaluatedSolutions";
    265       evaluatedSolutionsCounter.ValueParameter.ActualName = "EvaluatedSolutions";
    266       evaluatedSolutionsCounter.Increment = null;
    267       evaluatedSolutionsCounter.IncrementParameter.ActualName = "VillageEvaluatedSolutions";
    268 
    269       villageEvaluatedSolutionsAssigner.Name = "Reset EvaluatedSolutions";
    270       villageEvaluatedSolutionsAssigner.LeftSideParameter.ActualName = "VillageEvaluatedSolutions";
    271       villageEvaluatedSolutionsAssigner.RightSideParameter.Value = new IntValue(0);
    272 
    273258      villageSelectionPressureComparator.Name = "SelectionPressure >= MaximumSelectionPressure ?";
    274259      villageSelectionPressureComparator.LeftSideParameter.ActualName = "SelectionPressure";
     
    360345      maximumEvaluatedSolutionsComparator.Name = "EvaluatedSolutions >= MaximumEvaluatedSolutions";
    361346      maximumEvaluatedSolutionsComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
    362       maximumEvaluatedSolutionsComparator.LeftSideParameter.ActualName = "EvaluatedSolutions";
     347      maximumEvaluatedSolutionsComparator.LeftSideParameter.ActualName = EvaluatedSolutionsParameter.Name;
    363348      maximumEvaluatedSolutionsComparator.ResultParameter.ActualName = "TerminateEvaluatedSolutions";
    364349      maximumEvaluatedSolutionsComparator.RightSideParameter.ActualName = "MaximumEvaluatedSolutions";
     
    366351      analyzer2.Name = "Analyzer (placeholder)";
    367352      analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;
    368 
    369       resultsCollector3.CopyValue = new BoolValue(true);
    370       resultsCollector3.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
    371       resultsCollector3.ResultsParameter.ActualName = ResultsParameter.Name;
    372353
    373354      terminationCondition.ConditionParameter.ActualName = "TerminateSASEGASA";
     
    387368      villageAnalyzer1.Successor = villageResultsCollector1;
    388369      analyzer1.Successor = resultsCollector1;
    389       resultsCollector1.Successor = resultsCollector2;
    390       resultsCollector2.Successor = uniformSubScopesProcessor1;
     370      resultsCollector1.Successor = uniformSubScopesProcessor1;
    391371      uniformSubScopesProcessor1.Operator = villageTerminatedBySelectionPressure1;
    392372      uniformSubScopesProcessor1.Successor = generationsCounter;
     
    396376      mainOperator.Successor = villageAnalyzer2;
    397377      villageAnalyzer2.Successor = villageResultsCollector2;
    398       villageResultsCollector2.Successor = evaluatedSolutionsCounter;
    399       evaluatedSolutionsCounter.Successor = villageEvaluatedSolutionsAssigner;
    400       villageEvaluatedSolutionsAssigner.Successor = villageSelectionPressureComparator;
     378      villageResultsCollector2.Successor = villageSelectionPressureComparator;
    401379      villageSelectionPressureComparator.Successor = villageTerminatedBySelectionPressure2;
    402380      villageTerminatedBySelectionPressure2.TrueBranch = terminatedVillagesCounter;
     
    433411      maximumGenerationsComparator.Successor = maximumEvaluatedSolutionsComparator;
    434412      maximumEvaluatedSolutionsComparator.Successor = analyzer2;
    435       analyzer2.Successor = resultsCollector3;
    436       resultsCollector3.Successor = terminationCondition;
     413      analyzer2.Successor = terminationCondition;
    437414      terminationCondition.TrueBranch = null;
    438415      terminationCondition.FalseBranch = maximumGenerationsTerminationCondition;
Note: See TracChangeset for help on using the changeset viewer.