- Timestamp:
- 12/15/15 16:38:08 (9 years ago)
- Location:
- branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/TwoPointFiveOpt
- Files:
-
- 1 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/TwoPointFiveOpt/PTSPAnalyticalTwoPointFiveMoveEvaluator.cs
r13451 r13470 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 28 29 29 30 namespace HeuristicLab.Problems.PTSP { 30 [Item("PTSP 2.5-MoveEvaluator", "Operator that evaluates 2.5-p-opt moves of PTSP")]31 [Item("PTSP Analytical 2.5-MoveEvaluator", "Operator that evaluates 2.5-p-opt moves of PTSP by a full solution evaluation.")] 31 32 [StorableClass] 32 public class PTSP TwoPointFiveMoveEvaluator : EstimatedPTSPMoveEvaluator, ITwoPointFiveMoveOperator {33 public class PTSPAnalyticalTwoPointFiveMoveEvaluator : AnalyticalPTSPMoveEvaluator, ITwoPointFiveMoveOperator { 33 34 34 35 public ILookupParameter<TwoPointFiveMove> TwoPointFiveMoveParameter { … … 37 38 38 39 [StorableConstructor] 39 protected PTSP TwoPointFiveMoveEvaluator(bool deserializing) : base(deserializing) { }40 protected PTSP TwoPointFiveMoveEvaluator(PTSPTwoPointFiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { }41 public PTSP TwoPointFiveMoveEvaluator()40 protected PTSPAnalyticalTwoPointFiveMoveEvaluator(bool deserializing) : base(deserializing) { } 41 protected PTSPAnalyticalTwoPointFiveMoveEvaluator(PTSPAnalyticalTwoPointFiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { } 42 public PTSPAnalyticalTwoPointFiveMoveEvaluator() 42 43 : base() { 43 44 Parameters.Add(new LookupParameter<TwoPointFiveMove>("TwoPointFiveMove", "The move to evaluate.")); … … 45 46 46 47 public override IDeepCloneable Clone(Cloner cloner) { 47 return new PTSP TwoPointFiveMoveEvaluator(this, cloner);48 return new PTSPAnalyticalTwoPointFiveMoveEvaluator(this, cloner); 48 49 } 49 50 50 protected override double EvaluateByCoordinates(Permutation permutation, DoubleMatrix coordinates, DistanceCalculator distanceCalculator) { 51 var move = TwoPointFiveMoveParameter.ActualValue; 52 var realizations = RealizationsParameter.ActualValue; 53 return EvaluateByCoordinates(permutation, coordinates, distanceCalculator, move, realizations); 51 protected override double EvaluateMove(Permutation permutation, Func<int, int, double> distance, DoubleArray probabilities) { 52 return EvaluateMove(permutation, TwoPointFiveMoveParameter.ActualValue, distance, probabilities); 54 53 } 55 54 56 public static double Evaluate ByCoordinates(Permutation permutation, DoubleMatrix coordinates, DistanceCalculator distanceCalculator, TwoPointFiveMove move, ItemList<BoolArray> realizations) {55 public static double EvaluateMove(Permutation permutation, TwoPointFiveMove move, Func<int, int, double> distance, DoubleArray probabilities) { 57 56 if (move.IsInvert) { 58 return PTSPEstimatedInversionMoveEvaluator.EvaluateByCoordinates(permutation, 59 new InversionMove(move.Index1, move.Index2, move.Permutation), 60 coordinates, distanceCalculator, realizations); 57 return PTSPAnalyticalInversionMoveEvaluator.EvaluateMove(permutation, 58 new InversionMove(move.Index1, move.Index2, move.Permutation), distance, probabilities); 61 59 } else { 62 return PTSPEstimatedInsertionMoveEvaluator.EvaluateByCoordinates(permutation, 63 new TranslocationMove(move.Index1, move.Index1, move.Index2), 64 coordinates, distanceCalculator, realizations); 65 } 66 } 67 68 protected override double EvaluateByDistanceMatrix(Permutation permutation, DistanceMatrix distanceMatrix) { 69 var move = TwoPointFiveMoveParameter.ActualValue; 70 var realizations = RealizationsParameter.ActualValue; 71 return EvaluateByDistanceMatrix(permutation, distanceMatrix, move, realizations); 72 } 73 74 public static double EvaluateByDistanceMatrix(Permutation permutation, DistanceMatrix distanceMatrix, TwoPointFiveMove move, ItemList<BoolArray> realizations) { 75 if (move.IsInvert) { 76 return PTSPEstimatedInversionMoveEvaluator.EvaluateByDistanceMatrix(permutation, 77 new InversionMove(move.Index1, move.Index2, move.Permutation), 78 distanceMatrix, realizations); 79 } else { 80 return PTSPEstimatedInsertionMoveEvaluator.EvaluateByDistanceMatrix(permutation, 81 new TranslocationMove(move.Index1, move.Index1, move.Index2), 82 distanceMatrix, realizations); 60 return PTSPAnalyticalInsertionMoveEvaluator.EvaluateMove(permutation, 61 new TranslocationMove(move.Index1, move.Index1, move.Index2), distance, probabilities); 83 62 } 84 63 } -
branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/TwoPointFiveOpt/PTSPEstimatedTwoPointFiveMoveEvaluator.cs
r13469 r13470 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 28 29 29 30 namespace HeuristicLab.Problems.PTSP { 30 [Item("PTSP 2.5-MoveEvaluator", "Operator that evaluates 2.5-p-opt moves of PTSP")]31 [Item("PTSP Estimated 2.5-MoveEvaluator", "Operator that evaluates 2.5-p-opt moves of PTSP")] 31 32 [StorableClass] 32 public class PTSP TwoPointFiveMoveEvaluator : EstimatedPTSPMoveEvaluator, ITwoPointFiveMoveOperator {33 public class PTSPEstimatedTwoPointFiveMoveEvaluator : EstimatedPTSPMoveEvaluator, ITwoPointFiveMoveOperator { 33 34 34 35 public ILookupParameter<TwoPointFiveMove> TwoPointFiveMoveParameter { … … 37 38 38 39 [StorableConstructor] 39 protected PTSP TwoPointFiveMoveEvaluator(bool deserializing) : base(deserializing) { }40 protected PTSP TwoPointFiveMoveEvaluator(PTSPTwoPointFiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { }41 public PTSP TwoPointFiveMoveEvaluator()40 protected PTSPEstimatedTwoPointFiveMoveEvaluator(bool deserializing) : base(deserializing) { } 41 protected PTSPEstimatedTwoPointFiveMoveEvaluator(PTSPEstimatedTwoPointFiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { } 42 public PTSPEstimatedTwoPointFiveMoveEvaluator() 42 43 : base() { 43 44 Parameters.Add(new LookupParameter<TwoPointFiveMove>("TwoPointFiveMove", "The move to evaluate.")); … … 45 46 46 47 public override IDeepCloneable Clone(Cloner cloner) { 47 return new PTSP TwoPointFiveMoveEvaluator(this, cloner);48 return new PTSPEstimatedTwoPointFiveMoveEvaluator(this, cloner); 48 49 } 49 50 50 protected override double EvaluateByCoordinates(Permutation permutation, DoubleMatrix coordinates, DistanceCalculator distanceCalculator) { 51 var move = TwoPointFiveMoveParameter.ActualValue; 52 var realizations = RealizationsParameter.ActualValue; 53 return EvaluateByCoordinates(permutation, coordinates, distanceCalculator, move, realizations); 51 protected override double EvaluateMove(Permutation permutation, Func<int, int, double> distance, ItemList<BoolArray> realizations) { 52 return EvaluateMove(permutation, TwoPointFiveMoveParameter.ActualValue, distance, realizations); 54 53 } 55 54 56 public static double Evaluate ByCoordinates(Permutation permutation, DoubleMatrix coordinates, DistanceCalculator distanceCalculator, TwoPointFiveMove move, ItemList<BoolArray> realizations) {55 public static double EvaluateMove(Permutation permutation, TwoPointFiveMove move, Func<int, int, double> distance, ItemList<BoolArray> realizations) { 57 56 if (move.IsInvert) { 58 return PTSPEstimatedInversionMoveEvaluator.EvaluateByCoordinates(permutation, 59 new InversionMove(move.Index1, move.Index2, move.Permutation), 60 coordinates, distanceCalculator, realizations); 57 return PTSPEstimatedInversionMoveEvaluator.EvaluateMove(permutation, 58 new InversionMove(move.Index1, move.Index2, move.Permutation), distance, realizations); 61 59 } else { 62 return PTSPEstimatedInsertionMoveEvaluator.EvaluateByCoordinates(permutation, 63 new TranslocationMove(move.Index1, move.Index1, move.Index2), 64 coordinates, distanceCalculator, realizations); 65 } 66 } 67 68 protected override double EvaluateByDistanceMatrix(Permutation permutation, DistanceMatrix distanceMatrix) { 69 var move = TwoPointFiveMoveParameter.ActualValue; 70 var realizations = RealizationsParameter.ActualValue; 71 return EvaluateByDistanceMatrix(permutation, distanceMatrix, move, realizations); 72 } 73 74 public static double EvaluateByDistanceMatrix(Permutation permutation, DistanceMatrix distanceMatrix, TwoPointFiveMove move, ItemList<BoolArray> realizations) { 75 if (move.IsInvert) { 76 return PTSPEstimatedInversionMoveEvaluator.EvaluateByDistanceMatrix(permutation, 77 new InversionMove(move.Index1, move.Index2, move.Permutation), 78 distanceMatrix, realizations); 79 } else { 80 return PTSPEstimatedInsertionMoveEvaluator.EvaluateByDistanceMatrix(permutation, 81 new TranslocationMove(move.Index1, move.Index1, move.Index2), 82 distanceMatrix, realizations); 60 return PTSPEstimatedInsertionMoveEvaluator.EvaluateMove(permutation, 61 new TranslocationMove(move.Index1, move.Index1, move.Index2), distance, realizations); 83 62 } 84 63 } -
branches/PTSP/HeuristicLab.Problems.PTSP/3.3/Moves/TwoPointFiveOpt/TwoPointFiveMoveMaker.cs
r13412 r13470 71 71 var quality = QualityParameter.ActualValue; 72 72 73 Apply(permutation, move); 74 75 quality.Value = moveQuality.Value; 76 77 return base.Apply(); 78 } 79 80 public static void Apply(Permutation permutation, TwoPointFiveMove move) { 73 81 if (move.IsInvert) { 74 82 InversionManipulator.Apply(permutation, move.Index1, move.Index2); … … 76 84 TranslocationManipulator.Apply(permutation, move.Index1, move.Index1, move.Index2); 77 85 } 78 79 quality.Value = moveQuality.Value;80 81 return base.Apply();82 86 } 83 87 }
Note: See TracChangeset
for help on using the changeset viewer.