Changeset 17335 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/ProbabilisticTSP.cs
- Timestamp:
- 10/17/19 21:40:30 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/ProbabilisticTSP.cs
r17270 r17335 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Data;28 27 using HeuristicLab.Encodings.PermutationEncoding; 29 28 using HeuristicLab.Optimization; … … 70 69 Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<IProbabilisticTSPSolution>("BestKnownSolution", "The best known solution of this pTSP instance.")); 71 70 72 ProbabilisticTSPData = new MatrixPTSPData();73 Encoding.Length = ProbabilisticTSPData. Cities;71 ProbabilisticTSPData = new ProbabilisticTSPData(); 72 Encoding.Length = ProbabilisticTSPData.TSPData.Cities; 74 73 } 75 74 76 75 protected override void OnEncodingChanged() { 77 76 base.OnEncodingChanged(); 78 Encoding.Length = ProbabilisticTSPData. Cities;77 Encoding.Length = ProbabilisticTSPData.TSPData.Cities; 79 78 } 80 79 … … 117 116 Description = data.Description; 118 117 119 if (data.Dimension <= DistanceMatrixSizeLimit) { 120 ProbabilisticTSPData = new MatrixPTSPData(data.Name, data.GetDistanceMatrix(), data.Probabilities, data.Coordinates) { Description = data.Description }; 121 } else if (data.DistanceMeasure == DistanceMeasure.Direct && data.Distances != null) { 122 ProbabilisticTSPData = new MatrixPTSPData(data.Name, data.Distances, data.Probabilities, data.Coordinates) { Description = data.Description }; 123 } else { 124 switch (data.DistanceMeasure) { 125 case DistanceMeasure.Att: 126 ProbabilisticTSPData = new AttPTSPData(data.Name, data.Coordinates, data.Probabilities) { Description = data.Description }; 127 break; 128 case DistanceMeasure.Euclidean: 129 ProbabilisticTSPData = new EuclideanPTSPData(data.Name, data.Coordinates, data.Probabilities, EuclideanTSPData.DistanceRounding.None) { Description = data.Description }; 130 break; 131 case DistanceMeasure.RoundedEuclidean: 132 ProbabilisticTSPData = new EuclideanPTSPData(data.Name, data.Coordinates, data.Probabilities, EuclideanTSPData.DistanceRounding.Midpoint) { Description = data.Description }; 133 break; 134 case DistanceMeasure.UpperEuclidean: 135 ProbabilisticTSPData = new EuclideanPTSPData(data.Name, data.Coordinates, data.Probabilities, EuclideanTSPData.DistanceRounding.Ceiling) { Description = data.Description }; 136 break; 137 case DistanceMeasure.Geo: 138 ProbabilisticTSPData = new GeoPTSPData(data.Name, data.Coordinates, data.Probabilities) { Description = data.Description }; 139 break; 140 case DistanceMeasure.Manhattan: 141 ProbabilisticTSPData = new ManhattanPTSPData(data.Name, data.Coordinates, data.Probabilities) { Description = data.Description }; 142 break; 143 case DistanceMeasure.Maximum: 144 ProbabilisticTSPData = new MaximumPTSPData(data.Name, data.Coordinates, data.Probabilities) { Description = data.Description }; 145 break; 146 default: 147 throw new System.IO.InvalidDataException("An unknown distance measure is given in the instance!"); 148 } 149 } 118 var tspData = TSP.GetDataFromInstance(data); 119 ProbabilisticTSPData = new ProbabilisticTSPData(tspData, data.Probabilities); 150 120 BestKnownSolution = null; 151 121 BestKnownQuality = double.NaN; … … 154 124 try { 155 125 var tour = new Permutation(PermutationTypes.RelativeUndirected, data.BestKnownTour); 156 var tourLength = Evaluate(tour, new MersenneTwister(1)); 157 BestKnownSolution = new ProbabilisticTSPSolution(data.Coordinates != null ? new DoubleMatrix(data.Coordinates) : null, new PercentArray(data.Probabilities), tour, new DoubleValue(tourLength));126 var tourLength = Evaluate(tour, new MersenneTwister(1)); 127 BestKnownSolution = ProbabilisticTSPData.GetSolution(tour, tourLength); 158 128 BestKnownQuality = tourLength; 159 129 } catch (InvalidOperationException) {
Note: See TracChangeset
for help on using the changeset viewer.