Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/04/11 06:17:50 (13 years ago)
Author:
swagner
Message:

Adapted EAs to enable parallel solution evaluation (#1333)

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

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs

    r4722 r5208  
    104104      Parameters.Add(new ValueLookupParameter<PercentValue>("MutationProbability", "The probability that the mutation operator is applied on a solution."));
    105105      Parameters.Add(new ValueLookupParameter<IOperator>("Mutator", "The operator used to mutate solutions."));
    106       Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));
     106      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization."));
    107107      Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation."));
    108108      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed."));
     
    119119      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
    120120      ChildrenCreator childrenCreator = new ChildrenCreator();
    121       UniformSubScopesProcessor uniformSubScopesProcessor = new UniformSubScopesProcessor();
     121      UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
    122122      Placeholder crossover = new Placeholder();
    123123      StochasticBranch stochasticBranch = new StochasticBranch();
    124124      Placeholder mutator = new Placeholder();
     125      SubScopesRemover subScopesRemover = new SubScopesRemover();
     126      UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
    125127      Placeholder evaluator = new Placeholder();
    126       SubScopesRemover subScopesRemover = new SubScopesRemover();
    127128      SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
    128129      BestSelector bestSelector = new BestSelector();
     
    157158      mutator.OperatorParameter.ActualName = "Mutator";
    158159
     160      subScopesRemover.RemoveAllSubScopes = true;
     161
     162      uniformSubScopesProcessor2.Parallel.Value = true;
     163
    159164      evaluator.Name = "Evaluator";
    160165      evaluator.OperatorParameter.ActualName = "Evaluator";
    161 
    162       subScopesRemover.RemoveAllSubScopes = true;
    163166
    164167      bestSelector.CopySelected = new BoolValue(false);
     
    193196      subScopesProcessor1.Operators.Add(childrenCreator);
    194197      subScopesProcessor1.Successor = subScopesProcessor2;
    195       childrenCreator.Successor = uniformSubScopesProcessor;
    196       uniformSubScopesProcessor.Operator = crossover;
    197       uniformSubScopesProcessor.Successor = null;
     198      childrenCreator.Successor = uniformSubScopesProcessor1;
     199      uniformSubScopesProcessor1.Operator = crossover;
     200      uniformSubScopesProcessor1.Successor = uniformSubScopesProcessor2;
    198201      crossover.Successor = stochasticBranch;
    199202      stochasticBranch.FirstBranch = mutator;
    200203      stochasticBranch.SecondBranch = null;
    201       stochasticBranch.Successor = evaluator;
     204      stochasticBranch.Successor = subScopesRemover;
    202205      mutator.Successor = null;
    203       evaluator.Successor = subScopesRemover;
    204206      subScopesRemover.Successor = null;
     207      uniformSubScopesProcessor2.Operator = evaluator;
     208      uniformSubScopesProcessor2.Successor = null;
     209      evaluator.Successor = null;
    205210      subScopesProcessor2.Operators.Add(bestSelector);
    206211      subScopesProcessor2.Operators.Add(new EmptyOperator());
  • trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithmMainLoop.cs

    r4722 r5208  
    130130      Parameters.Add(new ValueLookupParameter<PercentValue>("MutationProbability", "The probability that the mutation operator is applied on a solution."));
    131131      Parameters.Add(new ValueLookupParameter<IOperator>("Mutator", "The operator used to mutate solutions."));
    132       Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));
     132      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization."));
    133133      Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation."));
    134134      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection to store the results."));
     
    153153      StochasticBranch stochasticBranch = new StochasticBranch();
    154154      Placeholder mutator = new Placeholder();
     155      SubScopesRemover subScopesRemover = new SubScopesRemover();
     156      UniformSubScopesProcessor uniformSubScopesProcessor3 = new UniformSubScopesProcessor();
    155157      Placeholder evaluator = new Placeholder();
    156       SubScopesRemover subScopesRemover = new SubScopesRemover();
    157158      SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
    158159      BestSelector bestSelector = new BestSelector();
     
    166167      Assigner resetGenerationsSinceLastMigrationAssigner = new Assigner();
    167168      IntCounter migrationsCounter = new IntCounter();
    168       UniformSubScopesProcessor uniformSubScopesProcessor3 = new UniformSubScopesProcessor();
     169      UniformSubScopesProcessor uniformSubScopesProcessor4 = new UniformSubScopesProcessor();
    169170      Placeholder emigrantsSelector = new Placeholder();
    170171      Placeholder migrator = new Placeholder();
    171       UniformSubScopesProcessor uniformSubScopesProcessor4 = new UniformSubScopesProcessor();
     172      UniformSubScopesProcessor uniformSubScopesProcessor5 = new UniformSubScopesProcessor();
    172173      Placeholder immigrationReplacer = new Placeholder();
    173174      Comparator generationsComparator = new Comparator();
     
    211212      mutator.OperatorParameter.ActualName = MutatorParameter.Name;
    212213
     214      subScopesRemover.RemoveAllSubScopes = true;
     215
     216      uniformSubScopesProcessor3.Parallel.Value = true;
     217
    213218      evaluator.Name = "Evaluator (placeholder)";
    214219      evaluator.OperatorParameter.ActualName = EvaluatorParameter.Name;
    215 
    216       subScopesRemover.RemoveAllSubScopes = true;
    217220
    218221      bestSelector.CopySelected = new BoolValue(false);
     
    293296      childrenCreator.Successor = uniformSubScopesProcessor2;
    294297      uniformSubScopesProcessor2.Operator = crossover;
    295       uniformSubScopesProcessor2.Successor = null;
     298      uniformSubScopesProcessor2.Successor = uniformSubScopesProcessor3;
    296299      crossover.Successor = stochasticBranch;
    297300      stochasticBranch.FirstBranch = mutator;
    298301      stochasticBranch.SecondBranch = null;
    299       stochasticBranch.Successor = evaluator;
     302      stochasticBranch.Successor = subScopesRemover;
    300303      mutator.Successor = null;
    301       evaluator.Successor = subScopesRemover;
    302304      subScopesRemover.Successor = null;
     305      uniformSubScopesProcessor3.Operator = evaluator;
     306      uniformSubScopesProcessor3.Successor = null;
     307      evaluator.Successor = null;
    303308      subScopesProcessor2.Operators.Add(bestSelector);
    304309      subScopesProcessor2.Operators.Add(new EmptyOperator());
     
    315320      migrationBranch.Successor = generationsComparator;
    316321      resetGenerationsSinceLastMigrationAssigner.Successor = migrationsCounter;
    317       migrationsCounter.Successor = uniformSubScopesProcessor3;
    318       uniformSubScopesProcessor3.Operator = emigrantsSelector;
    319       uniformSubScopesProcessor3.Successor = migrator;
    320       migrator.Successor = uniformSubScopesProcessor4;
    321       uniformSubScopesProcessor4.Operator = immigrationReplacer;
    322       uniformSubScopesProcessor4.Successor = null;
     322      migrationsCounter.Successor = uniformSubScopesProcessor4;
     323      uniformSubScopesProcessor4.Operator = emigrantsSelector;
     324      uniformSubScopesProcessor4.Successor = migrator;
     325      migrator.Successor = uniformSubScopesProcessor5;
     326      uniformSubScopesProcessor5.Operator = immigrationReplacer;
     327      uniformSubScopesProcessor5.Successor = null;
    323328      generationsComparator.Successor = analyzer2;
    324329      analyzer2.Successor = resultsCollector3;
Note: See TracChangeset for help on using the changeset viewer.