Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/16/19 16:12:21 (5 years ago)
Author:
abeham
Message:

#2521: worked on refactoring PTSP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/Improvers/PTSPEstimatedInsertionLocalImprovement.cs

    r17226 r17253  
    2121
    2222using System;
     23using System.Collections.Generic;
     24using System.Linq;
    2325using System.Threading;
     26using HEAL.Attic;
    2427using HeuristicLab.Common;
    2528using HeuristicLab.Core;
     
    2932using HeuristicLab.Optimization;
    3033using HeuristicLab.Parameters;
    31 using HEAL.Attic;
    3234
    3335namespace HeuristicLab.Problems.PTSP {
     
    7072    }
    7173
    72     public ILookupParameter<DistanceMatrix> DistanceMatrixParameter {
    73       get { return (ILookupParameter<DistanceMatrix>)Parameters["DistanceMatrix"]; }
     74    public ILookupParameter<IProbabilisticTSPData> ProbabilisticTSPDataParameter {
     75      get { return (ILookupParameter<IProbabilisticTSPData>)Parameters["PTSP Data"]; }
    7476    }
    7577
    76     public ILookupParameter<ItemList<BoolArray>> RealizationsParameter {
    77       get { return (ILookupParameter<ItemList<BoolArray>>)Parameters["Realizations"]; }
     78    public ILookupParameter<ReadOnlyItemList<BoolArray>> RealizationsParameter {
     79      get { return (ILookupParameter<ReadOnlyItemList<BoolArray>>)Parameters["Realizations"]; }
    7880    }
    7981
     
    9092      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality value of the assignment."));
    9193      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."));
     94      Parameters.Add(new LookupParameter<IProbabilisticTSPData>("PTSP Data", "The main parameters of the p-TSP."));
    9395      Parameters.Add(new LookupParameter<ItemList<BoolArray>>("Realizations", "The list of samples drawn from all possible stochastic instances."));
    9496    }
     
    98100    }
    99101
    100     public static void Improve(Permutation assignment, DoubleMatrix distances, DoubleValue quality, IntValue localIterations, IntValue evaluatedSolutions, bool maximization, int maxIterations, ItemList<BoolArray> realizations, CancellationToken cancellation) {
    101       var distanceM = (DistanceMatrix)distances;
    102       Func<int, int, double> distance = (a, b) => distanceM[a, b];
     102    public static void Improve(Permutation assignment, IProbabilisticTSPData data, DoubleValue quality, IntValue localIterations, IntValue evaluatedSolutions, bool maximization, int maxIterations, IEnumerable<BoolArray> realizations, CancellationToken cancellation) {
    103103      for (var i = localIterations.Value; i < maxIterations; i++) {
    104104        TranslocationMove bestMove = null;
     
    106106        double evaluations = 0.0;
    107107        foreach (var move in ExhaustiveInsertionMoveGenerator.Generate(assignment)) {
    108           double moveQuality = PTSPEstimatedInsertionMoveEvaluator.EvaluateMove(assignment, move, distance, realizations);
    109           evaluations += realizations.Count * 6.0 / (assignment.Length * assignment.Length);
     108          double moveQuality = PTSPEstimatedInsertionMoveEvaluator.EvaluateMove(assignment, move, data, realizations);
     109          evaluations += realizations.Count() * 6.0 / (assignment.Length * assignment.Length);
    110110          if (maximization && moveQuality > bestQuality
    111111            || !maximization && moveQuality < bestQuality) {
     
    127127      var assignment = PermutationParameter.ActualValue;
    128128      var maximization = MaximizationParameter.ActualValue.Value;
    129       var distances = DistanceMatrixParameter.ActualValue;
    130129      var quality = QualityParameter.ActualValue;
    131130      var localIterations = LocalIterationsParameter.ActualValue;
    132131      var evaluations = EvaluatedSolutionsParameter.ActualValue;
     132      var data = ProbabilisticTSPDataParameter.ActualValue;
    133133      var realizations = RealizationsParameter.ActualValue;
    134134      if (localIterations == null) {
     
    137137      }
    138138
    139       Improve(assignment, distances, quality, localIterations, evaluations, maximization, maxIterations, realizations, CancellationToken);
     139      Improve(assignment, data, quality, localIterations, evaluations, maximization, maxIterations, realizations, CancellationToken);
    140140
    141141      localIterations.Value = 0;
Note: See TracChangeset for help on using the changeset viewer.