Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/07/20 17:41:18 (5 years ago)
Author:
abeham
Message:

#2521: working on porting orienteering problem
Open points include:

  • Visualization of OrienteeringProblemData
  • Fix visualization of solution
  • Cleanup unused classes
Location:
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TravelingSalesman/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.TravelingSalesman/3.3/TSP.cs

    r17517 r17525  
    4747    [Storable] public IValueParameter<ITSPData> TSPDataParameter { get; private set; }
    4848    [Storable] public IValueParameter<ITSPSolution> BestKnownSolutionParameter { get; private set; }
    49     [Storable] public IResultParameter<ITSPSolution> BestTSPSolutionParameter { get; private set; }
     49    [Storable] protected IResultParameter<ITSPSolution> BestTSPSolutionParameter { get; private set; }
     50    public IResultDefinition<ITSPSolution> BestTSPSolution => BestTSPSolutionParameter;
    5051
    5152    public ITSPData TSPData {
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.TravelingSalesman/3.3/TSPData.cs

    r17356 r17525  
    2121
    2222using System;
     23using System.Collections.Generic;
    2324using HEAL.Attic;
    2425using HeuristicLab.Common;
     
    3435
    3536    double GetDistance(int fromCity, int toCity);
     37    double GetPathDistance(IEnumerable<int> path, bool closed = true);
    3638    ITSPSolution GetSolution(Permutation tspTour, double tourLength);
    3739    TSPData Export();
     
    8587
    8688    public double GetDistance(int fromCity, int toCity) => Matrix[fromCity, toCity];
    87 
     89    public double GetPathDistance(IEnumerable<int> path, bool closed = true) {
     90      var iter = path.GetEnumerator();
     91      if (!iter.MoveNext()) return 0;
     92      var start = iter.Current;
     93      var prev = start;
     94      var distance = 0.0;
     95      while (iter.MoveNext()) {
     96        var cur = iter.Current;
     97        distance += Matrix[prev, cur];
     98        prev = cur;
     99      }
     100      if (closed) distance += Matrix[prev, start];
     101      return distance;
     102    }
    88103    public TSPData Export() {
    89104      return new TSPData() {
     
    133148
    134149    public abstract double GetDistance(double fromX, double fromY, double toX, double toY);
     150    public double GetPathDistance(IEnumerable<int> path, bool closed = true) {
     151      var iter = path.GetEnumerator();
     152      if (!iter.MoveNext()) return 0;
     153      var start = iter.Current;
     154      var prev = start;
     155      var distance = 0.0;
     156      while (iter.MoveNext()) {
     157        var cur = iter.Current;
     158        distance += GetDistance(prev, cur);
     159        prev = cur;
     160      }
     161      if (closed) distance += GetDistance(prev, start);
     162      return distance;
     163    }
    135164
    136165    public virtual ITSPSolution GetSolution(Permutation tour, double tourLength) {
Note: See TracChangeset for help on using the changeset viewer.