Changeset 17253 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/Improvers/PTSPAnalyticalInsertionLocalImprovement.cs
- Timestamp:
- 09/16/19 16:12:21 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/Improvers/PTSPAnalyticalInsertionLocalImprovement.cs
r17226 r17253 22 22 using System; 23 23 using System.Threading; 24 using HEAL.Attic; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; … … 29 30 using HeuristicLab.Optimization; 30 31 using HeuristicLab.Parameters; 31 using HEAL.Attic;32 32 33 33 namespace HeuristicLab.Problems.PTSP { … … 39 39 /// </remarks> 40 40 [Item("PTSP Analytical Insertion Local Improvement", "An operator that improves probabilistic traveling salesman solutions. The operator tries to improve the probabilistic traveling salesman solution by swapping two randomly chosen edges for a certain number of times.")] 41 [StorableType(" D63C6CB3-A5EF-4270-A252-2F5EBF1ED163")]41 [StorableType("5adca9d8-02b2-4937-9f79-a24d8ea8ea19")] 42 42 public sealed class PTSPAnalyticalInsertionLocalImprovement : SingleSuccessorOperator, IAnalyticalPTSPOperator, ILocalImprovementOperator { 43 43 … … 70 70 } 71 71 72 public ILookupParameter<DistanceMatrix> DistanceMatrixParameter { 73 get { return (ILookupParameter<DistanceMatrix>)Parameters["DistanceMatrix"]; } 74 } 75 76 public ILookupParameter<DoubleArray> ProbabilitiesParameter { 77 get { return (ILookupParameter<DoubleArray>)Parameters["Probabilities"]; } 72 public ILookupParameter<IProbabilisticTSPData> ProbabilisticTSPDataParameter { 73 get { return (ILookupParameter<IProbabilisticTSPData>)Parameters["PTSP Data"]; } 78 74 } 79 75 … … 90 86 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality value of the assignment.")); 91 87 Parameters.Add(new LookupParameter<BoolValue>("Maximization", "True if the problem should be maximized or minimized.")); 92 Parameters.Add(new LookupParameter<DistanceMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities.")); 93 Parameters.Add(new LookupParameter<DoubleArray>("Probabilities", "The list of probabilities of the cities to appear.")); 88 Parameters.Add(new LookupParameter<IProbabilisticTSPData>("PTSP Data", "The main parameters of the p-TSP.")); 94 89 } 95 90 … … 98 93 } 99 94 100 public static void Improve(Permutation assignment, DoubleMatrix distances, DoubleValue quality, IntValue localIterations, IntValue evaluatedSolutions, bool maximization, int maxIterations, DoubleArray probabilities, CancellationToken cancellation) { 101 var distanceM = (DistanceMatrix)distances; 102 Func<int, int, double> distance = (a, b) => distanceM[a, b]; 95 public static void Improve(Permutation assignment, IProbabilisticTSPData data, DoubleValue quality, IntValue localIterations, IntValue evaluatedSolutions, bool maximization, int maxIterations, CancellationToken cancellation) { 103 96 for (var i = localIterations.Value; i < maxIterations; i++) { 104 97 TranslocationMove bestMove = null; … … 106 99 var evaluations = 0.0; 107 100 foreach (var move in ExhaustiveInsertionMoveGenerator.Generate(assignment)) { 108 var moveQuality = PTSPAnalyticalInsertionMoveEvaluator.EvaluateMove(assignment, move, d istance, probabilities);101 var moveQuality = PTSPAnalyticalInsertionMoveEvaluator.EvaluateMove(assignment, move, data); 109 102 evaluations++; 110 103 if (maximization && moveQuality > bestQuality … … 127 120 var assignment = PermutationParameter.ActualValue; 128 121 var maximization = MaximizationParameter.ActualValue.Value; 129 var distances = DistanceMatrixParameter.ActualValue;130 122 var quality = QualityParameter.ActualValue; 131 123 var localIterations = LocalIterationsParameter.ActualValue; 132 124 var evaluations = EvaluatedSolutionsParameter.ActualValue; 133 var probabilities = ProbabilitiesParameter.ActualValue;125 var data = ProbabilisticTSPDataParameter.ActualValue; 134 126 if (localIterations == null) { 135 127 localIterations = new IntValue(0); … … 137 129 } 138 130 139 Improve(assignment, d istances, quality, localIterations, evaluations, maximization, maxIterations, probabilities, CancellationToken);131 Improve(assignment, data, quality, localIterations, evaluations, maximization, maxIterations, CancellationToken); 140 132 141 133 localIterations.Value = 0;
Note: See TracChangeset
for help on using the changeset viewer.