Changeset 6857 for branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveTabuCriterion.cs
- Timestamp:
- 09/30/11 15:23:48 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveTabuCriterion.cs
r6797 r6857 116 116 PotvinPDRelocateMoveAttribute attribute = tabuMove as PotvinPDRelocateMoveAttribute; 117 117 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; 121 122 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; 125 126 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; 129 130 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; 132 133 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; 136 137 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; 140 141 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 } 146 147 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 } 150 152 } 151 153 }
Note: See TracChangeset
for help on using the changeset viewer.