Free cookie consent management tool by TermsFeed Policy Generator

Changeset 8377


Ignore:
Timestamp:
08/01/12 16:05:35 (12 years ago)
Author:
jkarder
Message:

#1247:

  • added support for batch offspring creation
  • added population size analyzer
  • improved operator graph
Location:
branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3
Files:
4 added
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/DuplicatesSelector.cs

    r8354 r8377  
    2626using HeuristicLab.Optimization;
    2727using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     28using HeuristicLab.Selection;
    2829
    29 namespace HeuristicLab.Selection {
     30namespace HeuristicLab.Algorithms.RAPGA {
    3031  /// <summary>
    3132  /// A selection operator which considers a single solution representation and selects duplicates.
    3233  /// </summary>
    33   [Item("DuplicateSelector", "A selection operator which considers a single solution representation and selects duplicates.")]
     34  /// <remarks>
     35  /// The remaining scope then contains unique solutions and the selected scope their duplicates.
     36  /// </remarks>
     37  [Item("DuplicatesSelector", "A selection operator which considers a single solution representation and selects duplicates. The remaining scope then contains unique solutions and the selected scope their duplicates.")]
    3438  [StorableClass]
    35   public sealed class DuplicateSelector : SingleObjectiveSelector, ISingleObjectiveSelector, ISimilarityBasedOperator {
     39  public sealed class DuplicatesSelector : SingleObjectiveSelector, ISingleObjectiveSelector, ISimilarityBasedOperator {
    3640    #region ISimilarityBasedOperator Members
    3741    [Storable]
     
    3943    #endregion
    4044
    41     public DuplicateSelector() : base() { }
    4245    [StorableConstructor]
    43     private DuplicateSelector(bool deserializing) : base(deserializing) { }
    44     private DuplicateSelector(DuplicateSelector original, Cloner cloner)
     46    private DuplicatesSelector(bool deserializing) : base(deserializing) { }
     47    private DuplicatesSelector(DuplicatesSelector original, Cloner cloner)
    4548      : base(original, cloner) {
    4649      this.SimilarityCalculator = cloner.Clone(original.SimilarityCalculator);
    4750    }
     51    public DuplicatesSelector() : base() { }
     52
    4853    public override IDeepCloneable Clone(Cloner cloner) {
    49       return new DuplicateSelector(this, cloner);
     54      return new DuplicatesSelector(this, cloner);
    5055    }
    51 
    5256
    5357    protected override IScope[] Select(List<IScope> scopes) {
  • branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/HeuristicLab.Algorithms.RAPGA-3.3.csproj

    r8349 r8377  
    9797  </ItemGroup>
    9898  <ItemGroup>
    99     <Compile Include="DuplicateSelector.cs" />
     99    <Compile Include="Analyzers\PopulationSizeAnalyzer.cs" />
     100    <Compile Include="DuplicatesSelector.cs" />
     101    <Compile Include="OffspringRestorer.cs" />
     102    <Compile Include="ProgressiveOffspringPreserver.cs" />
    100103    <Compile Include="RAPGA.cs" />
    101104    <Compile Include="RAPGAMainLoop.cs" />
  • branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/RAPGA.cs

    r8359 r8377  
    7676      get { return (IValueParameter<IntValue>)Parameters["Effort"]; }
    7777    }
     78    private IValueParameter<IntValue> BatchSizeParameter {
     79      get { return (IValueParameter<IntValue>)Parameters["BatchSize"]; }
     80    }
    7881    public IConstrainedValueParameter<ISelector> SelectorParameter {
    7982      get { return (IConstrainedValueParameter<ISelector>)Parameters["Selector"]; }
     
    131134      set { EffortParameter.Value = value; }
    132135    }
     136    public IntValue BatchSize {
     137      get { return BatchSizeParameter.Value; }
     138      set { BatchSizeParameter.Value = value; }
     139    }
    133140    public ISelector Selector {
    134141      get { return SelectorParameter.Value; }
     
    174181    [Storable]
    175182    private BestAverageWorstQualityAnalyzer qualityAnalyzer;
     183    [Storable]
     184    private PopulationSizeAnalyzer populationSizeAnalyzer;
    176185    #endregion
    177186
     
    183192      : base(original, cloner) {
    184193      qualityAnalyzer = cloner.Clone(original.qualityAnalyzer);
     194      populationSizeAnalyzer = cloner.Clone(original.populationSizeAnalyzer);
    185195      Initialize();
    186196    }
     
    191201      Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100)));
    192202      Parameters.Add(new ValueParameter<IntValue>("MinimumPopulationSize", "The minimum size of the population of solutions.", new IntValue(2)));
    193       Parameters.Add(new ValueParameter<IntValue>("MaximumPopulationSize", "The maximum size of the population of solutions.", new IntValue(299)));
     203      Parameters.Add(new ValueParameter<IntValue>("MaximumPopulationSize", "The maximum size of the population of solutions.", new IntValue(300)));
    194204      Parameters.Add(new ValueParameter<DoubleValue>("ComparisonFactor", "The comparison factor.", new DoubleValue(0.0)));
    195       Parameters.Add(new ValueParameter<IntValue>("Effort", "The maximum number of offspring created in each generation.", new IntValue(400)));
     205      Parameters.Add(new ValueParameter<IntValue>("Effort", "The maximum number of offspring created in each generation.", new IntValue(1000)));
     206      Parameters.Add(new ValueParameter<IntValue>("BatchSize", "The number of children that should be created during one iteration of the offspring creation process.", new IntValue(10)));
    196207      Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction."));
    197208      Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions."));
     
    247258
    248259      qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
     260      populationSizeAnalyzer = new PopulationSizeAnalyzer();
    249261      ParameterizeAnalyzers();
    250262      UpdateAnalyzers();
     
    302314      base.Problem_OperatorsChanged(sender, e);
    303315    }
    304     void EffortParameter_ValueChanged(object sender, EventArgs e) {
    305       Effort.ValueChanged +=new EventHandler(Effort_ValueChanged);
    306       ParameterizeSelectors();
    307     }
    308     void Effort_ValueChanged(object sender, EventArgs e) {
     316    void BatchSizeParameter_ValueChanged(object sender, EventArgs e) {
     317      BatchSize.ValueChanged += new EventHandler(BatchSize_ValueChanged);
     318      ParameterizeSelectors();
     319    }
     320    void BatchSize_ValueChanged(object sender, EventArgs e) {
    309321      ParameterizeSelectors();
    310322    }
     
    337349      ElitesParameter.ValueChanged += new EventHandler(ElitesParameter_ValueChanged);
    338350      Elites.ValueChanged += new EventHandler(Elites_ValueChanged);
    339       EffortParameter.ValueChanged += new EventHandler(EffortParameter_ValueChanged);
    340       Effort.ValueChanged += new EventHandler(Effort_ValueChanged);
     351      BatchSizeParameter.ValueChanged += new EventHandler(BatchSizeParameter_ValueChanged);
     352      BatchSize.ValueChanged += new EventHandler(BatchSize_ValueChanged);
    341353      if (Problem != null) {
    342354        Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
     
    365377      foreach (ISelector selector in SelectorParameter.ValidValues) {
    366378        selector.CopySelected = new BoolValue(true);
    367         selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * EffortParameter.Value.Value);
     379        selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * BatchSize.Value);
    368380        selector.NumberOfSelectedSubScopesParameter.Hidden = true;
    369381        ParameterizeStochasticOperator(selector);
     
    381393      qualityAnalyzer.ResultsParameter.ActualName = "Results";
    382394      qualityAnalyzer.ResultsParameter.Hidden = true;
     395      populationSizeAnalyzer.ResultsParameter.ActualName = "Results";
     396      populationSizeAnalyzer.ResultsParameter.Hidden = true;
    383397      if (Problem != null) {
    384398        qualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
     
    437451      }
    438452      Analyzer.Operators.Add(qualityAnalyzer, qualityAnalyzer.EnabledByDefault);
     453      Analyzer.Operators.Add(populationSizeAnalyzer, populationSizeAnalyzer.EnabledByDefault);
    439454    }
    440455    private void UpdateSimilarityCalculators() {
  • branches/RAPGA/HeuristicLab.Algorithms.RAPGA/3.3/RAPGAMainLoop.cs

    r8359 r8377  
    136136      #region Create operators
    137137      VariableCreator variableCreator = new VariableCreator();
    138       IntCounter intCounter1 = new IntCounter();
     138      Assigner assigner1 = new Assigner();
    139139      ResultsCollector resultsCollector = new ResultsCollector();
    140140      Placeholder analyzer1 = new Placeholder();
     
    142142      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
    143143      ChildrenCreator childrenCreator = new ChildrenCreator();
    144       UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
     144      UniformSubScopesProcessor uniformSubScopesProcessor = new UniformSubScopesProcessor();
    145145      Placeholder crossover = new Placeholder();
    146146      StochasticBranch stochasticBranch = new StochasticBranch();
    147147      Placeholder mutator = new Placeholder();
    148       UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
    149148      Placeholder evaluator = new Placeholder();
    150       WeightedParentsQualityComparator comparator1 = new WeightedParentsQualityComparator();
     149      WeightedParentsQualityComparator weightedParentsQualityComparator = new WeightedParentsQualityComparator();
     150      SubScopesRemover subScopesRemover = new SubScopesRemover();
    151151      SubScopesCounter subScopesCounter1 = new SubScopesCounter();
     152      IntCounter intCounter1 = new IntCounter();
    152153      ConditionalSelector conditionalSelector = new ConditionalSelector();
    153154      RightReducer rightReducer1 = new RightReducer();
    154       UniformSubScopesProcessor uniformSubScopesProcessor3 = new UniformSubScopesProcessor();
    155       SubScopesRemover subScopesRemover = new SubScopesRemover();
    156       DuplicateSelector duplicateSelector = new DuplicateSelector();
    157       LeftReducer leftReducer = new LeftReducer();
     155      DuplicatesSelector duplicateSelector = new DuplicatesSelector();
     156      LeftReducer leftReducer1 = new LeftReducer();
     157      ProgressiveOffspringPreserver progressiveOffspringSelector = new ProgressiveOffspringPreserver();
    158158      SubScopesCounter subScopesCounter2 = new SubScopesCounter();
     159      Comparator comparator1 = new Comparator();
     160      ConditionalBranch conditionalBranch1 = new ConditionalBranch();
    159161      Comparator comparator2 = new Comparator();
    160       ConditionalBranch conditionalBranch1 = new ConditionalBranch();
    161       BestSelector bestSelector1 = new BestSelector();
    162       BestSelector bestSelector2 = new BestSelector();
     162      ConditionalBranch conditionalBranch2 = new ConditionalBranch();
     163      LeftReducer leftReducer2 = new LeftReducer();
     164      SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
     165      BestSelector bestSelector = new BestSelector();
    163166      RightReducer rightReducer2 = new RightReducer();
    164       SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
    165       BestSelector bestSelector3 = new BestSelector();
    166       RightReducer rightReducer3 = new RightReducer();
     167      ScopeCleaner scopeCleaner = new ScopeCleaner();
     168      OffspringRestorer offspringRestorer = new OffspringRestorer();
    167169      MergingReducer mergingReducer = new MergingReducer();
    168170      IntCounter intCounter2 = new IntCounter();
     171      SubScopesCounter subScopesCounter3 = new SubScopesCounter();
    169172      Comparator comparator3 = new Comparator();
    170173      Placeholder analyzer2 = new Placeholder();
    171       ConditionalBranch conditionalBranch2 = new ConditionalBranch();
    172       SubScopesCounter subScopesCounter3 = new SubScopesCounter();
     174      ConditionalBranch conditionalBranch3 = new ConditionalBranch();
    173175      Comparator comparator4 = new Comparator();
    174       ConditionalBranch conditionalBranch3 = new ConditionalBranch();
     176      ConditionalBranch conditionalBranch4 = new ConditionalBranch();
     177      Assigner assigner2 = new Assigner();
     178      Assigner assigner3 = new Assigner();
     179      Assigner assigner4 = new Assigner();
    175180
    176181      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class RAPGA expects this to be called Generations
    177182      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("CurrentPopulationSize", new IntValue(0)));
    178 
    179       intCounter1.Name = "Initialize CurrentPopulationSize";
    180       intCounter1.IncrementParameter.ActualName = PopulationSizeParameter.Name;
    181       intCounter1.IncrementParameter.Value = null;
    182       intCounter1.ValueParameter.ActualName = "CurrentPopulationSize";
     183      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("NumberOfCreatedOffspring", new IntValue(0)));
     184      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("NumberOfSuccessfulOffspring", new IntValue(0)));
     185      variableCreator.CollectedValues.Add(new ValueParameter<ScopeList>("OffspringList", new ScopeList()));
     186
     187      assigner1.Name = "Initialize CurrentPopulationSize";
     188      assigner1.LeftSideParameter.ActualName = "CurrentPopulationSize";
     189      assigner1.RightSideParameter.ActualName = PopulationSizeParameter.Name;
    183190
    184191      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
     
    194201      childrenCreator.ParentsPerChild = new IntValue(2);
    195202
     203      uniformSubScopesProcessor.Parallel.Value = true;
     204
    196205      crossover.Name = "Crossover";
    197206      crossover.OperatorParameter.ActualName = "Crossover";
     
    203212      mutator.OperatorParameter.ActualName = "Mutator";
    204213
    205       uniformSubScopesProcessor2.Parallel.Value = true;
    206 
    207214      evaluator.Name = "Evaluator";
    208215      evaluator.OperatorParameter.ActualName = "Evaluator";
    209216
    210       comparator1.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
    211       comparator1.LeftSideParameter.ActualName = QualityParameter.Name;
    212       comparator1.MaximizationParameter.ActualName = MaximizationParameter.Name;
    213       comparator1.RightSideParameter.ActualName = QualityParameter.Name;
    214       comparator1.ResultParameter.ActualName = "SuccessfulOffspring";
    215 
    216       subScopesCounter1.Name = "Increment EvaluatedSolutions";
    217       subScopesCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
     217      weightedParentsQualityComparator.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
     218      weightedParentsQualityComparator.LeftSideParameter.ActualName = QualityParameter.Name;
     219      weightedParentsQualityComparator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     220      weightedParentsQualityComparator.RightSideParameter.ActualName = QualityParameter.Name;
     221      weightedParentsQualityComparator.ResultParameter.ActualName = "SuccessfulOffspring";
     222
     223      subScopesRemover.RemoveAllSubScopes = true;
     224
     225      subScopesCounter1.Name = "Increment NumberOfCreatedOffspring";
     226      subScopesCounter1.ValueParameter.ActualName = "NumberOfCreatedOffspring";
     227
     228      intCounter1.Name = "Increment EvaluatedSolutions";
     229      intCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
     230      intCounter1.Increment = null;
     231      intCounter1.IncrementParameter.ActualName = "NumberOfCreatedOffspring";
    218232
    219233      conditionalSelector.ConditionParameter.ActualName = "SuccessfulOffspring";
     
    223237      duplicateSelector.CopySelected.Value = false;
    224238
    225       uniformSubScopesProcessor3.Parallel.Value = true;
    226 
    227       subScopesRemover.RemoveAllSubScopes = true;
     239      progressiveOffspringSelector.OffspringListParameter.ActualName = "OffspringList";
     240      progressiveOffspringSelector.ElitesParameter.ActualName = ElitesParameter.Name;
     241      progressiveOffspringSelector.MaximumPopulationSizeParameter.ActualName = MaximumPopulationSizeParameter.Name;
    228242
    229243      subScopesCounter2.Name = "Count Successful Offspring";
    230244      subScopesCounter2.ValueParameter.ActualName = "NumberOfSuccessfulOffspring";
    231245
     246      comparator1.Name = "NumberOfSuccessfulOffspring >= MaximumPopulationSize";
     247      comparator1.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
     248      comparator1.LeftSideParameter.ActualName = "NumberOfSuccessfulOffspring";
     249      comparator1.RightSideParameter.ActualName = MaximumPopulationSizeParameter.Name;
     250      comparator1.ResultParameter.ActualName = "Break";
     251
     252      conditionalBranch1.Name = "Break?";
     253      conditionalBranch1.ConditionParameter.ActualName = "Break";
     254
     255      comparator2.Name = "NumberOfCreatedOffspring >= Effort";
    232256      comparator2.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
    233       comparator2.LeftSideParameter.ActualName = "NumberOfSuccessfulOffspring";
    234       comparator2.RightSideParameter.ActualName = MaximumPopulationSizeParameter.Name;
    235       comparator2.ResultParameter.ActualName = "SelectMaximum";
    236 
    237       conditionalBranch1.ConditionParameter.ActualName = "SelectMaximum";
    238 
    239       bestSelector1.CopySelected = new BoolValue(false);
    240       bestSelector1.MaximizationParameter.ActualName = MaximizationParameter.Name;
    241       bestSelector1.NumberOfSelectedSubScopesParameter.ActualName = MaximumPopulationSizeParameter.Name;
    242       bestSelector1.QualityParameter.ActualName = QualityParameter.Name;
    243 
    244       bestSelector2.CopySelected = new BoolValue(false);
    245       bestSelector2.MaximizationParameter.ActualName = MaximizationParameter.Name;
    246       bestSelector2.NumberOfSelectedSubScopesParameter.ActualName = "NumberOfSuccessfulOffspring";
    247       bestSelector2.QualityParameter.ActualName = QualityParameter.Name;
    248 
    249       bestSelector3.CopySelected = new BoolValue(false);
    250       bestSelector3.MaximizationParameter.ActualName = MaximizationParameter.Name;
    251       bestSelector3.NumberOfSelectedSubScopesParameter.ActualName = "Elites";
    252       bestSelector3.QualityParameter.ActualName = QualityParameter.Name;
    253 
     257      comparator2.LeftSideParameter.ActualName = "NumberOfCreatedOffspring";
     258      comparator2.RightSideParameter.ActualName = EffortParameter.Name;
     259      comparator2.ResultParameter.ActualName = "Break";
     260
     261      conditionalBranch2.Name = "Break?";
     262      conditionalBranch2.ConditionParameter.ActualName = "Break";
     263
     264      bestSelector.CopySelected = new BoolValue(false);
     265      bestSelector.MaximizationParameter.ActualName = MaximizationParameter.Name;
     266      bestSelector.NumberOfSelectedSubScopesParameter.ActualName = "Elites";
     267      bestSelector.QualityParameter.ActualName = QualityParameter.Name;
     268
     269      intCounter2.Name = "Increment Generations";
    254270      intCounter2.Increment = new IntValue(1);
    255271      intCounter2.ValueParameter.ActualName = "Generations";
    256 
     272      subScopesCounter3.Name = "Set CurrentPopulationSize";
     273
     274      subScopesCounter3.ValueParameter.ActualName = "CurrentPopulationSize";
     275      subScopesCounter3.AccumulateParameter.Value = new BoolValue(false);
     276
     277      comparator3.Name = "Generations >= MaximumGenerations";
    257278      comparator3.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
    258279      comparator3.LeftSideParameter.ActualName = "Generations";
     
    263284      analyzer2.OperatorParameter.ActualName = "Analyzer";
    264285
    265       conditionalBranch2.ConditionParameter.ActualName = "Terminate";
    266 
    267       subScopesCounter3.Name = "Set CurrentPopulationSize";
    268       subScopesCounter3.ValueParameter.ActualName = "CurrentPopulationSize";
    269       subScopesCounter3.AccumulateParameter.Value = new BoolValue(false);
    270 
     286      conditionalBranch3.Name = "Terminate?";
     287      conditionalBranch3.ConditionParameter.ActualName = "Terminate";
     288
     289      comparator4.Name = "CurrentPopulationSize < MinimumPopulationSize";
    271290      comparator4.Comparison = new Comparison(ComparisonType.Less);
    272291      comparator4.LeftSideParameter.ActualName = "CurrentPopulationSize";
     
    274293      comparator4.ResultParameter.ActualName = "Terminate";
    275294
    276       conditionalBranch3.ConditionParameter.ActualName = "Terminate";
     295      conditionalBranch4.Name = "Terminate?";
     296      conditionalBranch4.ConditionParameter.ActualName = "Terminate";
     297
     298      assigner2.Name = "Reset NumberOfCreatedOffspring";
     299      assigner2.LeftSideParameter.ActualName = "NumberOfCreatedOffspring";
     300      assigner2.RightSideParameter.Value = new IntValue(0);
     301
     302      assigner3.Name = "Reset NumberOfSuccessfulOffspring";
     303      assigner3.LeftSideParameter.ActualName = "NumberOfSuccessfulOffspring";
     304      assigner3.RightSideParameter.Value = new IntValue(0);
     305
     306      assigner4.Name = "Reset OffspringList";
     307      assigner4.LeftSideParameter.ActualName = "OffspringList";
     308      assigner4.RightSideParameter.Value = new ScopeList();
    277309      #endregion
    278310
    279311      #region Create operator graph
    280312      OperatorGraph.InitialOperator = variableCreator;
    281       variableCreator.Successor = intCounter1;
    282       intCounter1.Successor = resultsCollector;
     313      variableCreator.Successor = assigner1;
     314      assigner1.Successor = resultsCollector;
    283315      resultsCollector.Successor = analyzer1;
    284316      analyzer1.Successor = selector;
     
    286318      subScopesProcessor1.Operators.Add(new EmptyOperator());
    287319      subScopesProcessor1.Operators.Add(childrenCreator);
    288       subScopesProcessor1.Successor = subScopesProcessor2;
    289       childrenCreator.Successor = uniformSubScopesProcessor1;
    290       uniformSubScopesProcessor1.Operator = crossover;
    291       uniformSubScopesProcessor1.Successor = uniformSubScopesProcessor2;
     320      subScopesProcessor1.Successor = comparator1;
     321      childrenCreator.Successor = uniformSubScopesProcessor;
     322      uniformSubScopesProcessor.Operator = crossover;
     323      uniformSubScopesProcessor.Successor = subScopesCounter1;
    292324      crossover.Successor = stochasticBranch;
    293325      stochasticBranch.FirstBranch = mutator;
    294326      stochasticBranch.SecondBranch = null;
    295       stochasticBranch.Successor = null;
    296327      mutator.Successor = null;
    297       subScopesRemover.Successor = null;
    298       uniformSubScopesProcessor2.Operator = evaluator;
    299       uniformSubScopesProcessor2.Successor = subScopesCounter1;
    300       evaluator.Successor = comparator1;
    301       subScopesCounter1.Successor = conditionalSelector;
     328      stochasticBranch.Successor = evaluator;
     329      evaluator.Successor = weightedParentsQualityComparator;
     330      weightedParentsQualityComparator.Successor = subScopesRemover;
     331      subScopesCounter1.Successor = intCounter1;
     332      intCounter1.Successor = conditionalSelector;
    302333      conditionalSelector.Successor = rightReducer1;
    303       rightReducer1.Successor = uniformSubScopesProcessor3;
    304       uniformSubScopesProcessor3.Operator = subScopesRemover;
    305       uniformSubScopesProcessor3.Successor = duplicateSelector;
    306       duplicateSelector.Successor = leftReducer;
    307       leftReducer.Successor = subScopesCounter2;
    308       subScopesCounter2.Successor = comparator2;
    309       comparator2.Successor = conditionalBranch1;
    310       conditionalBranch1.TrueBranch = bestSelector1;
    311       conditionalBranch1.FalseBranch = bestSelector2;
    312       bestSelector1.Successor = rightReducer2;
    313       bestSelector2.Successor = rightReducer2;
    314       subScopesProcessor2.Operators.Add(bestSelector3);
    315       subScopesProcessor2.Operators.Add(new EmptyOperator());
     334      rightReducer1.Successor = duplicateSelector;
     335      duplicateSelector.Successor = leftReducer1;
     336      leftReducer1.Successor = progressiveOffspringSelector;
     337      progressiveOffspringSelector.Successor = subScopesCounter2;
     338      comparator1.Successor = conditionalBranch1;
     339      conditionalBranch1.FalseBranch = comparator2;
     340      conditionalBranch1.TrueBranch = subScopesProcessor2;
     341      comparator2.Successor = conditionalBranch2;
     342      conditionalBranch2.FalseBranch = leftReducer2;
     343      conditionalBranch2.TrueBranch = subScopesProcessor2;
     344      leftReducer2.Successor = selector;
     345      subScopesProcessor2.Operators.Add(bestSelector);
     346      subScopesProcessor2.Operators.Add(scopeCleaner);
    316347      subScopesProcessor2.Successor = mergingReducer;
    317       bestSelector3.Successor = rightReducer3;
    318       rightReducer3.Successor = null;
     348      bestSelector.Successor = rightReducer2;
     349      rightReducer2.Successor = null;
     350      scopeCleaner.Successor = offspringRestorer;
    319351      mergingReducer.Successor = intCounter2;
    320       intCounter2.Successor = comparator3;
    321       comparator3.Successor = analyzer2;
    322       analyzer2.Successor = conditionalBranch2;
    323       conditionalBranch2.FalseBranch = subScopesCounter3;
    324       conditionalBranch2.TrueBranch = null;
    325       conditionalBranch2.Successor = null;
    326       subScopesCounter3.Successor = comparator4;
    327       comparator4.Successor = conditionalBranch3;
    328       conditionalBranch3.FalseBranch = selector;
     352      intCounter2.Successor = subScopesCounter3;
     353      subScopesCounter3.Successor = analyzer2;
     354      analyzer2.Successor = comparator3;
     355      comparator3.Successor = conditionalBranch3;
     356      conditionalBranch3.FalseBranch = comparator4;
    329357      conditionalBranch3.TrueBranch = null;
    330358      conditionalBranch3.Successor = null;
     359      comparator4.Successor = conditionalBranch4;
     360      conditionalBranch4.FalseBranch = assigner2;
     361      conditionalBranch4.TrueBranch = null;
     362      conditionalBranch4.Successor = null;
     363      assigner2.Successor = assigner3;
     364      assigner3.Successor = assigner4;
     365      assigner4.Successor = selector;
     366
    331367      #endregion
    332368    }
Note: See TracChangeset for help on using the changeset viewer.