Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/24/12 15:04:37 (12 years ago)
Author:
jkarder
Message:

#1331:

  • applied some of the changes suggested by ascheibe in comment:32:ticket:1331
  • restructured path relinking and improvement operators and similarity calculators
  • fixed bug in TSPMultipleGuidesPathRelinker
Location:
branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/Improvers/VRPImprovementOperator.cs

    r8086 r8319  
    3737  [Item("VRPImprovementOperator", "An operator that improves vehicle routing solutions.")]
    3838  [StorableClass]
    39   public sealed class VRPImprovementOperator : SingleSuccessorOperator, IImprovementOperator {
     39  public sealed class VRPImprovementOperator : SingleSuccessorOperator, ISingleObjectiveImprovementOperator {
    4040    #region Parameter properties
    4141    public ILookupParameter<DoubleValue> CapacityParameter {
     
    9090      get { return (ILookupParameter<DoubleValue>)Parameters["EvalTardinessPenalty"]; }
    9191    }
    92     public IValueLookupParameter<IItem> TargetParameter {
    93       get { return (IValueLookupParameter<IItem>)Parameters["Target"]; }
     92    public IValueLookupParameter<IItem> SolutionParameter {
     93      get { return (IValueLookupParameter<IItem>)Parameters["Solution"]; }
    9494    }
    9595    public ILookupParameter<DoubleValue> EvalTimeFactorParameter {
     
    127127      Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));
    128128      Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation."));
    129       Parameters.Add(new ValueLookupParameter<IItem>("Target", "This parameter is used for name translation only."));
     129      Parameters.Add(new ValueLookupParameter<IItem>("Solution", "The solution to be improved. This parameter is used for name translation only."));
    130130      Parameters.Add(new LookupParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation."));
    131131      Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false"));
     
    139139
    140140    public override IOperation Apply() {
    141       AlbaEncoding solution = TargetParameter.ActualValue is AlbaEncoding ?
    142         TargetParameter.ActualValue as AlbaEncoding :
    143         AlbaEncoding.ConvertFrom(TargetParameter.ActualValue as IVRPEncoding, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
     141      AlbaEncoding solution = SolutionParameter.ActualValue is AlbaEncoding ?
     142        SolutionParameter.ActualValue as AlbaEncoding :
     143        AlbaEncoding.ConvertFrom(SolutionParameter.ActualValue as IVRPEncoding, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
    144144
    145145      if (solution == null)
     
    156156        EvalTardinessPenaltyParameter.ActualValue, UseDistanceMatrixParameter.ActualValue);
    157157
    158       TargetParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter);
     158      SolutionParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter);
    159159      CurrentScopeParameter.ActualValue.Variables.Add(new Variable("LocalEvaluatedSolutions", new IntValue(evaluatedSolutions)));
    160160
  • branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/PathRelinkers/VRPPathRelinker.cs

    r8086 r8319  
    3939  [Item("VRPPathRelinker", "An operator that relinks paths between vehicle routing solutions.")]
    4040  [StorableClass]
    41   public sealed class VRPPathRelinker : PathRelinker, IStochasticOperator {
     41  public sealed class VRPPathRelinker : SingleObjectivePathRelinker, IStochasticOperator {
    4242    #region Parameters
    4343    public ILookupParameter<DoubleMatrix> CoordinatesParameter {
  • branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/SimilarityCalculators/VRPSimilarityCalculator.cs

    r8304 r8319  
    3333  /// An operator that performs similarity calculation between two vehicle routing solutions.
    3434  /// </summary>
     35  /// <remarks>
     36  /// The operator calculates the similarity based on the number of edges the two solutions have in common.
     37  /// </remarks>
    3538  [Item("VRPSimilarityCalculator", "An operator that performs similarity calculation between two vehicle routing solutions.")]
    36   public sealed class VRPSimilarityCalculator : SimilarityCalculator {
     39  public sealed class VRPSimilarityCalculator : SingleObjectiveSolutionSimilarityCalculator {
    3740    private VRPSimilarityCalculator(bool deserializing) : base(deserializing) { }
    3841    private VRPSimilarityCalculator(VRPSimilarityCalculator original, Cloner cloner) : base(original, cloner) { }
     
    7881    }
    7982
    80     public override double CalculateIndividualSimilarity(IScope left, IScope right) {
    81       var sol1 = left.Variables[Target].Value as PotvinEncoding;
    82       var sol2 = right.Variables[Target].Value as PotvinEncoding;
     83    public override double CalculateSolutionSimilarity(IScope leftSolution, IScope rightSolution) {
     84      var sol1 = leftSolution.Variables[SolutionVariableName].Value as PotvinEncoding;
     85      var sol2 = rightSolution.Variables[SolutionVariableName].Value as PotvinEncoding;
    8386
    8487      return CalculateSimilarity(sol1, sol2);
  • branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs

    r8086 r8319  
    518518      }
    519519
    520       foreach (var op in Operators.OfType<IVRPMultiNeighborhoodShakingOperator>()) {
     520      foreach (IVRPMultiNeighborhoodShakingOperator op in Operators.OfType<IVRPMultiNeighborhoodShakingOperator>()) {
    521521        op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
    522522      }
    523       foreach (IImprovementOperator op in Operators.OfType<IImprovementOperator>()) {
    524         op.TargetParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
    525         op.TargetParameter.Hidden = true;
    526       }
    527       foreach (IPathRelinker op in Operators.OfType<IPathRelinker>()) {
     523      foreach (ISingleObjectiveImprovementOperator op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
     524        op.SolutionParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
     525        op.SolutionParameter.Hidden = true;
     526      }
     527      foreach (ISingleObjectivePathRelinker op in Operators.OfType<ISingleObjectivePathRelinker>()) {
    528528        op.ParentsParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
    529529        op.ParentsParameter.Hidden = true;
    530530      }
    531       foreach (ISimilarityCalculator op in Operators.OfType<ISimilarityCalculator>()) {
    532         op.Target = SolutionCreator.VRPToursParameter.ActualName;
     531      foreach (VRPSimilarityCalculator op in Operators.OfType<VRPSimilarityCalculator>()) {
     532        op.SolutionVariableName = SolutionCreator.VRPToursParameter.ActualName;
    533533      }
    534534    }
Note: See TracChangeset for help on using the changeset viewer.