Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/11/17 15:42:12 (7 years ago)
Author:
abeham
Message:

#1614:

  • fixed some bugs introduced in last commit (project file, tests)
  • fixed ApproximateLocalSearch due to change in move evaluator that outputs an absolute quality of the move and not a delta
  • added evaluated solution counting to approximate local search
  • GRASP+PR: restructured main loop and combined iteration initialization with variable creator outside
Location:
branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/GRASPWithPathRelinking.cs

    r15492 r15507  
    2626using HeuristicLab.Core;
    2727using HeuristicLab.Data;
     28using HeuristicLab.Operators;
    2829using HeuristicLab.Optimization;
    2930using HeuristicLab.Optimization.Operators;
     
    111112      get { return (RandomCreator)OperatorGraph.InitialOperator; }
    112113    }
     114    private VariableCreator VariableCreator {
     115      get { return (VariableCreator)RandomCreator.Successor; }
     116    }
    113117    private SolutionsCreator SolutionsCreator {
    114       get { return (SolutionsCreator)RandomCreator.Successor; }
     118      get { return (SolutionsCreator)VariableCreator.Successor; }
     119    }
     120    private SubScopesCounter SubScopesCounter {
     121      get { return (SubScopesCounter)SolutionsCreator.Successor; }
     122    }
     123    private ResultsCollector ResultsCollector {
     124      get { return (ResultsCollector)SubScopesCounter.Successor; }
    115125    }
    116126    private GRASPWithPathRelinkingMainLoop MainLoop {
    117       get { return SolutionsCreator.Successor as GRASPWithPathRelinkingMainLoop; }
     127      get { return (GRASPWithPathRelinkingMainLoop)ResultsCollector.Successor; }
    118128    }
    119129    #endregion
     
    153163      randomCreator.SetSeedRandomlyParameter.ActualName = SetSeedRandomlyParameter.Name;
    154164      randomCreator.SetSeedRandomlyParameter.Value = null;
    155 
     165     
     166      var variableCreator = new VariableCreator();
     167      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
     168      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
     169      randomCreator.Successor = variableCreator;
     170     
    156171      var solutionsCreator = new SolutionsCreator();
    157172      solutionsCreator.NumberOfSolutionsParameter.ActualName = MinimumEliteSetSizeParameter.Name;
    158173      solutionsCreator.ParallelParameter.Value = new BoolValue(true);
    159       randomCreator.Successor = solutionsCreator;
     174      variableCreator.Successor = solutionsCreator;
     175
     176      var subscopesCounter = new SubScopesCounter();
     177      subscopesCounter.Name = "EvaluatedSolutions++";
     178      subscopesCounter.AccumulateParameter.Value.Value = true;
     179      subscopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
     180      solutionsCreator.Successor = subscopesCounter;
     181
     182      var resultsCollector = new ResultsCollector();
     183      resultsCollector.CopyValue.Value = false;
     184      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "Counter for the number of times the evaluation function is called."));
     185      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", "The algorithm's current iteration"));
     186      subscopesCounter.Successor = resultsCollector;
    160187
    161188      var mainLoop = new GRASPWithPathRelinkingMainLoop();
     
    168195      mainLoop.PathRelinkingParameter.ActualName = PathRelinkingParameter.Name;
    169196      mainLoop.ResultsParameter.ActualName = "Results";
    170       solutionsCreator.Successor = mainLoop;
     197      resultsCollector.Successor = mainLoop;
    171198
    172199      InitializeOperators();
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/GRASPWithPathRelinkingMainLoop.cs

    r15492 r15507  
    3737  [StorableClass]
    3838  public class GRASPWithPathRelinkingMainLoop : AlgorithmOperator {
     39    public IValueLookupParameter<IntValue> IterationsParameter {
     40      get { return (IValueLookupParameter<IntValue>)Parameters["Iterations"]; }
     41    }
    3942    public IValueLookupParameter<IOperator> SolutionCreatorParameter {
    4043      get { return (IValueLookupParameter<IOperator>)Parameters["SolutionCreator"]; }
     
    7477    public GRASPWithPathRelinkingMainLoop()
    7578      : base() {
     79      Parameters.Add(new ValueLookupParameter<IntValue>("Iterations", "The algorithm's current iteration."));
    7680      Parameters.Add(new ValueLookupParameter<IOperator>("SolutionCreator", "The solution creation procedure which ideally should be a greedy initialization heuristic."));
    7781      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The evaluator which calculates the fitness of a solutions."));
     
    8589      Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The analyzer that is to be applied."));
    8690
    87       var variableCreator1 = new VariableCreator();
    88       variableCreator1.Name = "Iterations = 0";
    89       variableCreator1.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
    90 
    91       var resultsCollector = new ResultsCollector();
    92       resultsCollector.CopyValue = new BoolValue(false);
    93       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
     91      var analyzer1 = new Placeholder() { Name = "(Analyzer)" };
     92      analyzer1.OperatorParameter.ActualName = AnalyzerParameter.Name;
    9493
    9594      var selector1 = new RandomSelector();
     
    111110      var eo2 = new EmptyOperator();
    112111
    113       var placeholder1 = new Placeholder();
    114       placeholder1.Name = "(LocalImprovement)";
     112      var placeholder1 = new Placeholder() { Name = "(LocalImprovement)" };
    115113      placeholder1.OperatorParameter.ActualName = LocalImprovementParameter.Name;
    116114
     
    120118      var ssp3 = new SubScopesProcessor();
    121119
    122       var placeholder2 = new Placeholder();
    123       placeholder2.Name = "(PathRelinking)";
     120      var placeholder2 = new Placeholder() { Name = "(PathRelinking)" };
    124121      placeholder2.OperatorParameter.ActualName = PathRelinkingParameter.Name;
    125122
    126       var placeholder3 = new Placeholder();
    127       placeholder3.Name = "(Evaluator)";
     123      var placeholder3 = new Placeholder() { Name = "(Evaluator)" };
    128124      placeholder3.OperatorParameter.ActualName = EvaluatorParameter.Name;
    129125
     
    137133      placeholder4.OperatorParameter.ActualName = LocalImprovementParameter.Name;
    138134
    139       var placeholder5 = new Placeholder();
    140       placeholder5.Name = "(EliteSetReplacer)";
     135      var placeholder5 = new Placeholder() { Name = "(EliteSetReplacer)" };
    141136      placeholder5.OperatorParameter.ActualName = EliteSetReducerParameter.Name;
    142137
    143       var counter = new IntCounter();
    144       counter.Name = "Iterations++";
    145       counter.ValueParameter.ActualName = "Iterations";
     138      var counter = new IntCounter() { Name = "Iterations++" };
     139      counter.ValueParameter.ActualName = IterationsParameter.Name;
    146140      counter.Increment = new IntValue(1);
    147141
    148       var analyzer1 = new Placeholder();
    149       analyzer1.Name = "(Analyzer)";
    150       analyzer1.OperatorParameter.ActualName = AnalyzerParameter.Name;
    151 
    152       var comparator3 = new Comparator();
    153       comparator3.Name = "Iterations >= MaximumIterations";
     142      var analyzer2 = new Placeholder() { Name = "(Analyzer)" };
     143      analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;
     144
     145      var comparator3 = new Comparator() { Name = "Iterations >= MaximumIterations" };
    154146      comparator3.Comparison.Value = ComparisonType.GreaterOrEqual;
    155       comparator3.LeftSideParameter.ActualName = "Iterations";
     147      comparator3.LeftSideParameter.ActualName = IterationsParameter.Name;
    156148      comparator3.RightSideParameter.ActualName = MaximumIterationsParameter.Name;
    157149      comparator3.ResultParameter.ActualName = "TerminatedByIteration";
    158150
    159       var conditionalBranch3 = new ConditionalBranch();
    160       conditionalBranch3.Name = "Terminate by Iterations?";
     151      var conditionalBranch3 = new ConditionalBranch() { Name = "Terminate by Iterations?" };
    161152      conditionalBranch3.ConditionParameter.ActualName = "TerminatedByIteration";
    162153
    163       OperatorGraph.InitialOperator = variableCreator1;
    164       variableCreator1.Successor = resultsCollector;
    165       resultsCollector.Successor = selector1;
     154      OperatorGraph.InitialOperator = analyzer1;
     155      analyzer1.Successor = selector1;
    166156      selector1.Successor = ssp1;
    167157      ssp1.Operators.Add(eo1);
     
    183173      placeholder4.Successor = null;
    184174      placeholder5.Successor = counter;
    185       counter.Successor = analyzer1;
    186       analyzer1.Successor = comparator3;
     175      counter.Successor = analyzer2;
     176      analyzer2.Successor = comparator3;
    187177      comparator3.Successor = conditionalBranch3;
    188178      conditionalBranch3.TrueBranch = null;
Note: See TracChangeset for help on using the changeset viewer.