Free cookie consent management tool by TermsFeed Policy Generator

Changeset 5354


Ignore:
Timestamp:
01/22/11 00:12:47 (13 years ago)
Author:
abeham
Message:

#1333

  • Adapated Tabu Search to run move evaluations and tabu check in parallel
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearchMainLoop.cs

    r5162 r5354  
    139139      Placeholder analyzer1 = new Placeholder();
    140140      ResultsCollector resultsCollector1 = new ResultsCollector();
    141       ResultsCollector resultsCollector2 = new ResultsCollector();
    142141      SubScopesProcessor solutionProcessor = new SubScopesProcessor();
    143142      Placeholder moveGenerator = new Placeholder();
    144143      UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor();
    145144      Placeholder moveEvaluator = new Placeholder();
    146       IntCounter evaluatedMovesCounter = new IntCounter();
    147145      Placeholder tabuChecker = new Placeholder();
     146      SubScopesCounter subScopesCounter = new SubScopesCounter();
    148147      SubScopesSorter moveQualitySorter = new SubScopesSorter();
    149148      TabuSelector tabuSelector = new TabuSelector();
     
    160159      IntCounter iterationsCounter = new IntCounter();
    161160      Comparator iterationsComparator = new Comparator();
    162       ResultsCollector resultsCollector3 = new ResultsCollector();
    163161      ConditionalBranch iterationsTermination = new ConditionalBranch();
    164162
     
    180178      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
    181179      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
     180      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Moves", null, "EvaluatedMoves"));
    182181      resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
    183 
    184       resultsCollector2.CopyValue = new BoolValue(true);
    185       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Moves", null, "EvaluatedMoves"));
    186       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    187182
    188183      moveGenerator.Name = "MoveGenerator (placeholder)";
    189184      moveGenerator.OperatorParameter.ActualName = MoveGeneratorParameter.Name;
    190185
     186      moveEvaluationProcessor.Parallel = new BoolValue(true);
     187
    191188      moveEvaluator.Name = "MoveEvaluator (placeholder)";
    192189      moveEvaluator.OperatorParameter.ActualName = MoveEvaluatorParameter.Name;
    193190
    194       evaluatedMovesCounter.Name = "EvaluatedMoves + 1";
    195       evaluatedMovesCounter.ValueParameter.ActualName = "EvaluatedMoves";
    196       evaluatedMovesCounter.Increment = new IntValue(1);
    197 
    198191      tabuChecker.Name = "TabuChecker (placeholder)";
    199192      tabuChecker.OperatorParameter.ActualName = TabuCheckerParameter.Name;
     193
     194      subScopesCounter.Name = "Increment EvaluatedMoves";
     195      subScopesCounter.ValueParameter.ActualName = "EvaluatedMoves";
    200196
    201197      moveQualitySorter.DescendingParameter.ActualName = MaximizationParameter.Name;
     
    241237      iterationsComparator.ResultParameter.ActualName = "Terminate";
    242238
    243       resultsCollector3.CopyValue = new BoolValue(true);
    244       resultsCollector3.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Moves", null, "EvaluatedMoves"));
    245       resultsCollector3.ResultsParameter.ActualName = ResultsParameter.Name;
    246 
    247239      emptyNeighborhoodBranch2.Name = "Neighborhood empty?";
    248240      emptyNeighborhoodBranch2.ConditionParameter.ActualName = "EmptyNeighborhood";
     
    259251      bestQualityInitializer.Successor = analyzer1;
    260252      analyzer1.Successor = null;
    261       resultsCollector1.Successor = resultsCollector2;
    262       resultsCollector2.Successor = solutionProcessor;
     253      resultsCollector1.Successor = solutionProcessor;
    263254      solutionProcessor.Operators.Add(moveGenerator);
    264255      solutionProcessor.Successor = iterationsCounter;
    265256      moveGenerator.Successor = moveEvaluationProcessor;
    266257      moveEvaluationProcessor.Operator = moveEvaluator;
    267       moveEvaluationProcessor.Successor = moveQualitySorter;
    268       moveEvaluator.Successor = evaluatedMovesCounter;
    269       evaluatedMovesCounter.Successor = tabuChecker;
     258      moveEvaluationProcessor.Successor = subScopesCounter;
     259      moveEvaluator.Successor = tabuChecker;
    270260      tabuChecker.Successor = null;
     261      subScopesCounter.Successor = moveQualitySorter;
    271262      moveQualitySorter.Successor = tabuSelector;
    272263      tabuSelector.Successor = emptyNeighborhoodBranch1;
     
    285276      subScopesRemover.Successor = null;
    286277      iterationsCounter.Successor = iterationsComparator;
    287       iterationsComparator.Successor = resultsCollector3;
    288       resultsCollector3.Successor = emptyNeighborhoodBranch2;
     278      iterationsComparator.Successor = emptyNeighborhoodBranch2;
    289279      emptyNeighborhoodBranch2.TrueBranch = null;
    290280      emptyNeighborhoodBranch2.FalseBranch = iterationsTermination;
Note: See TracChangeset for help on using the changeset viewer.