Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/10/10 04:16:18 (14 years ago)
Author:
swagner
Message:

Worked on linkage between algorithms and problems (#898)

  • restructured HeuristicLab.Problems.TSP project
  • adapted TSP evaluators class hierarchy to avoid performance problems
Location:
trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators
Files:
1 added
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPDistanceMatrixPathEvaluator.cs

    r2985 r2988  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Data;
     24using HeuristicLab.Encodings.Permutation;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3233  [Creatable("Test")]
    3334  [EmptyStorableClass]
    34   public sealed class TSPDistanceMatrixPathEvaluator : TSPPathEvaluator, ITSPDistanceMatrixPathEvaluator {
     35  public sealed class TSPDistanceMatrixPathEvaluator : TSPEvaluator, ITSPDistanceMatrixPathEvaluator {
     36    public ILookupParameter<Permutation> PermutationParameter {
     37      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
     38    }
    3539    public ILookupParameter<DoubleMatrixData> DistanceMatrixParameter {
    3640      get { return (ILookupParameter<DoubleMatrixData>)Parameters["DistanceMatrix"]; }
     
    3943    public TSPDistanceMatrixPathEvaluator()
    4044      : base() {
     45      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be evaluated."));
    4146      Parameters.Add(new LookupParameter<DoubleMatrixData>("DistanceMatrix", "The distance matrix of the cities."));
    4247    }
    4348
    44     protected override double CalculateDistance(int a, int b) {
    45       DoubleMatrixData distanceMatrix = DistanceMatrixParameter.ActualValue;
    46       return distanceMatrix[a, b];
     49    public sealed override IOperation Apply() {
     50      Permutation p = PermutationParameter.ActualValue;
     51      DoubleMatrixData d = DistanceMatrixParameter.ActualValue;
     52
     53      double length = 0;
     54      for (int i = 0; i < p.Length - 1; i++)
     55        length += d[p[i], p[i + 1]];
     56      length += d[p[p.Length - 1], p[0]];
     57      QualityParameter.ActualValue = new DoubleData(length);
     58
     59      return base.Apply();
    4760    }
    4861  }
Note: See TracChangeset for help on using the changeset viewer.