Changeset 13470 for branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/EstimatedPTSPMoveEvaluator.cs
- Timestamp:
- 12/15/15 16:38:08 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/EstimatedPTSPMoveEvaluator.cs
r13412 r13470 30 30 31 31 namespace HeuristicLab.Problems.PTSP { 32 [Item("EstimatedPTSPMoveEvaluator", "A base class for operators which evaluate TSP moves.")]32 [Item("EstimatedPTSPMoveEvaluator", "A base class for operators which evaluate PTSP moves.")] 33 33 [StorableClass] 34 34 public abstract class EstimatedPTSPMoveEvaluator : SingleSuccessorOperator, IEstimatedPTSPMoveEvaluator { … … 81 81 var permutation = PermutationParameter.ActualValue; 82 82 var coordinates = CoordinatesParameter.ActualValue; 83 double relativeQualityDifference = 0; 83 var realizations = RealizationsParameter.ActualValue; 84 Func<int, int, double> distance = null; 84 85 if (UseDistanceMatrixParameter.ActualValue.Value) { 85 86 var distanceMatrix = DistanceMatrixParameter.ActualValue; 86 87 if (distanceMatrix == null) throw new InvalidOperationException("The distance matrix has not been calculated."); 87 relativeQualityDifference = EvaluateByDistanceMatrix(permutation, distanceMatrix);88 distance = (a, b) => distanceMatrix[a, b]; 88 89 } else { 89 90 if (coordinates == null) throw new InvalidOperationException("No coordinates were given."); 90 91 var distanceCalculator = DistanceCalculatorParameter.ActualValue; 91 92 if (distanceCalculator == null) throw new InvalidOperationException("Distance calculator is null!"); 92 relativeQualityDifference = EvaluateByCoordinates(permutation, coordinates, distanceCalculator);93 distance = (a, b) => distanceCalculator.Calculate(a, b, coordinates); 93 94 } 95 var relativeQualityDifference = EvaluateMove(permutation, distance, realizations); 94 96 var moveQuality = MoveQualityParameter.ActualValue; 95 97 if (moveQuality == null) MoveQualityParameter.ActualValue = new DoubleValue(QualityParameter.ActualValue.Value + relativeQualityDifference); … … 98 100 } 99 101 100 protected abstract double EvaluateByDistanceMatrix(Permutation permutation, DistanceMatrix distanceMatrix); 101 protected abstract double EvaluateByCoordinates(Permutation permutation, DoubleMatrix coordinates, DistanceCalculator distanceCalculator); 102 protected abstract double EvaluateMove(Permutation permutation, Func<int, int, double> distance, ItemList<BoolArray> realizations); 102 103 } 103 104 }
Note: See TracChangeset
for help on using the changeset viewer.