Free cookie consent management tool by TermsFeed Policy Generator

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

#1344

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

Legend:

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

    r4722 r5356  
    2727using HeuristicLab.Core;
    2828using HeuristicLab.Data;
     29using HeuristicLab.Operators;
    2930using HeuristicLab.Optimization;
    3031using HeuristicLab.Optimization.Operators;
     
    135136    }
    136137    private SimulatedAnnealingMainLoop MainLoop {
    137       get { return (SimulatedAnnealingMainLoop)SolutionsCreator.Successor; }
     138      get {
     139        return (SimulatedAnnealingMainLoop)(
     140          (ResultsCollector)(
     141            (VariableCreator)SolutionsCreator.Successor
     142          ).Successor
     143        ).Successor;
     144      }
    138145    }
    139146    [Storable]
     
    171178      RandomCreator randomCreator = new RandomCreator();
    172179      SolutionsCreator solutionsCreator = new SolutionsCreator();
     180      VariableCreator variableCreator = new VariableCreator();
     181      ResultsCollector resultsCollector = new ResultsCollector();
    173182      SimulatedAnnealingMainLoop mainLoop = new SimulatedAnnealingMainLoop();
    174183      OperatorGraph.InitialOperator = randomCreator;
     
    182191
    183192      solutionsCreator.NumberOfSolutions = new IntValue(1);
    184       solutionsCreator.Successor = mainLoop;
     193      solutionsCreator.Successor = variableCreator;
     194
     195      variableCreator.Name = "Initialize EvaluatedMoves";
     196      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedMoves", new IntValue()));
     197      variableCreator.Successor = resultsCollector;
     198
     199      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Moves", null, "EvaluatedMoves"));
     200      resultsCollector.ResultsParameter.ActualName = "Results";
     201      resultsCollector.Successor = mainLoop;
    185202
    186203      mainLoop.MoveGeneratorParameter.ActualName = MoveGeneratorParameter.Name;
     
    194211      mainLoop.ResultsParameter.ActualName = "Results";
    195212      mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
     213      mainLoop.EvaluatedMovesParameter.ActualName = "EvaluatedMoves";
    196214
    197215      foreach (IDiscreteDoubleValueModifier op in ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name))
  • trunk/sources/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs

    r4722 r5356  
    8080    public ValueLookupParameter<VariableCollection> ResultsParameter {
    8181      get { return (ValueLookupParameter<VariableCollection>)Parameters["Results"]; }
     82    }
     83    public LookupParameter<IntValue> EvaluatedMovesParameter {
     84      get { return (LookupParameter<IntValue>)Parameters["EvaluatedMoves"]; }
    8285    }
    8386    #endregion
     
    115118      Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation."));
    116119      Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
     120      Parameters.Add(new LookupParameter<IntValue>("EvaluatedMoves", "The number of evaluated moves."));
    117121      #endregion
    118122
     
    129133      UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor();
    130134      Placeholder moveEvaluator = new Placeholder();
     135      SubScopesCounter subScopesCounter = new SubScopesCounter();
    131136      ProbabilisticQualityComparator qualityComparator = new ProbabilisticQualityComparator();
    132137      ConditionalBranch improvesQualityBranch = new ConditionalBranch();
     
    135140      IntCounter iterationsCounter = new IntCounter();
    136141      Comparator iterationsComparator = new Comparator();
    137       ResultsCollector resultsCollector2 = new ResultsCollector();
    138142      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
    139143      Placeholder analyzer2 = new Placeholder();
     
    158162      moveEvaluator.Name = "Move evaluator (placeholder)";
    159163      moveEvaluator.OperatorParameter.ActualName = MoveEvaluatorParameter.Name;
     164
     165      subScopesCounter.Name = "Increment EvaluatedMoves";
     166      subScopesCounter.ValueParameter.ActualName = EvaluatedMovesParameter.Name;
    160167
    161168      qualityComparator.LeftSideParameter.ActualName = MoveQualityParameter.Name;
     
    180187      iterationsComparator.ResultParameter.ActualName = "Terminate";
    181188      iterationsComparator.Comparison.Value = ComparisonType.GreaterOrEqual;
    182 
    183       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
    184       resultsCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>("Temperature"));
    185       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    186189
    187190      analyzer2.Name = "Analyzer (placeholder)";
     
    198201      subScopesProcessor0.Operators.Add(analyzer1);
    199202      subScopesProcessor0.Successor = sssp;
     203      analyzer1.Successor = null;
    200204      sssp.Operators.Add(resultsCollector);
     205      sssp.Successor = annealingOperator;
    201206      resultsCollector.Successor = null;
    202       sssp.Successor = annealingOperator;
    203207      annealingOperator.Successor = mainProcessor;
    204208      mainProcessor.Operator = moveGenerator;
     
    206210      moveGenerator.Successor = moveEvaluationProcessor;
    207211      moveEvaluationProcessor.Operator = moveEvaluator;
    208       moveEvaluationProcessor.Successor = subScopesRemover;
     212      moveEvaluationProcessor.Successor = subScopesCounter;
    209213      moveEvaluator.Successor = qualityComparator;
    210214      qualityComparator.Successor = improvesQualityBranch;
    211215      improvesQualityBranch.TrueBranch = moveMaker;
     216      improvesQualityBranch.FalseBranch = null;
     217      improvesQualityBranch.Successor = null;
     218      moveMaker.Successor = null;
     219      subScopesCounter.Successor = subScopesRemover;
     220      subScopesRemover.Successor = null;
    212221      iterationsCounter.Successor = iterationsComparator;
    213       iterationsComparator.Successor = resultsCollector2;
    214       resultsCollector2.Successor = subScopesProcessor1;
     222      iterationsComparator.Successor = subScopesProcessor1;
    215223      subScopesProcessor1.Operators.Add(analyzer2);
    216224      subScopesProcessor1.Successor = iterationsTermination;
Note: See TracChangeset for help on using the changeset viewer.