Changeset 14677 for branches/OptimizationNetworks/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWEvaluator.cs
- Timestamp:
- 02/16/17 15:16:55 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OptimizationNetworks/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWEvaluator.cs
r14185 r14677 43 43 44 44 protected override void EvaluateTour(VRPEvaluation eval, IVRPProblemInstance instance, Tour tour, IVRPEncoding solution) { 45 TourInsertionInfo tourInfo = new TourInsertionInfo(solution.GetVehicleAssignment(solution.GetTourIndex(tour)));46 eval.InsertionInfo.AddTourInsertionInfo(tourInfo);47 45 double originalQuality = eval.Quality; 48 46 49 IHeterogenousCapacitatedProblemInstance cvrpInstance = instance as IHeterogenousCapacitatedProblemInstance;47 var cvrpInstance = (IHeterogenousCapacitatedProblemInstance)instance; 50 48 DoubleArray demand = instance.Demand; 51 49 52 ITimeWindowedProblemInstance vrptw = instance as ITimeWindowedProblemInstance;50 var vrptw = (ITimeWindowedProblemInstance)instance; 53 51 DoubleArray dueTime = vrptw.DueTime; 54 52 DoubleArray readyTime = vrptw.ReadyTime; 55 53 DoubleArray serviceTimes = vrptw.ServiceTime; 56 54 57 IPickupAndDeliveryProblemInstance pdp = instance as IPickupAndDeliveryProblemInstance;55 var pdp = (IPickupAndDeliveryProblemInstance)instance; 58 56 IntArray pickupDeliveryLocation = pdp.PickupDeliveryLocation; 59 57 60 IMultiDepotProblemInstance mdp = instance as IMultiDepotProblemInstance;58 var mdp = (IMultiDepotProblemInstance)instance; 61 59 IntArray vehicleAssignment = mdp.VehicleDepotAssignment; 62 60 int depots = mdp.Depots.Value; … … 81 79 double tourStartTime = readyTime[0]; 82 80 time = tourStartTime; 81 82 var tourInfo = new CVRPTWTourInsertionInfo(solution.GetVehicleAssignment(solution.GetTourIndex(tour)), capacity, tourStartTime); 83 eval.InsertionInfo.AddTourInsertionInfo(tourInfo); 83 84 84 85 //simulate a tour, start and end at depot … … 92 93 93 94 //drive there 94 double currentDista ce = vrptw.GetDistance(start, end, solution);95 time += currentDista ce;96 distance += currentDista ce;95 double currentDistance = vrptw.GetDistance(start, end, solution); 96 time += currentDistance; 97 distance += currentDistance; 97 98 98 99 double arrivalTime = time; … … 129 130 //Pickup / deliver 130 131 bool validPickupDelivery = 131 validPickupDelivery =132 132 ((demand[end - 1] >= 0) || 133 133 (stops.ContainsKey(pickupDeliveryLocation[end - 1]))); … … 144 144 145 145 double spareCapacity = capacity - currentLoad; 146 CVRPPDTWInsertionInfo stopInfo = new CVRPPDTWInsertionInfo(start, end, spareCapacity, tourStartTime,146 var stopInfo = new CVRPPDTWStopInsertionInfo(start, end, currentDistance, spareCapacity, 147 147 arrivalTime, time, spareTime, waitTime, new List<int>(stops.Keys), arrivalSpareCapacity); 148 148 tourInfo.AddStopInsertionInfo(stopInfo); … … 156 156 eval.VehicleUtilization += 1; 157 157 158 ( eval as CVRPEvaluation).Overload += overweight;158 ((CVRPEvaluation)eval).Overload += overweight; 159 159 double tourPenalty = 0; 160 160 double penalty = overweight * cvrpInstance.OverloadPenalty.Value; … … 163 163 tourPenalty += penalty; 164 164 165 ( eval as CVRPTWEvaluation).Tardiness += tardiness;165 ((CVRPTWEvaluation)eval).Tardiness += tardiness; 166 166 (eval as CVRPTWEvaluation).TravelTime += time; 167 167 … … 171 171 tourPenalty += penalty; 172 172 173 ( eval as CVRPPDTWEvaluation).PickupViolations += pickupViolations;173 ((CVRPPDTWEvaluation)eval).PickupViolations += pickupViolations; 174 174 penalty = pickupViolations * pdp.PickupViolationPenalty.Value; 175 175 eval.Penalty += penalty; … … 184 184 protected override double GetTourInsertionCosts(IVRPProblemInstance instance, IVRPEncoding solution, TourInsertionInfo tourInsertionInfo, int index, int customer, 185 185 out bool feasible) { 186 CVRPPDTWInsertionInfo insertionInfo = tourInsertionInfo.GetStopInsertionInfo(index) as CVRPPDTWInsertionInfo; 186 var tourInfo = (CVRPTWTourInsertionInfo)tourInsertionInfo; 187 var insertionInfo = (CVRPPDTWStopInsertionInfo)tourInsertionInfo.GetStopInsertionInfo(index); 187 188 188 189 double costs = 0; … … 230 231 231 232 if (index > 0) 232 time = ( tourInsertionInfo.GetStopInsertionInfo(index - 1) as CVRPTWInsertionInfo).LeaveTime;233 time = ((CVRPTWStopInsertionInfo)tourInsertionInfo.GetStopInsertionInfo(index - 1)).LeaveTime; 233 234 else 234 time = insertionInfo.TourStartTime;235 time = tourInfo.TourStartTime; 235 236 236 237 time += startDistance; … … 246 247 time += endDistance; 247 248 248 double additionalTime = time - ( tourInsertionInfo.GetStopInsertionInfo(index) as CVRPTWInsertionInfo).ArrivalTime;249 double additionalTime = time - ((CVRPTWStopInsertionInfo)tourInsertionInfo.GetStopInsertionInfo(index)).ArrivalTime; 249 250 for (int i = index; i < tourInsertionInfo.GetStopCount(); i++) { 250 CVRPTWInsertionInfo nextStop = tourInsertionInfo.GetStopInsertionInfo(i) as CVRPTWInsertionInfo;251 var nextStop = (CVRPTWStopInsertionInfo)tourInsertionInfo.GetStopInsertionInfo(i); 251 252 252 253 if (demand >= 0) {
Note: See TracChangeset
for help on using the changeset viewer.