Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/05/10 00:21:40 (15 years ago)
Author:
abeham
Message:

updated SASEGASA: removed mainloop
fixed a bug in the island OSGA regarding evaluated solutions
#839

Location:
trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3
Files:
2 edited

Legend:

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

    r3611 r3615  
    193193      Placeholder islandVisualizer2 = new Placeholder();
    194194      IntCounter islandEvaluatedSolutionsCounter = new IntCounter();
     195      Assigner islandEvaluatedSolutionsAssigner = new Assigner();
    195196      Comparator islandSelectionPressureComparator = new Comparator();
    196197      ConditionalBranch islandTerminatedBySelectionPressure2 = new ConditionalBranch();
     
    265266      islandResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Absolute Difference of Best Known Quality to Best Quality", null, "AbsoluteDifferenceBestKnownToBest"));
    266267      islandResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Relative Difference of Best Known Quality to Best Quality", null, "RelativeDifferenceBestKnownToBest"));
    267       islandResultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "IslandEvaluatedSolutions"));
    268268      islandResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Curent Comparison Factor", null, "ComparisonFactor"));
    269269      islandResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Selection Pressure", null, "SelectionPressure"));
     
    372372      islandEvaluatedSolutionsCounter.Increment = null;
    373373      islandEvaluatedSolutionsCounter.IncrementParameter.ActualName = "IslandEvaluatedSolutions";
     374
     375      islandEvaluatedSolutionsAssigner.Name = "Reset EvaluatedSolutions";
     376      islandEvaluatedSolutionsAssigner.LeftSideParameter.ActualName = "IslandEvaluatedSolutions";
     377      islandEvaluatedSolutionsAssigner.RightSideParameter.Value = new IntValue(0);
    374378
    375379      islandSelectionPressureComparator.Name = "SelectionPressure >= MaximumSelectionPressure ?";
     
    510514      islandQualityDifferenceCalculator2.Successor = islandVisualizer2;
    511515      islandVisualizer2.Successor = islandEvaluatedSolutionsCounter;
    512       islandEvaluatedSolutionsCounter.Successor = islandSelectionPressureComparator;
     516      islandEvaluatedSolutionsCounter.Successor = islandEvaluatedSolutionsAssigner;
     517      islandEvaluatedSolutionsAssigner.Successor = islandSelectionPressureComparator;
    513518      islandSelectionPressureComparator.Successor = islandTerminatedBySelectionPressure2;
    514519      islandTerminatedBySelectionPressure2.TrueBranch = terminatedIslandsCounter;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASAMainLoop.cs

    r3490 r3615  
    9090    public ValueLookupParameter<DoubleValue> SuccessRatioParameter {
    9191      get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; }
     92    }
     93    public LookupParameter<DoubleValue> ComparisonFactorParameter {
     94      get { return (LookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; }
    9295    }
    9396    public ValueLookupParameter<DoubleValue> ComparisonFactorLowerBoundParameter {
     
    135138      Parameters.Add(new LookupParameter<IItem>("Visualization", "The item which represents the visualization of solutions."));
    136139      Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved."));
     140      Parameters.Add(new LookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor is used to determine whether the offspring should be compared to the better parent, the worse parent or a quality value linearly interpolated between them. It is in the range [0;1]."));
    137141      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start)."));
    138142      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorUpperBound", "The upper bound of the comparison factor (end)."));
     
    149153      Assigner villageCountAssigner = new Assigner();
    150154      Assigner comparisonFactorInitializer = new Assigner();
    151       UniformSubScopesProcessor ussp0 = new UniformSubScopesProcessor();
    152       VariableCreator islandVariableCreator = new VariableCreator();
    153       Assigner islandVariableAssigner = new Assigner();
     155      UniformSubScopesProcessor uniformSubScopesProcessor0 = new UniformSubScopesProcessor();
     156      VariableCreator villageVariableCreator = new VariableCreator();
     157      BestQualityMemorizer villageBestQualityMemorizer1 = new BestQualityMemorizer();
     158      BestAverageWorstQualityCalculator villageBestAverageWorstQualityCalculator1 = new BestAverageWorstQualityCalculator();
     159      DataTableValuesCollector villageDataTableValuesCollector1 = new DataTableValuesCollector();
     160      DataTableValuesCollector villageDataTableValuesCollector2 = new DataTableValuesCollector();
     161      QualityDifferenceCalculator villageQualityDifferenceCalculator1 = new QualityDifferenceCalculator();
     162      ResultsCollector villageResultsCollector = new ResultsCollector();
    154163      BestQualityMemorizer bestQualityMemorizer1 = new BestQualityMemorizer();
     164      BestQualityMemorizer bestQualityMemorizer2 = new BestQualityMemorizer();
    155165      BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator1 = new BestAverageWorstQualityCalculator();
    156       BestQualityMemorizer bestQualityMemorizer2 = new BestQualityMemorizer();
    157       BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator2 = new BestAverageWorstQualityCalculator();
    158166      DataTableValuesCollector dataTableValuesCollector1 = new DataTableValuesCollector();
    159       DataTableValuesCollector selPressValuesCollector1 = new DataTableValuesCollector();
     167      DataTableValuesCollector dataTableValuesCollector2 = new DataTableValuesCollector();
    160168      QualityDifferenceCalculator qualityDifferenceCalculator1 = new QualityDifferenceCalculator();
    161169      ResultsCollector resultsCollector = new ResultsCollector();
    162       Assigner fixedReunificationStepConditionInitializer = new Assigner();
    163       UniformSubScopesProcessor ussp1 = new UniformSubScopesProcessor();
    164       // MAINLOOP
    165       OffspringSelectionGeneticAlgorithmMainLoop mainLoop = new OffspringSelectionGeneticAlgorithmMainLoop();
    166       // MAINLOOP
    167       Comparator sasegasaGenVillageGenComparator = new Comparator();
    168       ConditionalBranch sasegasaGenerationsUpdateBranch = new ConditionalBranch();
    169       Assigner sasegasaGenerationsUpdater = new Assigner();
    170       ConditionalBranch villageMaximumGenerationsConditionalBranch1 = new ConditionalBranch();
    171       Assigner fixedReunificationStepConditionUpdater = new Assigner();
    172       ResultsCollector sasegasaGenerationsCollector = new ResultsCollector();
    173       UniformSubScopesProcessor ussp2 = new UniformSubScopesProcessor();
    174       ConditionalBranch villageMaximumGenerationsConditionalBranch2 = new ConditionalBranch();
    175       Assigner villageMaximumGenerationsToGenerationsAssigner = new Assigner();
    176       IntCounter villageMaximumGenerationsCounter = new IntCounter();
    177       DataTableValuesCollector selPressValuesCollector2 = new DataTableValuesCollector();
    178       Comparator villageCountComparator1 = new Comparator();
    179       ConditionalBranch villageTerminationCondition1 = new ConditionalBranch();
     170      UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
     171      ConditionalBranch villageTerminatedBySelectionPressure1 = new ConditionalBranch();
     172      OffspringSelectionGeneticAlgorithmMainOperator mainOperator = new OffspringSelectionGeneticAlgorithmMainOperator();
     173      BestQualityMemorizer villageBestQualityMemorizer2 = new BestQualityMemorizer();
     174      BestAverageWorstQualityCalculator villageBestAverageWorstQualityCalculator2 = new BestAverageWorstQualityCalculator();
     175      DataTableValuesCollector villageDataTableValuesCollector3 = new DataTableValuesCollector();
     176      DataTableValuesCollector villageDataTableValuesCollector4 = new DataTableValuesCollector();
     177      QualityDifferenceCalculator villageQualityDifferenceCalculator2 = new QualityDifferenceCalculator();
     178      IntCounter evaluatedSolutionsCounter = new IntCounter();
     179      Assigner villageEvaluatedSolutionsAssigner = new Assigner();
     180      Comparator villageSelectionPressureComparator = new Comparator();
     181      ConditionalBranch villageTerminatedBySelectionPressure2 = new ConditionalBranch();
     182      IntCounter terminatedVillagesCounter = new IntCounter();
     183      IntCounter generationsCounter = new IntCounter();
     184      IntCounter generationsSinceLastReunificationCounter = new IntCounter();
     185      Comparator reunificationComparator1 = new Comparator();
     186      ConditionalBranch reunificationConditionalBranch1 = new ConditionalBranch();
     187      Comparator reunificationComparator2 = new Comparator();
     188      ConditionalBranch reunificationConditionalBranch2 = new ConditionalBranch();
     189      Comparator reunificationComparator3 = new Comparator();
     190      ConditionalBranch reunificationConditionalBranch3 = new ConditionalBranch();
     191      Assigner resetTerminatedVillagesAssigner = new Assigner();
     192      Assigner resetGenerationsSinceLastReunificationAssigner = new Assigner();
    180193      SASEGASAReunificator reunificator = new SASEGASAReunificator();
    181194      IntCounter reunificationCounter = new IntCounter();
    182195      Placeholder comparisonFactorModifier = new Placeholder();
    183       Comparator villageCountComparator2 = new Comparator();
    184       ConditionalBranch villageTerminationCondition2 = new ConditionalBranch();
     196      UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
     197      Assigner villageReviver = new Assigner();
     198      Comparator villageCountComparator = new Comparator();
     199      ConditionalBranch villageCountConditionalBranch = new ConditionalBranch();
    185200      Assigner finalMaxSelPressAssigner = new Assigner();
    186201      Comparator maximumGenerationsComparator = new Comparator();
    187202      BestQualityMemorizer bestQualityMemorizer3 = new BestQualityMemorizer();
    188       BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator3 = new BestAverageWorstQualityCalculator();
    189       DataTableValuesCollector dataTableValuesCollector2 = new DataTableValuesCollector();
     203      BestQualityMemorizer bestQualityMemorizer4 = new BestQualityMemorizer();
     204      BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator2 = new BestAverageWorstQualityCalculator();
     205      DataTableValuesCollector dataTableValuesCollector3 = new DataTableValuesCollector();
     206      DataTableValuesCollector dataTableValuesCollector4 = new DataTableValuesCollector();
    190207      QualityDifferenceCalculator qualityDifferenceCalculator2 = new QualityDifferenceCalculator();
    191       ConditionalBranch villagesTerminationCondition3 = new ConditionalBranch();
     208      ConditionalBranch terminationCondition = new ConditionalBranch();
    192209      ConditionalBranch maximumGenerationsTerminationCondition = new ConditionalBranch();
    193210
    194       // The generations of SASEGASA progress with the generations of its villages
    195       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("SASEGASAGenerations", new IntValue(0)));
     211      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Reunifications", new IntValue(0)));
     212      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0)));
     213      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("GenerationsSinceLastReunification", new IntValue(0)));
     214      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
     215      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("TerminatedVillages", new IntValue(0)));
    196216
    197217      villageCountAssigner.LeftSideParameter.ActualName = "VillageCount";
     
    204224      comparisonFactorInitializer.RightSideParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    205225
    206       islandVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("VillageResults", new ResultCollection()));
    207       islandVariableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
    208 
    209       islandVariableAssigner.LeftSideParameter.ActualName = "VillageMaximumGenerations";
    210       islandVariableAssigner.RightSideParameter.ActualName = MigrationIntervalParameter.Name;
     226      villageVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("VillageResults", new ResultCollection()));
     227      villageVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("VillageEvaluatedSolutions", new IntValue(0)));
     228      villageVariableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("TerminateSelectionPressure", new BoolValue(false)));
     229      villageVariableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
     230      villageVariableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentSuccessRatio", new DoubleValue(0)));
     231
     232      villageBestQualityMemorizer1.BestQualityParameter.ActualName = "BestQuality";
     233      villageBestQualityMemorizer1.MaximizationParameter.ActualName = MaximizationParameter.Name;
     234      villageBestQualityMemorizer1.QualityParameter.ActualName = QualityParameter.Name;
     235
     236      villageBestAverageWorstQualityCalculator1.AverageQualityParameter.ActualName = "CurrentAverageQuality";
     237      villageBestAverageWorstQualityCalculator1.BestQualityParameter.ActualName = "CurrentBestQuality";
     238      villageBestAverageWorstQualityCalculator1.MaximizationParameter.ActualName = MaximizationParameter.Name;
     239      villageBestAverageWorstQualityCalculator1.QualityParameter.ActualName = QualityParameter.Name;
     240      villageBestAverageWorstQualityCalculator1.WorstQualityParameter.ActualName = "CurrentWorstQuality";
     241
     242      villageDataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestQuality"));
     243      villageDataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average BestQuality", null, "CurrentAverageQuality"));
     244      villageDataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst BestQuality", null, "CurrentWorstQuality"));
     245      villageDataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
     246      villageDataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, BestKnownQualityParameter.Name));
     247      villageDataTableValuesCollector1.DataTableParameter.ActualName = "Qualities";
     248
     249      villageDataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Selection Pressure", null, "SelectionPressure"));
     250      villageDataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Maximum Selection Pressure", null, "MaximumSelectionPressure"));
     251      villageDataTableValuesCollector2.DataTableParameter.ActualName = "SelectionPressures";
     252
     253      villageQualityDifferenceCalculator1.AbsoluteDifferenceParameter.ActualName = "AbsoluteDifferenceBestKnownToBest";
     254      villageQualityDifferenceCalculator1.FirstQualityParameter.ActualName = BestKnownQualityParameter.Name;
     255      villageQualityDifferenceCalculator1.RelativeDifferenceParameter.ActualName = "RelativeDifferenceBestKnownToBest";
     256      villageQualityDifferenceCalculator1.SecondQualityParameter.ActualName = "BestQuality";
     257
     258      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Success Ratio", null, "CurrentSuccessRatio"));
     259      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best Quality", null, "CurrentBestQuality"));
     260      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average Quality", null, "CurrentAverageQuality"));
     261      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst Quality", null, "CurrentWorstQuality"));
     262      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
     263      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, BestKnownQualityParameter.Name));
     264      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Absolute Difference of Best Known Quality to Best Quality", null, "AbsoluteDifferenceBestKnownToBest"));
     265      villageResultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Relative Difference of Best Known Quality to Best Quality", null, "RelativeDifferenceBestKnownToBest"));
     266      villageResultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("Qualities"));
     267      villageResultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("SelectionPressures"));
     268      villageResultsCollector.ResultsParameter.ActualName = "VillageResults";
    211269
    212270      bestQualityMemorizer1.BestQualityParameter.ActualName = "BestQuality";
    213271      bestQualityMemorizer1.MaximizationParameter.ActualName = MaximizationParameter.Name;
    214       bestQualityMemorizer1.QualityParameter.ActualName = QualityParameter.Name;
    215 
    216       bestAverageWorstQualityCalculator1.AverageQualityParameter.ActualName = "CurrentAverageQuality";
    217       bestAverageWorstQualityCalculator1.BestQualityParameter.ActualName = "CurrentBestQuality";
    218       bestAverageWorstQualityCalculator1.MaximizationParameter.ActualName = MaximizationParameter.Name;
    219       bestAverageWorstQualityCalculator1.QualityParameter.ActualName = QualityParameter.Name;
    220       bestAverageWorstQualityCalculator1.WorstQualityParameter.ActualName = "CurrentWorstQuality";
    221 
    222       bestQualityMemorizer2.BestQualityParameter.ActualName = "BestQuality";
     272      bestQualityMemorizer1.QualityParameter.ActualName = "BestQuality";
     273
     274      bestQualityMemorizer2.BestQualityParameter.ActualName = BestKnownQualityParameter.Name;
    223275      bestQualityMemorizer2.MaximizationParameter.ActualName = MaximizationParameter.Name;
    224276      bestQualityMemorizer2.QualityParameter.ActualName = "BestQuality";
    225277
    226       bestAverageWorstQualityCalculator2.AverageQualityParameter.ActualName = "CurrentAverageBestQuality";
    227       bestAverageWorstQualityCalculator2.BestQualityParameter.ActualName = "CurrentBestBestQuality";
    228       bestAverageWorstQualityCalculator2.MaximizationParameter.ActualName = MaximizationParameter.Name;
    229       bestAverageWorstQualityCalculator2.QualityParameter.ActualName = "CurrentBestQuality";
    230       bestAverageWorstQualityCalculator2.WorstQualityParameter.ActualName = "CurrentWorstBestQuality";
     278      bestAverageWorstQualityCalculator1.AverageQualityParameter.ActualName = "CurrentAverageBestQuality";
     279      bestAverageWorstQualityCalculator1.BestQualityParameter.ActualName = "CurrentBestBestQuality";
     280      bestAverageWorstQualityCalculator1.MaximizationParameter.ActualName = MaximizationParameter.Name;
     281      bestAverageWorstQualityCalculator1.QualityParameter.ActualName = "CurrentBestQuality";
     282      bestAverageWorstQualityCalculator1.WorstQualityParameter.ActualName = "CurrentWorstBestQuality";
    231283
    232284      dataTableValuesCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestBestQuality"));
     
    237289      dataTableValuesCollector1.DataTableParameter.ActualName = "BestQualities";
    238290
    239       selPressValuesCollector1.CollectedValues.Add(new SubScopesLookupParameter<DoubleValue>("Selection Pressure Village", null, "SelectionPressure"));
    240       selPressValuesCollector1.DataTableParameter.ActualName = "VillagesSelectionPressures";
     291      dataTableValuesCollector2.CollectedValues.Add(new SubScopesLookupParameter<DoubleValue>("Selection Pressure Village", null, "SelectionPressure"));
     292      dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Maximum Selection Pressure", null, "MaximumSelectionPressure"));
     293      dataTableValuesCollector2.DataTableParameter.ActualName = "VillageSelectionPressures";
    241294
    242295      qualityDifferenceCalculator1.AbsoluteDifferenceParameter.ActualName = "AbsoluteDifferenceBestKnownToBest";
     
    245298      qualityDifferenceCalculator1.SecondQualityParameter.ActualName = "BestQuality";
    246299
    247       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Generations", null, "SASEGASAGenerations"));
    248       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Current Villages", null, "VillageCount"));
     300      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
     301      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
     302      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Active Villages", null, "VillageCount"));
    249303      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestBestQuality"));
    250304      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average BestQuality", null, "CurrentAverageBestQuality"));
     
    255309      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Relative Difference of Best Known Quality to Best Quality", null, "RelativeDifferenceBestKnownToBest"));
    256310      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("BestQualities"));
    257       resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("VillagesSelectionPressures"));
     311      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("VillageSelectionPressures"));
    258312      resultsCollector.CollectedValues.Add(new SubScopesLookupParameter<ResultCollection>("VillageResults", "Result set for each village"));
    259313      resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name;
    260314
    261       fixedReunificationStepConditionInitializer.LeftSideParameter.ActualName = "PerformFixedReunification";
    262       fixedReunificationStepConditionInitializer.RightSideParameter.Value = new BoolValue(false);
    263 
    264       mainLoop.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;
    265       mainLoop.MaximizationParameter.ActualName = MaximizationParameter.Name;
    266       mainLoop.QualityParameter.ActualName = QualityParameter.Name;
    267       mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
    268       mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
    269       mainLoop.ElitesParameter.ActualName = ElitesParameter.Name;
    270       mainLoop.MaximumGenerationsParameter.ActualName = "VillageMaximumGenerations";
    271       mainLoop.MutatorParameter.ActualName = MutatorParameter.Name;
    272       mainLoop.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
    273       mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name;
    274       mainLoop.RandomParameter.ActualName = RandomParameter.Name;
    275       mainLoop.ResultsParameter.ActualName = "VillageResults";
    276       mainLoop.VisualizerParameter.ActualName = VisualizerParameter.Name;
    277       mainLoop.VisualizationParameter.ActualName = VisualizationParameter.Name;
    278       mainLoop.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
    279       mainLoop.ComparisonFactorLowerBoundParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    280       mainLoop.ComparisonFactorModifierParameter.Value = new EmptyOperator(); // comparison factor is modified here
    281       mainLoop.ComparisonFactorUpperBoundParameter.ActualName = ComparisonFactorUpperBoundParameter.Name;
    282       mainLoop.MaximumSelectionPressureParameter.ActualName = "CurrentMaximumSelectionPressure";
    283       mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
    284 
    285       // SASEGASAGenerations is the maximum of all village generations
    286       sasegasaGenVillageGenComparator.LeftSideParameter.ActualName = "SASEGASAGenerations";
    287       sasegasaGenVillageGenComparator.RightSideParameter.ActualName = "Generations";
    288       sasegasaGenVillageGenComparator.Comparison = new Comparison(ComparisonType.Less);
    289       sasegasaGenVillageGenComparator.ResultParameter.ActualName = "UpdateSASEGASAGenerations";
    290 
    291       sasegasaGenerationsUpdateBranch.ConditionParameter.ActualName = "UpdateSASEGASAGenerations";
    292 
    293       sasegasaGenerationsUpdater.LeftSideParameter.ActualName = "SASEGASAGenerations";
    294       sasegasaGenerationsUpdater.RightSideParameter.ActualName = "Generations";
    295 
    296       // check if the village has terminated due to reaching maximum generations (in that case we need to increase in each village the maximum generations by the migration interval)
    297       villageMaximumGenerationsConditionalBranch1.ConditionParameter.ActualName = "TerminateMaximumGenerations";
    298 
    299       fixedReunificationStepConditionUpdater.LeftSideParameter.ActualName = "PerformFixedReunification";
    300       fixedReunificationStepConditionUpdater.RightSideParameter.Value = new BoolValue(true);
    301 
    302       sasegasaGenerationsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Generations", null, "SASEGASAGenerations"));
    303 
    304       villageMaximumGenerationsConditionalBranch2.ConditionParameter.ActualName = "PerformFixedReunification";
    305 
    306       // if the village terminated because of maximum generations first set the maxgen of a village back to its generation
    307       villageMaximumGenerationsToGenerationsAssigner.LeftSideParameter.ActualName = "VillageMaximumGenerations";
    308       villageMaximumGenerationsToGenerationsAssigner.RightSideParameter.ActualName = "Generations";
    309 
    310       // if the village terminated because of maximum generations and then increase the maximum generations by the fixed migration interval
    311       villageMaximumGenerationsCounter.ValueParameter.ActualName = "VillageMaximumGenerations";
    312       villageMaximumGenerationsCounter.Increment = null;
    313       villageMaximumGenerationsCounter.IncrementParameter.ActualName = "MigrationInterval";
    314 
    315       selPressValuesCollector2.CollectedValues.Add(new SubScopesLookupParameter<DoubleValue>("Selection Pressure Village", null, "SelectionPressure"));
    316       selPressValuesCollector2.DataTableParameter.ActualName = "VillagesSelectionPressures";
    317 
    318       // if there's just one island left and we're getting to this point SASEGASA terminates
    319       villageCountComparator1.Name = "VillageCount <= 1 ?";
    320       villageCountComparator1.LeftSideParameter.ActualName = "VillageCount";
    321       villageCountComparator1.RightSideParameter.Value = new IntValue(1);
    322       villageCountComparator1.Comparison.Value = ComparisonType.LessOrEqual;
    323       villageCountComparator1.ResultParameter.ActualName = "TerminateVillages";
    324 
    325       villageTerminationCondition1.Name = "Skip reunification?";
    326       villageTerminationCondition1.ConditionParameter.ActualName = "TerminateVillages";
     315      villageTerminatedBySelectionPressure1.Name = "Village Terminated ?";
     316      villageTerminatedBySelectionPressure1.ConditionParameter.ActualName = "TerminateSelectionPressure";
     317
     318      mainOperator.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
     319      mainOperator.CrossoverParameter.ActualName = CrossoverParameter.Name;
     320      mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio";
     321      mainOperator.ElitesParameter.ActualName = ElitesParameter.Name;
     322      mainOperator.EvaluatedSolutionsParameter.ActualName = "VillageEvaluatedSolutions";
     323      mainOperator.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
     324      mainOperator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     325      mainOperator.MaximumSelectionPressureParameter.ActualName = "CurrentMaximumSelectionPressure";
     326      mainOperator.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name;
     327      mainOperator.MutatorParameter.ActualName = MutatorParameter.Name;
     328      mainOperator.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
     329      mainOperator.QualityParameter.ActualName = QualityParameter.Name;
     330      mainOperator.RandomParameter.ActualName = RandomParameter.Name;
     331      mainOperator.SelectionPressureParameter.ActualName = "SelectionPressure";
     332      mainOperator.SelectorParameter.ActualName = SelectorParameter.Name;
     333      mainOperator.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
     334
     335      villageBestQualityMemorizer2.BestQualityParameter.ActualName = "BestQuality";
     336      villageBestQualityMemorizer2.MaximizationParameter.ActualName = MaximizationParameter.Name;
     337      villageBestQualityMemorizer2.QualityParameter.ActualName = QualityParameter.Name;
     338
     339      villageBestAverageWorstQualityCalculator2.AverageQualityParameter.ActualName = "CurrentAverageQuality";
     340      villageBestAverageWorstQualityCalculator2.BestQualityParameter.ActualName = "CurrentBestQuality";
     341      villageBestAverageWorstQualityCalculator2.MaximizationParameter.ActualName = MaximizationParameter.Name;
     342      villageBestAverageWorstQualityCalculator2.QualityParameter.ActualName = QualityParameter.Name;
     343      villageBestAverageWorstQualityCalculator2.WorstQualityParameter.ActualName = "CurrentWorstQuality";
     344
     345      villageDataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestQuality"));
     346      villageDataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average BestQuality", null, "CurrentAverageQuality"));
     347      villageDataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst BestQuality", null, "CurrentWorstQuality"));
     348      villageDataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
     349      villageDataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, BestKnownQualityParameter.Name));
     350      villageDataTableValuesCollector3.DataTableParameter.ActualName = "Qualities";
     351
     352      villageDataTableValuesCollector4.CollectedValues.Add(new LookupParameter<DoubleValue>("Selection Pressure", null, "SelectionPressure"));
     353      villageDataTableValuesCollector4.CollectedValues.Add(new LookupParameter<DoubleValue>("Maximum Selection Pressure", null, "MaximumSelectionPressure"));
     354      villageDataTableValuesCollector4.DataTableParameter.ActualName = "SelectionPressures";
     355
     356      villageQualityDifferenceCalculator2.AbsoluteDifferenceParameter.ActualName = "AbsoluteDifferenceBestKnownToBest";
     357      villageQualityDifferenceCalculator2.FirstQualityParameter.ActualName = BestKnownQualityParameter.Name;
     358      villageQualityDifferenceCalculator2.RelativeDifferenceParameter.ActualName = "RelativeDifferenceBestKnownToBest";
     359      villageQualityDifferenceCalculator2.SecondQualityParameter.ActualName = "BestQuality";
     360
     361      evaluatedSolutionsCounter.Name = "Update EvaluatedSolutions";
     362      evaluatedSolutionsCounter.ValueParameter.ActualName = "EvaluatedSolutions";
     363      evaluatedSolutionsCounter.Increment = null;
     364      evaluatedSolutionsCounter.IncrementParameter.ActualName = "VillageEvaluatedSolutions";
     365
     366      villageEvaluatedSolutionsAssigner.Name = "Reset EvaluatedSolutions";
     367      villageEvaluatedSolutionsAssigner.LeftSideParameter.ActualName = "VillageEvaluatedSolutions";
     368      villageEvaluatedSolutionsAssigner.RightSideParameter.Value = new IntValue(0);
     369
     370      villageSelectionPressureComparator.Name = "SelectionPressure >= MaximumSelectionPressure ?";
     371      villageSelectionPressureComparator.LeftSideParameter.ActualName = "SelectionPressure";
     372      villageSelectionPressureComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
     373      villageSelectionPressureComparator.RightSideParameter.ActualName = MaximumSelectionPressureParameter.Name;
     374      villageSelectionPressureComparator.ResultParameter.ActualName = "TerminateSelectionPressure";
     375
     376      villageTerminatedBySelectionPressure2.Name = "Village Terminated ?";
     377      villageTerminatedBySelectionPressure2.ConditionParameter.ActualName = "TerminateSelectionPressure";
     378
     379      terminatedVillagesCounter.Name = "TerminatedVillages + 1";
     380      terminatedVillagesCounter.ValueParameter.ActualName = "TerminatedVillages";
     381      terminatedVillagesCounter.Increment = new IntValue(1);
     382
     383      generationsCounter.Name = "Generations + 1";
     384      generationsCounter.ValueParameter.ActualName = "Generations";
     385      generationsCounter.Increment = new IntValue(1);
     386
     387      generationsSinceLastReunificationCounter.Name = "GenerationsSinceLastReunification + 1";
     388      generationsSinceLastReunificationCounter.ValueParameter.ActualName = "GenerationsSinceLastReunification";
     389      generationsSinceLastReunificationCounter.Increment = new IntValue(1);
     390
     391      reunificationComparator1.Name = "TerminatedVillages = VillageCount ?";
     392      reunificationComparator1.LeftSideParameter.ActualName = "TerminatedVillages";
     393      reunificationComparator1.Comparison = new Comparison(ComparisonType.Equal);
     394      reunificationComparator1.RightSideParameter.ActualName = "VillageCount";
     395      reunificationComparator1.ResultParameter.ActualName = "Reunificate";
     396
     397      reunificationConditionalBranch1.Name = "Reunificate ?";
     398      reunificationConditionalBranch1.ConditionParameter.ActualName = "Reunificate";
     399
     400      reunificationComparator2.Name = "GenerationsSinceLastReunification = MigrationInterval ?";
     401      reunificationComparator2.LeftSideParameter.ActualName = "GenerationsSinceLastReunification";
     402      reunificationComparator2.Comparison = new Comparison(ComparisonType.Equal);
     403      reunificationComparator2.RightSideParameter.ActualName = "MigrationInterval";
     404      reunificationComparator2.ResultParameter.ActualName = "Reunificate";
     405
     406      reunificationConditionalBranch2.Name = "Reunificate ?";
     407      reunificationConditionalBranch2.ConditionParameter.ActualName = "Reunificate";
     408
     409      // if there's just one village left and we're getting to this point SASEGASA terminates
     410      reunificationComparator3.Name = "VillageCount <= 1 ?";
     411      reunificationComparator3.LeftSideParameter.ActualName = "VillageCount";
     412      reunificationComparator3.RightSideParameter.Value = new IntValue(1);
     413      reunificationComparator3.Comparison.Value = ComparisonType.LessOrEqual;
     414      reunificationComparator3.ResultParameter.ActualName = "TerminateSASEGASA";
     415
     416      reunificationConditionalBranch3.Name = "Skip reunification?";
     417      reunificationConditionalBranch3.ConditionParameter.ActualName = "TerminateSASEGASA";
     418
     419      resetTerminatedVillagesAssigner.Name = "Reset TerminatedVillages";
     420      resetTerminatedVillagesAssigner.LeftSideParameter.ActualName = "TerminatedVillages";
     421      resetTerminatedVillagesAssigner.RightSideParameter.Value = new IntValue(0);
     422
     423      resetGenerationsSinceLastReunificationAssigner.Name = "Reset GenerationsSinceLastReunification";
     424      resetGenerationsSinceLastReunificationAssigner.LeftSideParameter.ActualName = "GenerationsSinceLastReunification";
     425      resetGenerationsSinceLastReunificationAssigner.RightSideParameter.Value = new IntValue(0);
    327426
    328427      reunificator.VillageCountParameter.ActualName = "VillageCount";
     
    333432      comparisonFactorModifier.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
    334433
    335       villageCountComparator2.Name = "VillageCount == 1 ?";
    336       villageCountComparator2.LeftSideParameter.ActualName = "VillageCount";
    337       villageCountComparator2.RightSideParameter.Value = new IntValue(1);
    338       villageCountComparator2.Comparison.Value = ComparisonType.Equal;
    339       villageCountComparator2.ResultParameter.ActualName = "ChangeMaxSelPress";
    340 
    341       villageTerminationCondition2.Name = "Change max selection pressure?";
    342       villageTerminationCondition2.ConditionParameter.ActualName = "ChangeMaxSelPress";
     434      villageReviver.Name = "Village Reviver";
     435      villageReviver.LeftSideParameter.ActualName = "TerminateSelectionPressure";
     436      villageReviver.RightSideParameter.Value = new BoolValue(false);
     437
     438      villageCountComparator.Name = "VillageCount == 1 ?";
     439      villageCountComparator.LeftSideParameter.ActualName = "VillageCount";
     440      villageCountComparator.RightSideParameter.Value = new IntValue(1);
     441      villageCountComparator.Comparison.Value = ComparisonType.Equal;
     442      villageCountComparator.ResultParameter.ActualName = "ChangeMaxSelPress";
     443
     444      villageCountConditionalBranch.Name = "Change max selection pressure?";
     445      villageCountConditionalBranch.ConditionParameter.ActualName = "ChangeMaxSelPress";
    343446
    344447      finalMaxSelPressAssigner.LeftSideParameter.ActualName = "CurrentMaximumSelectionPressure";
    345448      finalMaxSelPressAssigner.RightSideParameter.ActualName = FinalMaximumSelectionPressureParameter.Name;
    346449
    347       // if SASEGASAGenerations is reaching MaximumGenerations we're also terminating
    348       maximumGenerationsComparator.LeftSideParameter.ActualName = "SASEGASAGenerations";
     450      // if Generations is reaching MaximumGenerations we're also terminating
     451      maximumGenerationsComparator.LeftSideParameter.ActualName = "Generations";
    349452      maximumGenerationsComparator.RightSideParameter.ActualName = MaximumGenerationsParameter.Name;
    350453      maximumGenerationsComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
     
    355458      bestQualityMemorizer3.QualityParameter.ActualName = "BestQuality";
    356459
    357       bestAverageWorstQualityCalculator3.AverageQualityParameter.ActualName = "CurrentAverageBestQuality";
    358       bestAverageWorstQualityCalculator3.BestQualityParameter.ActualName = "CurrentBestBestQuality";
    359       bestAverageWorstQualityCalculator3.MaximizationParameter.ActualName = MaximizationParameter.Name;
    360       bestAverageWorstQualityCalculator3.QualityParameter.ActualName = "CurrentBestQuality";
    361       bestAverageWorstQualityCalculator3.WorstQualityParameter.ActualName = "CurrentWorstBestQuality";
    362 
    363       dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestBestQuality"));
    364       dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average BestQuality", null, "CurrentAverageBestQuality"));
    365       dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst BestQuality", null, "CurrentWorstBestQuality"));
    366       dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
    367       dataTableValuesCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, BestKnownQualityParameter.Name));
    368       dataTableValuesCollector2.DataTableParameter.ActualName = "BestQualities";
     460      bestQualityMemorizer4.BestQualityParameter.ActualName = "BestQuality";
     461      bestQualityMemorizer4.MaximizationParameter.ActualName = MaximizationParameter.Name;
     462      bestQualityMemorizer4.QualityParameter.ActualName = "BestQuality";
     463
     464      bestAverageWorstQualityCalculator2.AverageQualityParameter.ActualName = "CurrentAverageBestQuality";
     465      bestAverageWorstQualityCalculator2.BestQualityParameter.ActualName = "CurrentBestBestQuality";
     466      bestAverageWorstQualityCalculator2.MaximizationParameter.ActualName = MaximizationParameter.Name;
     467      bestAverageWorstQualityCalculator2.QualityParameter.ActualName = "CurrentBestQuality";
     468      bestAverageWorstQualityCalculator2.WorstQualityParameter.ActualName = "CurrentWorstBestQuality";
     469
     470      dataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best BestQuality", null, "CurrentBestBestQuality"));
     471      dataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average BestQuality", null, "CurrentAverageBestQuality"));
     472      dataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst BestQuality", null, "CurrentWorstBestQuality"));
     473      dataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
     474      dataTableValuesCollector3.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, BestKnownQualityParameter.Name));
     475      dataTableValuesCollector3.DataTableParameter.ActualName = "BestQualities";
     476
     477      dataTableValuesCollector4.CollectedValues.Add(new SubScopesLookupParameter<DoubleValue>("Selection Pressure Village", null, "SelectionPressure"));
     478      dataTableValuesCollector4.CollectedValues.Add(new LookupParameter<DoubleValue>("Maximum Selection Pressure", null, "MaximumSelectionPressure"));
     479      dataTableValuesCollector4.DataTableParameter.ActualName = "VillageSelectionPressures";
    369480
    370481      qualityDifferenceCalculator2.AbsoluteDifferenceParameter.ActualName = "AbsoluteDifferenceBestKnownToBest";
     
    373484      qualityDifferenceCalculator2.SecondQualityParameter.ActualName = "BestQuality";
    374485
    375       villagesTerminationCondition3.ConditionParameter.ActualName = "TerminateVillages";
    376       villageMaximumGenerationsConditionalBranch1.ConditionParameter.ActualName = "TerminateMaximumGenerations";
     486      terminationCondition.ConditionParameter.ActualName = "TerminateSASEGASA";
     487      maximumGenerationsTerminationCondition.ConditionParameter.ActualName = "TerminateMaximumGenerations";
    377488      #endregion
    378489
    379490      #region Create operator graph
    380491      OperatorGraph.InitialOperator = variableCreator;
    381       variableCreator.Successor = villageCountAssigner;
    382       villageCountAssigner.Successor = maxSelPressAssigner;
    383       maxSelPressAssigner.Successor = comparisonFactorInitializer;
    384       comparisonFactorInitializer.Successor = ussp0;
    385       ussp0.Operator = islandVariableCreator;
    386       ussp0.Successor = bestQualityMemorizer2;
    387       islandVariableCreator.Successor = islandVariableAssigner;
    388       islandVariableAssigner.Successor = bestQualityMemorizer1;
    389       bestQualityMemorizer1.Successor = bestAverageWorstQualityCalculator1;
    390       bestQualityMemorizer2.Successor = bestAverageWorstQualityCalculator2;
    391       bestAverageWorstQualityCalculator2.Successor = dataTableValuesCollector1;
    392       dataTableValuesCollector1.Successor = selPressValuesCollector1;
    393       selPressValuesCollector1.Successor = qualityDifferenceCalculator1;
     492      variableCreator.Successor = maxSelPressAssigner;
     493      maxSelPressAssigner.Successor = villageCountAssigner;
     494      villageCountAssigner.Successor = comparisonFactorInitializer;
     495      comparisonFactorInitializer.Successor = uniformSubScopesProcessor0;
     496      uniformSubScopesProcessor0.Operator = villageVariableCreator;
     497      uniformSubScopesProcessor0.Successor = bestQualityMemorizer1;
     498      villageVariableCreator.Successor = villageBestQualityMemorizer1;
     499      villageBestQualityMemorizer1.Successor = villageBestAverageWorstQualityCalculator1;
     500      villageBestAverageWorstQualityCalculator1.Successor = villageDataTableValuesCollector1;
     501      villageDataTableValuesCollector1.Successor = villageDataTableValuesCollector2;
     502      villageDataTableValuesCollector2.Successor = villageQualityDifferenceCalculator1;
     503      villageQualityDifferenceCalculator1.Successor = villageResultsCollector;
     504      bestQualityMemorizer1.Successor = bestQualityMemorizer2;
     505      bestQualityMemorizer2.Successor = bestAverageWorstQualityCalculator1;
     506      bestAverageWorstQualityCalculator1.Successor = dataTableValuesCollector1;
     507      dataTableValuesCollector1.Successor = dataTableValuesCollector2;
     508      dataTableValuesCollector2.Successor = qualityDifferenceCalculator1;
    394509      qualityDifferenceCalculator1.Successor = resultsCollector;
    395       resultsCollector.Successor = fixedReunificationStepConditionInitializer;
    396       fixedReunificationStepConditionInitializer.Successor = ussp1;
    397       ussp1.Operator = mainLoop;
    398       ussp1.Successor = sasegasaGenerationsCollector;
    399       mainLoop.Successor = sasegasaGenVillageGenComparator;
    400       sasegasaGenVillageGenComparator.Successor = sasegasaGenerationsUpdateBranch;
    401       sasegasaGenerationsUpdateBranch.TrueBranch = sasegasaGenerationsUpdater;
    402       sasegasaGenerationsUpdateBranch.FalseBranch = null;
    403       sasegasaGenerationsUpdateBranch.Successor = villageMaximumGenerationsConditionalBranch1;
    404       villageMaximumGenerationsConditionalBranch1.TrueBranch = fixedReunificationStepConditionUpdater;
    405       villageMaximumGenerationsConditionalBranch1.FalseBranch = null;
    406       villageMaximumGenerationsConditionalBranch1.Successor = null;
    407       sasegasaGenerationsCollector.Successor = ussp2;
    408       ussp2.Operator = villageMaximumGenerationsConditionalBranch2;
    409       ussp2.Successor = selPressValuesCollector2;
    410       villageMaximumGenerationsConditionalBranch2.TrueBranch = villageMaximumGenerationsToGenerationsAssigner;
    411       villageMaximumGenerationsConditionalBranch2.FalseBranch = null;
    412       villageMaximumGenerationsConditionalBranch2.Successor = null;
    413       villageMaximumGenerationsToGenerationsAssigner.Successor = villageMaximumGenerationsCounter;
    414       villageMaximumGenerationsCounter.Successor = null;
    415       selPressValuesCollector2.Successor = villageCountComparator1;
    416       villageCountComparator1.Successor = villageTerminationCondition1;
    417       villageTerminationCondition1.TrueBranch = null;
    418       villageTerminationCondition1.FalseBranch = reunificator;
    419       villageTerminationCondition1.Successor = maximumGenerationsComparator;
     510      resultsCollector.Successor = uniformSubScopesProcessor1;
     511      uniformSubScopesProcessor1.Operator = villageTerminatedBySelectionPressure1;
     512      uniformSubScopesProcessor1.Successor = generationsCounter;
     513      villageTerminatedBySelectionPressure1.TrueBranch = null;
     514      villageTerminatedBySelectionPressure1.FalseBranch = mainOperator;
     515      villageTerminatedBySelectionPressure1.Successor = null;
     516      mainOperator.Successor = villageBestQualityMemorizer2;
     517      villageBestQualityMemorizer2.Successor = villageBestAverageWorstQualityCalculator2;
     518      villageBestAverageWorstQualityCalculator2.Successor = villageDataTableValuesCollector3;
     519      villageDataTableValuesCollector3.Successor = villageDataTableValuesCollector4;
     520      villageDataTableValuesCollector4.Successor = villageQualityDifferenceCalculator2;
     521      villageQualityDifferenceCalculator2.Successor = evaluatedSolutionsCounter;
     522      evaluatedSolutionsCounter.Successor = villageEvaluatedSolutionsAssigner;
     523      villageEvaluatedSolutionsAssigner.Successor = villageSelectionPressureComparator;
     524      villageSelectionPressureComparator.Successor = villageTerminatedBySelectionPressure2;
     525      villageTerminatedBySelectionPressure2.TrueBranch = terminatedVillagesCounter;
     526      villageTerminatedBySelectionPressure2.FalseBranch = null;
     527      villageTerminatedBySelectionPressure2.Successor = null;
     528      terminatedVillagesCounter.Successor = null;
     529      generationsCounter.Successor = generationsSinceLastReunificationCounter;
     530      generationsSinceLastReunificationCounter.Successor = reunificationComparator1;
     531      reunificationComparator1.Successor = reunificationConditionalBranch1;
     532      reunificationConditionalBranch1.TrueBranch = reunificationComparator3;
     533      reunificationConditionalBranch1.FalseBranch = reunificationComparator2;
     534      reunificationConditionalBranch1.Successor = maximumGenerationsComparator;
     535      reunificationComparator2.Successor = reunificationConditionalBranch2;
     536      reunificationConditionalBranch2.TrueBranch = reunificationComparator3;
     537      reunificationConditionalBranch2.FalseBranch = null;
     538      reunificationConditionalBranch2.Successor = null;
     539      reunificationComparator3.Successor = reunificationConditionalBranch3;
     540      reunificationConditionalBranch3.TrueBranch = null;
     541      reunificationConditionalBranch3.FalseBranch = resetTerminatedVillagesAssigner;
     542      reunificationConditionalBranch3.Successor = null;
     543      resetTerminatedVillagesAssigner.Successor = resetGenerationsSinceLastReunificationAssigner;
     544      resetGenerationsSinceLastReunificationAssigner.Successor = reunificator;
    420545      reunificator.Successor = reunificationCounter;
    421546      reunificationCounter.Successor = comparisonFactorModifier;
    422       comparisonFactorModifier.Successor = villageCountComparator2;
    423       villageCountComparator2.Successor = villageTerminationCondition2;
    424       villageTerminationCondition2.TrueBranch = finalMaxSelPressAssigner;
    425       villageTerminationCondition2.FalseBranch = null;
    426       villageTerminationCondition2.Successor = null;
     547      comparisonFactorModifier.Successor = uniformSubScopesProcessor2;
     548      uniformSubScopesProcessor2.Operator = villageReviver;
     549      uniformSubScopesProcessor2.Successor = villageCountComparator;
     550      villageReviver.Successor = null;
     551      villageCountComparator.Successor = villageCountConditionalBranch;
     552      villageCountConditionalBranch.TrueBranch = finalMaxSelPressAssigner;
     553      villageCountConditionalBranch.FalseBranch = null;
     554      villageCountConditionalBranch.Successor = null;
    427555      finalMaxSelPressAssigner.Successor = null;
    428556      maximumGenerationsComparator.Successor = bestQualityMemorizer3;
    429       bestQualityMemorizer3.Successor = bestAverageWorstQualityCalculator3;
    430       bestAverageWorstQualityCalculator3.Successor = dataTableValuesCollector2;
    431       dataTableValuesCollector2.Successor = qualityDifferenceCalculator2;
    432       qualityDifferenceCalculator2.Successor = villagesTerminationCondition3;
    433       villagesTerminationCondition3.FalseBranch = maximumGenerationsTerminationCondition;
    434       villagesTerminationCondition3.TrueBranch = null;
    435       villagesTerminationCondition3.Successor = null;
    436       maximumGenerationsTerminationCondition.FalseBranch = fixedReunificationStepConditionInitializer;
     557      bestQualityMemorizer3.Successor = bestQualityMemorizer4;
     558      bestQualityMemorizer4.Successor = bestAverageWorstQualityCalculator2;
     559      bestAverageWorstQualityCalculator2.Successor = dataTableValuesCollector3;
     560      dataTableValuesCollector3.Successor = dataTableValuesCollector4;
     561      dataTableValuesCollector4.Successor = qualityDifferenceCalculator2;
     562      qualityDifferenceCalculator2.Successor = terminationCondition;
     563      terminationCondition.TrueBranch = null;
     564      terminationCondition.FalseBranch = maximumGenerationsTerminationCondition;
     565      terminationCondition.Successor = null;
    437566      maximumGenerationsTerminationCondition.TrueBranch = null;
     567      maximumGenerationsTerminationCondition.FalseBranch = uniformSubScopesProcessor1;
    438568      maximumGenerationsTerminationCondition.Successor = null;
    439569      #endregion
Note: See TracChangeset for help on using the changeset viewer.