Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/05/10 14:28:22 (14 years ago)
Author:
swagner
Message:

Worked on best solution analysis for the TSP (#999)

Location:
trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3
Files:
2 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/BestTSPSolutionAnalyzer.cs

    r3618 r3634  
    3636  [Item("BestTSPSolutionAnalyzer", "An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.")]
    3737  [StorableClass]
    38   public sealed class BestTSPSolutionAnalyzer : SingleSuccessorOperator, IPopulationAnalyzer {
     38  public sealed class BestTSPSolutionAnalyzer : SingleSuccessorOperator, ISolutionAnalyzer {
    3939    public LookupParameter<DoubleMatrix> CoordinatesParameter {
    4040      get { return (LookupParameter<DoubleMatrix>)Parameters["Coordinates"]; }
    4141    }
    42     public SubScopesLookupParameter<Permutation> PermutationParameter {
    43       get { return (SubScopesLookupParameter<Permutation>)Parameters["Permutation"]; }
     42    public LookupParameter<Permutation> PermutationParameter {
     43      get { return (LookupParameter<Permutation>)Parameters["Permutation"]; }
    4444    }
    45     public SubScopesLookupParameter<DoubleValue> QualityParameter {
    46       get { return (SubScopesLookupParameter<DoubleValue>)Parameters["Quality"]; }
     45    public LookupParameter<DoubleValue> QualityParameter {
     46      get { return (LookupParameter<DoubleValue>)Parameters["Quality"]; }
    4747    }
    4848    public LookupParameter<PathTSPTour> BestSolutionParameter {
     
    5656      : base() {
    5757      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities."));
    58       Parameters.Add(new SubScopesLookupParameter<Permutation>("Permutation", "The TSP solutions given in path representation from which the best solution should be analyzed."));
    59       Parameters.Add(new SubScopesLookupParameter<DoubleValue>("Quality", "The qualities of the TSP solutions which should be analyzed."));
     58      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be analyzed."));
     59      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of the TSP solution which should be analyzed."));
    6060      Parameters.Add(new LookupParameter<PathTSPTour>("BestSolution", "The best TSP solution."));
    61       Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best TSP solution should be stored."));
     61      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the TSP solution should be stored."));
    6262    }
    6363
    6464    public override IOperation Apply() {
    6565      DoubleMatrix coordinates = CoordinatesParameter.ActualValue;
    66       ItemArray<Permutation> permutations = PermutationParameter.ActualValue;
    67       ItemArray<DoubleValue> qualities = QualityParameter.ActualValue;
     66      Permutation permutation = PermutationParameter.ActualValue;
     67      DoubleValue quality = QualityParameter.ActualValue;
    6868      ResultCollection results = ResultsParameter.ActualValue;
    69 
    70       int i = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
    7169
    7270      PathTSPTour tour = BestSolutionParameter.ActualValue;
    7371      if (tour == null) {
    74         tour = new PathTSPTour(coordinates, permutations[i], qualities[i]);
     72        tour = new PathTSPTour(coordinates, permutation, quality);
    7573        BestSolutionParameter.ActualValue = tour;
    7674        results.Add(new Result("Best TSP Solution", tour));
    7775      } else {
    78         if (tour.Quality.Value > qualities[i].Value) {
     76        if (tour.Quality.Value > quality.Value) {
    7977          tour.Coordinates = coordinates;
    80           tour.Permutation = permutations[i];
    81           tour.Quality = qualities[i];
     78          tour.Permutation = permutation;
     79          tour.Quality = quality;
    8280          results["Best TSP Solution"].Value = tour;
    8381        }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/MultiPopulationBestTSPSolutionAnalyzer.cs

    r3626 r3634  
    2020#endregion
    2121
     22using System;
    2223using System.Linq;
    2324using HeuristicLab.Common;
     
    2930using HeuristicLab.Parameters;
    3031using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     32using System.Collections.Generic;
    3133
    3234namespace HeuristicLab.Problems.TravelingSalesman {
     
    3436  /// An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.
    3537  /// </summary>
    36   [Item("BestTSPSolutionAnalyzer", "An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.")]
     38  [Item("MultiPopulationBestTSPSolutionAnalyzer", "An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.")]
    3739  [StorableClass]
    38   public sealed class BestTSPSolutionAnalyzer : SingleSuccessorOperator, IPopulationAnalyzer {
     40  public sealed class MultiPopulationBestTSPSolutionAnalyzer : SingleSuccessorOperator, IMultiPopulationAnalyzer {
    3941    public LookupParameter<DoubleMatrix> CoordinatesParameter {
    4042      get { return (LookupParameter<DoubleMatrix>)Parameters["Coordinates"]; }
    4143    }
    42     public SubScopesLookupParameter<Permutation> PermutationParameter {
    43       get { return (SubScopesLookupParameter<Permutation>)Parameters["Permutation"]; }
     44    public SubScopesSubScopesLookupParameter<Permutation> PermutationParameter {
     45      get { return (SubScopesSubScopesLookupParameter<Permutation>)Parameters["Permutation"]; }
    4446    }
    45     public SubScopesLookupParameter<DoubleValue> QualityParameter {
    46       get { return (SubScopesLookupParameter<DoubleValue>)Parameters["Quality"]; }
     47    public SubScopesSubScopesLookupParameter<DoubleValue> QualityParameter {
     48      get { return (SubScopesSubScopesLookupParameter<DoubleValue>)Parameters["Quality"]; }
    4749    }
    4850    public LookupParameter<PathTSPTour> BestSolutionParameter {
     
    5355    }
    5456
    55     public BestTSPSolutionAnalyzer()
     57    public MultiPopulationBestTSPSolutionAnalyzer()
    5658      : base() {
    5759      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities."));
    58       Parameters.Add(new SubScopesLookupParameter<Permutation>("Permutation", "The TSP solutions given in path representation from which the best solution should be analyzed."));
    59       Parameters.Add(new SubScopesLookupParameter<DoubleValue>("Quality", "The qualities of the TSP solutions which should be analyzed."));
     60      Parameters.Add(new SubScopesSubScopesLookupParameter<Permutation>("Permutation", "The TSP solutions given in path representation from which the best solution should be analyzed."));
     61      Parameters.Add(new SubScopesSubScopesLookupParameter<DoubleValue>("Quality", "The qualities of the TSP solutions which should be analyzed."));
    6062      Parameters.Add(new LookupParameter<PathTSPTour>("BestSolution", "The best TSP solution."));
    6163      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best TSP solution should be stored."));
     
    6466    public override IOperation Apply() {
    6567      DoubleMatrix coordinates = CoordinatesParameter.ActualValue;
    66       ItemArray<Permutation> permutations = PermutationParameter.ActualValue;
    67       ItemArray<DoubleValue> qualities = QualityParameter.ActualValue;
     68      ItemArray<ItemArray<Permutation>> permutations = PermutationParameter.ActualValue;
     69      ItemArray<ItemArray<DoubleValue>> qualities = QualityParameter.ActualValue;
    6870      ResultCollection results = ResultsParameter.ActualValue;
    6971
    70       int i = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
     72      DoubleValue bestQuality = new DoubleValue(double.MaxValue);
     73      Permutation bestPermutation = null;
     74
     75      for (int i = 0; i < qualities.Length; i++) {
     76        for (int j = 0; j < qualities[i].Length; j++) {
     77          if (qualities[i][j].Value < bestQuality.Value) {
     78            bestQuality = qualities[i][j];
     79            bestPermutation = permutations[i][j];
     80          }
     81        }
     82      }
    7183
    7284      PathTSPTour tour = BestSolutionParameter.ActualValue;
    7385      if (tour == null) {
    74         tour = new PathTSPTour(coordinates, permutations[i], qualities[i]);
     86        tour = new PathTSPTour(coordinates, bestPermutation, bestQuality);
    7587        BestSolutionParameter.ActualValue = tour;
    7688        results.Add(new Result("Best TSP Solution", tour));
    7789      } else {
    78         if (tour.Quality.Value > qualities[i].Value) {
     90        if (tour.Quality.Value > bestQuality.Value) {
    7991          tour.Coordinates = coordinates;
    80           tour.Permutation = permutations[i];
    81           tour.Quality = qualities[i];
     92          tour.Permutation = bestPermutation;
     93          tour.Quality = bestQuality;
    8294          results["Best TSP Solution"].Value = tour;
    8395        }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/PopulationBestTSPSolutionAnalyzer.cs

    r3626 r3634  
    3434  /// An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.
    3535  /// </summary>
    36   [Item("BestTSPSolutionAnalyzer", "An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.")]
     36  [Item("PopulationBestTSPSolutionAnalyzer", "An operator for analyzing the best solution of Traveling Salesman Problems given in path representation using city coordinates.")]
    3737  [StorableClass]
    38   public sealed class BestTSPSolutionAnalyzer : SingleSuccessorOperator, IPopulationAnalyzer {
     38  public sealed class PopulationBestTSPSolutionAnalyzer : SingleSuccessorOperator, IPopulationAnalyzer {
    3939    public LookupParameter<DoubleMatrix> CoordinatesParameter {
    4040      get { return (LookupParameter<DoubleMatrix>)Parameters["Coordinates"]; }
     
    5353    }
    5454
    55     public BestTSPSolutionAnalyzer()
     55    public PopulationBestTSPSolutionAnalyzer()
    5656      : base() {
    5757      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities."));
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/HeuristicLab.Problems.TravelingSalesman-3.3.csproj

    r3616 r3634  
    8484  </ItemGroup>
    8585  <ItemGroup>
     86    <Compile Include="Analyzers\MultiPopulationBestTSPSolutionAnalyzer.cs" />
     87    <Compile Include="Analyzers\PopulationBestTSPSolutionAnalyzer.cs" />
    8688    <Compile Include="Analyzers\BestTSPSolutionAnalyzer.cs" />
    8789    <Compile Include="Evaluators\TSPEuclideanPathEvaluator.cs" />
Note: See TracChangeset for help on using the changeset viewer.