- Timestamp:
- 05/07/20 17:41:18 (5 years ago)
- 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 47 47 [Storable] public IValueParameter<ITSPData> TSPDataParameter { get; private set; } 48 48 [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; 50 51 51 52 public ITSPData TSPData { -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TravelingSalesman/3.3/TSPData.cs
r17356 r17525 21 21 22 22 using System; 23 using System.Collections.Generic; 23 24 using HEAL.Attic; 24 25 using HeuristicLab.Common; … … 34 35 35 36 double GetDistance(int fromCity, int toCity); 37 double GetPathDistance(IEnumerable<int> path, bool closed = true); 36 38 ITSPSolution GetSolution(Permutation tspTour, double tourLength); 37 39 TSPData Export(); … … 85 87 86 88 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 } 88 103 public TSPData Export() { 89 104 return new TSPData() { … … 133 148 134 149 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 } 135 164 136 165 public virtual ITSPSolution GetSolution(Permutation tour, double tourLength) {
Note: See TracChangeset
for help on using the changeset viewer.