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/TSPCoordinatesPathEvaluator.cs

    r2985 r2988  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Data;
     24using HeuristicLab.Encodings.Permutation;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [Item("TSPCoordinatesPathEvaluator", "A base class for operators which evaluate TSP solutions given in path representation using city coordinates.")]
    3233  [EmptyStorableClass]
    33   public abstract class TSPCoordinatesPathEvaluator : TSPPathEvaluator, ITSPCoordinatesPathEvaluator {
     34  public abstract class TSPCoordinatesPathEvaluator : TSPEvaluator, ITSPCoordinatesPathEvaluator {
     35    public ILookupParameter<Permutation> PermutationParameter {
     36      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
     37    }
    3438    public ILookupParameter<DoubleMatrixData> CoordinatesParameter {
    3539      get { return (ILookupParameter<DoubleMatrixData>)Parameters["Coordinates"]; }
     
    3842    protected TSPCoordinatesPathEvaluator()
    3943      : base() {
     44      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be evaluated."));
    4045      Parameters.Add(new LookupParameter<DoubleMatrixData>("Coordinates", "The x- and y-Coordinates of the cities."));
    4146    }
    4247
    43     protected sealed override double CalculateDistance(int a, int b) {
    44       DoubleMatrixData coordinates = CoordinatesParameter.ActualValue;
    45       return CalculateDistance(coordinates[a, 0], coordinates[a, 1],
    46                                coordinates[b, 0], coordinates[b, 1]);
     48    public sealed override IOperation Apply() {
     49      Permutation p = PermutationParameter.ActualValue;
     50      DoubleMatrixData c = CoordinatesParameter.ActualValue;
     51
     52      double length = 0;
     53      for (int i = 0; i < p.Length - 1; i++)
     54        length += CalculateDistance(c[p[i], 0], c[p[i], 1], c[p[i + 1], 0], c[p[i + 1], 1]);
     55      length += CalculateDistance(c[p[p.Length - 1], 0], c[p[p.Length - 1], 1], c[p[0], 0], c[p[0], 1]);
     56      QualityParameter.ActualValue = new DoubleData(length);
     57
     58      return base.Apply();
    4759    }
    4860
Note: See TracChangeset for help on using the changeset viewer.