Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/30/11 15:23:48 (13 years ago)
Author:
svonolfe
Message:

Added vehicle assignment manipulator and move for multi depot instances (#1177)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveTabuCriterion.cs

    r6797 r6857  
    116116        PotvinPDRelocateMoveAttribute attribute = tabuMove as PotvinPDRelocateMoveAttribute;
    117117
    118         double distance = 0;
    119         if (MoveDistanceParameter.ActualValue != null)
    120           distance = MoveDistanceParameter.ActualValue.Value;
     118        if (attribute != null) {
     119          double distance = 0;
     120          if (MoveDistanceParameter.ActualValue != null)
     121            distance = MoveDistanceParameter.ActualValue.Value;
    121122
    122         double overload = 0;
    123         if (MoveOverloadParameter.ActualValue != null)
    124           overload = MoveOverloadParameter.ActualValue.Value;
     123          double overload = 0;
     124          if (MoveOverloadParameter.ActualValue != null)
     125            overload = MoveOverloadParameter.ActualValue.Value;
    125126
    126         double tardiness = 0;
    127         if (MoveTardinessParameter.ActualValue != null)
    128           tardiness = MoveTardinessParameter.ActualValue.Value;
     127          double tardiness = 0;
     128          if (MoveTardinessParameter.ActualValue != null)
     129            tardiness = MoveTardinessParameter.ActualValue.Value;
    129130
    130         IVRPProblemInstance instance = ProblemInstanceParameter.ActualValue;
    131         double quality = attribute.Distance * instance.DistanceFactor.Value;
     131          IVRPProblemInstance instance = ProblemInstanceParameter.ActualValue;
     132          double quality = attribute.Distance * instance.DistanceFactor.Value;
    132133
    133         IHomogenousCapacitatedProblemInstance cvrp = instance as IHomogenousCapacitatedProblemInstance;
    134         if (cvrp != null)
    135           quality += attribute.Overload * cvrp.OverloadPenalty.Value;
     134          IHomogenousCapacitatedProblemInstance cvrp = instance as IHomogenousCapacitatedProblemInstance;
     135          if (cvrp != null)
     136            quality += attribute.Overload * cvrp.OverloadPenalty.Value;
    136137
    137         ITimeWindowedProblemInstance vrptw = instance as ITimeWindowedProblemInstance;
    138         if (vrptw != null)
    139           quality += attribute.Tardiness * vrptw.TardinessPenalty.Value;
     138          ITimeWindowedProblemInstance vrptw = instance as ITimeWindowedProblemInstance;
     139          if (vrptw != null)
     140            quality += attribute.Tardiness * vrptw.TardinessPenalty.Value;
    140141
    141         if (!useAspiration || moveQuality >= quality) {
    142           if (attribute.City == move.City && attribute.Tour == move.Tour) {
    143             isTabu = true;
    144             break;
    145           }
     142          if (!useAspiration || moveQuality >= quality) {
     143            if (attribute.City == move.City && attribute.Tour == move.Tour) {
     144              isTabu = true;
     145              break;
     146            }
    146147
    147           if (attribute.Distance == distance && attribute.Overload == overload && attribute.Tardiness == tardiness) {
    148             isTabu = true;
    149             break;
     148            if (attribute.Distance == distance && attribute.Overload == overload && attribute.Tardiness == tardiness) {
     149              isTabu = true;
     150              break;
     151            }
    150152          }
    151153        }
Note: See TracChangeset for help on using the changeset viewer.