diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/SolutionPrinter.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/SolutionPrinter.java index 741e3f79..ef6b8fb6 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/SolutionPrinter.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/SolutionPrinter.java @@ -1,16 +1,16 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ @@ -119,13 +119,13 @@ public class SolutionPrinter { String jobId; if(act instanceof JobActivity) jobId = ((JobActivity)act).getJob().getId(); else jobId = "-"; - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocationId(), act.getLocationId(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); + double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), act.getLocation(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); c+= problem.getActivityCosts().getActivityCost(act, act.getArrTime(), route.getDriver(), route.getVehicle()); costs+=c; System.out.format(leftAlgin, routeNu, getVehicleString(route), act.getName(), jobId, Math.round(act.getArrTime()), Math.round(act.getEndTime()),Math.round(costs)); prevAct=act; } - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocationId(), route.getEnd().getLocationId(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); + double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), route.getEnd().getLocation(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); c+= problem.getActivityCosts().getActivityCost(route.getEnd(), route.getEnd().getArrTime(), route.getDriver(), route.getVehicle()); costs+=c; System.out.format(leftAlgin, routeNu, getVehicleString(route), route.getEnd().getName(), "-", Math.round(route.getEnd().getArrTime()), "undef", Math.round(costs)); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java index 9980b13e..8422a859 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java @@ -1,20 +1,18 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.algorithm.recreate; @@ -57,8 +55,8 @@ class AdditionalAccessEgressCalculator { Driver newDriver = insertionContext.getNewDriver(); double newVehicleDepartureTime = insertionContext.getNewDepTime(); if(!currentRoute.isEmpty()){ - double accessTransportCostNew = routingCosts.getTransportCost(newVehicle.getStartLocationId(), currentRoute.getActivities().get(0).getLocationId(), newVehicleDepartureTime, newDriver, newVehicle); - double accessTransportCostOld = routingCosts.getTransportCost(currentRoute.getStart().getLocationId(), currentRoute.getActivities().get(0).getLocationId(), currentRoute.getDepartureTime(), currentRoute.getDriver(), currentRoute.getVehicle()); + double accessTransportCostNew = routingCosts.getTransportCost(newVehicle.getStartLocation(), currentRoute.getActivities().get(0).getLocation(), newVehicleDepartureTime, newDriver, newVehicle); + double accessTransportCostOld = routingCosts.getTransportCost(currentRoute.getStart().getLocation(), currentRoute.getActivities().get(0).getLocation(), currentRoute.getDepartureTime(), currentRoute.getDriver(), currentRoute.getVehicle()); delta_access = accessTransportCostNew - accessTransportCostOld; @@ -66,8 +64,8 @@ class AdditionalAccessEgressCalculator { TourActivity lastActivityBeforeEndOfRoute = currentRoute.getActivities().get(currentRoute.getActivities().size()-1); double lastActivityEndTimeWithOldVehicleAndDepartureTime = lastActivityBeforeEndOfRoute.getEndTime(); double lastActivityEndTimeEstimationWithNewVehicleAndNewDepartureTime = Math.max(0.0, lastActivityEndTimeWithOldVehicleAndDepartureTime + (newVehicleDepartureTime - currentRoute.getDepartureTime())); - double egressTransportCostNew = routingCosts.getTransportCost(lastActivityBeforeEndOfRoute.getLocationId(), newVehicle.getEndLocationId() , lastActivityEndTimeEstimationWithNewVehicleAndNewDepartureTime, newDriver, newVehicle); - double egressTransportCostOld = routingCosts.getTransportCost(lastActivityBeforeEndOfRoute.getLocationId(), currentRoute.getEnd().getLocationId(), lastActivityEndTimeWithOldVehicleAndDepartureTime, currentRoute.getDriver(), currentRoute.getVehicle()); + double egressTransportCostNew = routingCosts.getTransportCost(lastActivityBeforeEndOfRoute.getLocation(), newVehicle.getEndLocation() , lastActivityEndTimeEstimationWithNewVehicleAndNewDepartureTime, newDriver, newVehicle); + double egressTransportCostOld = routingCosts.getTransportCost(lastActivityBeforeEndOfRoute.getLocation(), currentRoute.getEnd().getLocation(), lastActivityEndTimeWithOldVehicleAndDepartureTime, currentRoute.getDriver(), currentRoute.getVehicle()); delta_egress = egressTransportCostNew - egressTransportCostOld; } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AuxilliaryCostCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AuxilliaryCostCalculator.java index 5a777506..b604e626 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AuxilliaryCostCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/AuxilliaryCostCalculator.java @@ -1,24 +1,21 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.algorithm.recreate; -import java.util.Iterator; -import java.util.List; - import jsprit.core.problem.cost.VehicleRoutingActivityCosts; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; @@ -26,6 +23,9 @@ import jsprit.core.problem.solution.route.activity.End; import jsprit.core.problem.solution.route.activity.TourActivity; import jsprit.core.problem.vehicle.Vehicle; +import java.util.Iterator; +import java.util.List; + final class AuxilliaryCostCalculator { @@ -65,8 +65,8 @@ final class AuxilliaryCostCalculator { return cost; } } - double transportCost = routingCosts.getTransportCost(prevAct.getLocationId(), act.getLocationId(), departureTimePrevAct, driver, vehicle); - double transportTime = routingCosts.getTransportTime(prevAct.getLocationId(), act.getLocationId(), departureTimePrevAct, driver, vehicle); + double transportCost = routingCosts.getTransportCost(prevAct.getLocation(), act.getLocation(), departureTimePrevAct, driver, vehicle); + double transportTime = routingCosts.getTransportTime(prevAct.getLocation(), act.getLocation(), departureTimePrevAct, driver, vehicle); cost += transportCost; double actStartTime = departureTimePrevAct + transportTime; departureTimePrevAct = Math.max(actStartTime, act.getTheoreticalEarliestOperationStartTime()) + act.getOperationTime(); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java index 883cbe00..0a8e61c0 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java @@ -51,8 +51,8 @@ class LocalActivityInsertionCostsCalculator implements ActivityInsertionCostsCal @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct) { - double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); double newAct_arrTime = depTimeAtPrevAct + tp_time_prevAct_newAct; double newAct_endTime = CalculationUtils.getActivityEndTime(newAct_arrTime, newAct); double act_costs_newAct = activityCosts.getActivityCost(newAct, newAct_arrTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); @@ -64,22 +64,22 @@ class LocalActivityInsertionCostsCalculator implements ActivityInsertionCostsCal } } - double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocationId(), nextAct.getLocationId(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_newAct_nextAct = routingCosts.getTransportTime(newAct.getLocationId(), nextAct.getLocationId(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_newAct_nextAct = routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double nextAct_arrTime = newAct_endTime + tp_time_newAct_nextAct; double act_costs_nextAct = activityCosts.getActivityCost(nextAct, nextAct_arrTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double totalCosts = tp_costs_prevAct_newAct + tp_costs_newAct_nextAct + act_costs_newAct + act_costs_nextAct; double oldCosts; if(iFacts.getRoute().isEmpty()){ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double arrTime_nextAct = routingCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTime_nextAct = routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); double actCost_nextAct = activityCosts.getActivityCost(nextAct, arrTime_nextAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); oldCosts = tp_costs_prevAct_nextAct + actCost_nextAct; } else{ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); - double arrTime_nextAct = routingCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double arrTime_nextAct = routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); double actCost_nextAct = activityCosts.getActivityCost(nextAct, arrTime_nextAct, iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); oldCosts = tp_costs_prevAct_nextAct + actCost_nextAct; } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java index b0feb01d..de04d1fe 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java @@ -17,6 +17,7 @@ package jsprit.core.algorithm.recreate; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.job.Job; import jsprit.core.problem.job.Service; @@ -144,12 +145,12 @@ public class RegretInsertion extends AbstractInsertionStrategy { private double scoreShipment(InsertionData best, Job job) { Shipment shipment = (Shipment)job; double maxDepotDistance_1 = Math.max( - getDistance(best.getSelectedVehicle().getStartLocationId(),shipment.getPickupLocationId()), - getDistance(best.getSelectedVehicle().getStartLocationId(),shipment.getDeliveryLocationId()) + getDistance(best.getSelectedVehicle().getStartLocation(),shipment.getPickupLocation()), + getDistance(best.getSelectedVehicle().getStartLocation(),shipment.getDeliveryLocation()) ); double maxDepotDistance_2 = Math.max( - getDistance(best.getSelectedVehicle().getEndLocationId(),shipment.getPickupLocationId()), - getDistance(best.getSelectedVehicle().getEndLocationId(),shipment.getDeliveryLocationId()) + getDistance(best.getSelectedVehicle().getEndLocation(),shipment.getPickupLocation()), + getDistance(best.getSelectedVehicle().getEndLocation(),shipment.getDeliveryLocation()) ); double maxDepotDistance = Math.max(maxDepotDistance_1,maxDepotDistance_2); double minTimeToOperate = Math.min(shipment.getPickupTimeWindow().getEnd()-shipment.getPickupTimeWindow().getStart(), @@ -159,15 +160,15 @@ public class RegretInsertion extends AbstractInsertionStrategy { private double scoreService(InsertionData best, Job job) { double maxDepotDistance = Math.max( - getDistance(best.getSelectedVehicle().getStartLocationId(), ((Service) job).getLocationId()), - getDistance(best.getSelectedVehicle().getEndLocationId(), ((Service) job).getLocationId()) + getDistance(best.getSelectedVehicle().getStartLocation(), ((Service) job).getLocation()), + getDistance(best.getSelectedVehicle().getEndLocation(), ((Service) job).getLocation()) ); return Math.max(tw_param * (((Service)job).getTimeWindow().getEnd() - ((Service)job).getTimeWindow().getStart()),minTimeWindowScore) + depotDistance_param * maxDepotDistance; } - private double getDistance(String loc1, String loc2) { + private double getDistance(Location loc1, Location loc2) { return vrp.getTransportCosts().getTransportCost(loc1,loc2,0.,null,null); } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index ca820174..2916d8cf 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -135,7 +135,7 @@ final class ServiceInsertionCalculator implements JobInsertionCostsCalculator{ loopBroken = true; break; } - double nextActArrTime = prevActStartTime + transportCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActStartTime, newDriver, newVehicle); + double nextActArrTime = prevActStartTime + transportCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevActStartTime, newDriver, newVehicle); prevActStartTime = CalculationUtils.getActivityEndTime(nextActArrTime, nextAct); prevAct = nextAct; actIndex++; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionOnRouteLevelCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionOnRouteLevelCalculator.java index b6943edb..53229181 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionOnRouteLevelCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionOnRouteLevelCalculator.java @@ -188,8 +188,8 @@ final class ServiceInsertionOnRouteLevelCalculator implements JobInsertionCostsC /** * calculate transport and activity costs with new vehicle (without inserting k) */ - double transportCost_prevAct_nextAct_newVehicle = transportCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), prevActDepTime_newVehicle, newDriver, newVehicle); - double transportTime_prevAct_nextAct_newVehicle = transportCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActDepTime_newVehicle, newDriver, newVehicle); + double transportCost_prevAct_nextAct_newVehicle = transportCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime_newVehicle, newDriver, newVehicle); + double transportTime_prevAct_nextAct_newVehicle = transportCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime_newVehicle, newDriver, newVehicle); double arrTime_nextAct_newVehicle = prevActDepTime_newVehicle + transportTime_prevAct_nextAct_newVehicle; double activityCost_nextAct = activityCosts.getActivityCost(nextAct, arrTime_nextAct_newVehicle, newDriver, newVehicle); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index 0d8f412a..2ebe4eb2 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -126,7 +126,7 @@ final class ShipmentInsertionCalculator implements JobInsertionCostsCalculator{ for(int i=0;i. - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.algorithm.recreate; @@ -36,8 +34,8 @@ public class VariableTransportCostCalculator implements SoftActivityConstraint{ @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct,TourActivity newAct, TourActivity nextAct, double depTimeAtPrevAct) { - double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); double newAct_arrTime = depTimeAtPrevAct + tp_time_prevAct_newAct; double newAct_endTime = CalculationUtils.getActivityEndTime(newAct_arrTime, newAct); @@ -49,16 +47,16 @@ public class VariableTransportCostCalculator implements SoftActivityConstraint{ } } - double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocationId(), nextAct.getLocationId(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double totalCosts = tp_costs_prevAct_newAct + tp_costs_newAct_nextAct; double oldCosts; if(iFacts.getRoute().isEmpty()){ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); oldCosts = tp_costs_prevAct_nextAct; } else{ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); oldCosts = tp_costs_prevAct_nextAct; } return totalCosts - oldCosts; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java index 6d535b1b..d0da5512 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java @@ -16,11 +16,11 @@ ******************************************************************************/ package jsprit.core.algorithm.ruin.distance; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.job.Job; import jsprit.core.problem.job.Service; import jsprit.core.problem.job.Shipment; -import jsprit.core.util.Coordinate; import jsprit.core.util.EuclideanDistanceCalculator; @@ -70,32 +70,30 @@ public class AvgServiceAndShipmentDistance implements JobDistance { } private double calcDist(Service i, Service j) { - return calcDist(i.getLocationId(),i.getCoord(),j.getLocationId(),j.getCoord()); + return calcDist(i.getLocation(),j.getLocation()); } private double calcDist(Service i, Shipment j) { - double c_ij1 = calcDist(i.getLocationId(),i.getCoord(),j.getPickupLocationId(),j.getPickupCoord()); - double c_ij2 = calcDist(i.getLocationId(),i.getCoord(),j.getDeliveryLocationId(),j.getDeliveryCoord()); + double c_ij1 = calcDist(i.getLocation(),j.getPickupLocation()); + double c_ij2 = calcDist(i.getLocation(),j.getDeliveryLocation()); return (c_ij1 + c_ij2)/2.0; } private double calcDist(Shipment i, Shipment j) { - double c_i1j1 = calcDist(i.getPickupLocationId(),i.getPickupCoord(),j.getPickupLocationId(),j.getPickupCoord()); - double c_i1j2 = calcDist(i.getPickupLocationId(),i.getPickupCoord(),j.getDeliveryLocationId(),j.getDeliveryCoord()); - double c_i2j1 = calcDist(i.getDeliveryLocationId(),i.getDeliveryCoord(),j.getPickupLocationId(),j.getPickupCoord()); - double c_i2j2 = calcDist(i.getDeliveryLocationId(),i.getDeliveryCoord(),j.getDeliveryLocationId(),j.getDeliveryCoord()); + double c_i1j1 = calcDist(i.getPickupLocation(),j.getPickupLocation()); + double c_i1j2 = calcDist(i.getPickupLocation(),j.getDeliveryLocation()); + double c_i2j1 = calcDist(i.getDeliveryLocation(),j.getPickupLocation()); + double c_i2j2 = calcDist(i.getDeliveryLocation(),j.getDeliveryLocation()); return (c_i1j1 + c_i1j2 + c_i2j1 + c_i2j2)/4.0; } - private double calcDist(String location_i, Coordinate coord_i, String location_j, Coordinate coord_j){ + private double calcDist(Location location_i, Location location_j){ try{ - double c_ij = costs.getTransportCost(location_i, location_j, 0.0, null, null); - return c_ij; - } + return costs.getTransportCost(location_i, location_j, 0.0, null, null); + } catch(IllegalStateException e){ // now try the euclidean distance between these two services } - double c_ij = EuclideanDistanceCalculator.calculateDistance(coord_i, coord_j); - return c_ij; + return EuclideanDistanceCalculator.calculateDistance(location_i.getCoordinate(), location_j.getCoordinate()); } } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceDistance.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceDistance.java index 69368713..f9aa529d 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceDistance.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/distance/AvgServiceDistance.java @@ -1,16 +1,16 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ @@ -66,7 +66,7 @@ public class AvgServiceDistance implements JobDistance { private double calcDist(Service s_i, Service s_j) { double distance; try{ - distance = costs.getTransportCost(s_i.getLocationId(), s_j.getLocationId(), 0.0, null, null); + distance = costs.getTransportCost(s_i.getLocation(), s_j.getLocation(), 0.0, null, null); return distance; } catch(IllegalStateException e){ diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdatePracticalTimeWindows.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdatePracticalTimeWindows.java index 4679fa41..e0240c9a 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdatePracticalTimeWindows.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdatePracticalTimeWindows.java @@ -1,20 +1,18 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.algorithm.state; @@ -56,7 +54,7 @@ class UpdatePracticalTimeWindows implements ReverseActivityVisitor, StateUpdater @Override public void visit(TourActivity activity) { - double potentialLatestArrivalTimeAtCurrAct = latestArrTimeAtPrevAct - transportCosts.getBackwardTransportTime(activity.getLocationId(), prevAct.getLocationId(), latestArrTimeAtPrevAct, route.getDriver(),route.getVehicle()) - activity.getOperationTime(); + double potentialLatestArrivalTimeAtCurrAct = latestArrTimeAtPrevAct - transportCosts.getBackwardTransportTime(activity.getLocation(), prevAct.getLocation(), latestArrTimeAtPrevAct, route.getDriver(),route.getVehicle()) - activity.getOperationTime(); double latestArrivalTime = Math.min(activity.getTheoreticalLatestOperationStartTime(), potentialLatestArrivalTimeAtCurrAct); states.putInternalTypedActivityState(activity, InternalStates.LATEST_OPERATION_START_TIME, latestArrivalTime); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVariableCosts.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVariableCosts.java index 4251053e..95b2c51e 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVariableCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVariableCosts.java @@ -88,7 +88,7 @@ public class UpdateVariableCosts implements ActivityVisitor,StateUpdater{ public void visit(TourActivity act) { timeTracker.visit(act); - double transportCost = this.transportCost.getTransportCost(prevAct.getLocationId(), act.getLocationId(), startTimeAtPrevAct, vehicleRoute.getDriver(), vehicleRoute.getVehicle()); + double transportCost = this.transportCost.getTransportCost(prevAct.getLocation(), act.getLocation(), startTimeAtPrevAct, vehicleRoute.getDriver(), vehicleRoute.getVehicle()); double actCost = activityCost.getActivityCost(act, timeTracker.getActArrTime(), vehicleRoute.getDriver(), vehicleRoute.getVehicle()); totalOperationCost += transportCost; @@ -103,7 +103,7 @@ public class UpdateVariableCosts implements ActivityVisitor,StateUpdater{ @Override public void finish() { timeTracker.finish(); - double transportCost = this.transportCost.getTransportCost(prevAct.getLocationId(), vehicleRoute.getEnd().getLocationId(), startTimeAtPrevAct, vehicleRoute.getDriver(), vehicleRoute.getVehicle()); + double transportCost = this.transportCost.getTransportCost(prevAct.getLocation(), vehicleRoute.getEnd().getLocation(), startTimeAtPrevAct, vehicleRoute.getDriver(), vehicleRoute.getVehicle()); double actCost = activityCost.getActivityCost(vehicleRoute.getEnd(), timeTracker.getActEndTime(), vehicleRoute.getDriver(), vehicleRoute.getVehicle()); totalOperationCost += transportCost; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java index 614301ab..7f0afa73 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java @@ -1,5 +1,23 @@ +/******************************************************************************* + * Copyright (C) 2014 Stefan Schroeder + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + ******************************************************************************/ + package jsprit.core.algorithm.state; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.solution.route.VehicleRoute; import jsprit.core.problem.solution.route.activity.ReverseActivityVisitor; @@ -34,7 +52,7 @@ public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivi private double[] latest_arrTimes_at_prevAct; - private String[] location_of_prevAct; + private Location[] location_of_prevAct; private Collection vehicles; @@ -43,7 +61,7 @@ public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivi this.stateManager = stateManager; this.transportCosts = tpCosts; latest_arrTimes_at_prevAct = new double[stateManager.getMaxIndexOfVehicleTypeIdentifiers() + 1]; - location_of_prevAct = new String[stateManager.getMaxIndexOfVehicleTypeIdentifiers() + 1]; + location_of_prevAct = new Location[stateManager.getMaxIndexOfVehicleTypeIdentifiers() + 1]; } public void setVehiclesToUpdate(VehiclesToUpdate vehiclesToUpdate){ @@ -56,7 +74,7 @@ public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivi vehicles = vehiclesToUpdate.get(route); for(Vehicle vehicle : vehicles){ latest_arrTimes_at_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = vehicle.getLatestArrival(); - location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = vehicle.getEndLocationId(); + location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = vehicle.getEndLocation(); } } @@ -64,13 +82,13 @@ public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivi public void visit(TourActivity activity) { for(Vehicle vehicle : vehicles){ double latestArrTimeAtPrevAct = latest_arrTimes_at_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()]; - String prevLocation = location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()]; - double potentialLatestArrivalTimeAtCurrAct = latestArrTimeAtPrevAct - transportCosts.getBackwardTransportTime(activity.getLocationId(), prevLocation, + Location prevLocation = location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()]; + double potentialLatestArrivalTimeAtCurrAct = latestArrTimeAtPrevAct - transportCosts.getBackwardTransportTime(activity.getLocation(), prevLocation, latestArrTimeAtPrevAct, route.getDriver(), vehicle) - activity.getOperationTime(); double latestArrivalTime = Math.min(activity.getTheoreticalLatestOperationStartTime(), potentialLatestArrivalTimeAtCurrAct); stateManager.putInternalTypedActivityState(activity, vehicle, InternalStates.LATEST_OPERATION_START_TIME, latestArrivalTime); latest_arrTimes_at_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = latestArrivalTime; - location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = activity.getLocationId(); + location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = activity.getLocation(); } } diff --git a/jsprit-core/src/main/java/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/jsprit/core/analysis/SolutionAnalyser.java index e33faad2..4754e340 100644 --- a/jsprit-core/src/main/java/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/jsprit/core/analysis/SolutionAnalyser.java @@ -20,6 +20,7 @@ package jsprit.core.analysis; import jsprit.core.algorithm.VariablePlusFixedSolutionCostCalculatorFactory; import jsprit.core.algorithm.state.*; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.solution.SolutionCostCalculator; @@ -27,7 +28,6 @@ import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.problem.solution.route.VehicleRoute; import jsprit.core.problem.solution.route.activity.*; import jsprit.core.util.ActivityTimeTracker; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -54,7 +54,7 @@ public class SolutionAnalyser { public static interface DistanceCalculator { - public double getDistance(String fromLocationId, String toLocationId); + public double getDistance(Location from, Location to); } @@ -337,7 +337,7 @@ public class SolutionAnalyser { } private double transportCost(TourActivity activity) { - return transportCost.getTransportCost(prevAct.getLocationId(), activity.getLocationId(), prevActDeparture, route.getDriver(), route.getVehicle()); + return transportCost.getTransportCost(prevAct.getLocation(), activity.getLocation(), prevActDeparture, route.getDriver(), route.getVehicle()); } private double transportTime(TourActivity activity) { @@ -345,7 +345,7 @@ public class SolutionAnalyser { } private double distance(TourActivity activity) { - return distanceCalculator.getDistance(prevAct.getLocationId(),activity.getLocationId()); + return distanceCalculator.getDistance(prevAct.getLocation(),activity.getLocation()); } @Override @@ -386,7 +386,7 @@ public class SolutionAnalyser { @Override public void visit(TourActivity activity) { - double distance = distanceCalculator.getDistance(prevAct.getLocationId(),activity.getLocationId()); + double distance = distanceCalculator.getDistance(prevAct.getLocation(),activity.getLocation()); sum_distance += distance; stateManager.putActivityState(activity,distance_id,sum_distance); prevAct = activity; @@ -394,7 +394,7 @@ public class SolutionAnalyser { @Override public void finish() { - double distance = distanceCalculator.getDistance(prevAct.getLocationId(), route.getEnd().getLocationId()); + double distance = distanceCalculator.getDistance(prevAct.getLocation(), route.getEnd().getLocation()); sum_distance += distance; stateManager.putRouteState(route,distance_id,sum_distance); } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/AdditionalTransportationCosts.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/AdditionalTransportationCosts.java index c2682317..40c7bd1d 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/AdditionalTransportationCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/AdditionalTransportationCosts.java @@ -1,20 +1,18 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.problem.constraint; @@ -55,8 +53,8 @@ class AdditionalTransportationCosts implements SoftActivityConstraint{ */ @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct,TourActivity newAct, TourActivity nextAct, double depTimeAtPrevAct) { - double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); double newAct_arrTime = depTimeAtPrevAct + tp_time_prevAct_newAct; double newAct_endTime = CalculationUtils.getActivityEndTime(newAct_arrTime, newAct); @@ -68,16 +66,16 @@ class AdditionalTransportationCosts implements SoftActivityConstraint{ } } - double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocationId(), nextAct.getLocationId(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double totalCosts = tp_costs_prevAct_newAct + tp_costs_newAct_nextAct; double oldCosts; if(iFacts.getRoute().isEmpty()){ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); oldCosts = tp_costs_prevAct_nextAct; } else{ - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocationId(), nextAct.getLocationId(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); oldCosts = tp_costs_prevAct_nextAct; } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java index cef76c2f..9be1d1f3 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java @@ -17,6 +17,7 @@ package jsprit.core.problem.constraint; import jsprit.core.algorithm.state.InternalStates; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.misc.JobInsertionContext; import jsprit.core.problem.solution.route.activity.End; @@ -46,18 +47,18 @@ import jsprit.core.util.CalculationUtils; public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { double latestVehicleArrival = iFacts.getNewVehicle().getLatestArrival(); Double latestArrTimeAtNextAct; - String nextActLocation; + Location nextActLocation; if(nextAct instanceof End) { latestArrTimeAtNextAct = latestVehicleArrival; - nextActLocation = iFacts.getNewVehicle().getEndLocationId(); + nextActLocation = iFacts.getNewVehicle().getEndLocation(); if(!iFacts.getNewVehicle().isReturnToDepot()){ - nextActLocation = newAct.getLocationId(); + nextActLocation = newAct.getLocation(); } } else{ latestArrTimeAtNextAct = states.getActivityState(nextAct, InternalStates.LATEST_OPERATION_START_TIME, Double.class); if(latestArrTimeAtNextAct==null) latestArrTimeAtNextAct=nextAct.getTheoreticalLatestOperationStartTime(); - nextActLocation = nextAct.getLocationId(); + nextActLocation = nextAct.getLocation(); } /* @@ -88,7 +89,7 @@ import jsprit.core.util.CalculationUtils; * |- earliest arrival of vehicle * |--- nextAct ---| */ - double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); if(arrTimeAtNextOnDirectRouteWithNewVehicle > nextAct.getTheoreticalLatestOperationStartTime()){ return ConstraintsStatus.NOT_FULFILLED_BREAK; } @@ -101,11 +102,11 @@ import jsprit.core.util.CalculationUtils; } // log.info("check insertion of " + newAct + " between " + prevAct + " and " + nextAct + ". prevActDepTime=" + prevActDepTime); // double latestArrTimeAtNextAct = states.getActivityState(nextAct, StateFactory.LATEST_OPERATION_START_TIME, Double.class); - double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double latestArrTimeAtNewAct = Math.min(newAct.getTheoreticalLatestOperationStartTime(),latestArrTimeAtNextAct - - routingCosts.getBackwardTransportTime(nextActLocation, newAct.getLocationId(), latestArrTimeAtNextAct, iFacts.getNewDriver(), + routingCosts.getBackwardTransportTime(nextActLocation, newAct.getLocation(), latestArrTimeAtNextAct, iFacts.getNewDriver(), iFacts.getNewVehicle()) - newAct.getOperationTime()); /* * |--- prevAct ---| @@ -123,7 +124,7 @@ import jsprit.core.util.CalculationUtils; } // log.info(newAct + " arrTime=" + arrTimeAtNewAct); double endTimeAtNewAct = CalculationUtils.getActivityEndTime(arrTimeAtNewAct, newAct); - double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newAct.getLocationId(), nextAct.getLocationId(), endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); /* * |--- newAct ---| diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java index 6be0a39d..2a3251d1 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java @@ -18,6 +18,7 @@ package jsprit.core.problem.constraint; import jsprit.core.algorithm.state.InternalStates; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.misc.JobInsertionContext; import jsprit.core.problem.solution.route.activity.End; @@ -48,12 +49,12 @@ public class VehicleDependentTimeWindowConstraints implements HardActivityConstr public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { double latestVehicleArrival = iFacts.getNewVehicle().getLatestArrival(); Double latestArrTimeAtNextAct; - String nextActLocation; + Location nextActLocation; if(nextAct instanceof End) { latestArrTimeAtNextAct = latestVehicleArrival; - nextActLocation = iFacts.getNewVehicle().getEndLocationId(); + nextActLocation = iFacts.getNewVehicle().getEndLocation(); if(!iFacts.getNewVehicle().isReturnToDepot()){ - nextActLocation = newAct.getLocationId(); + nextActLocation = newAct.getLocation(); } } else{ @@ -63,7 +64,7 @@ public class VehicleDependentTimeWindowConstraints implements HardActivityConstr // latestArrTimeAtNextAct = states.getActivityState(nextAct, iFacts.getRoute().getVehicle(), StateFactory.LATEST_OPERATION_START_TIME ,Double.class); if(latestArrTimeAtNextAct == null) //otherwise set it to theoretical_latest_operation_startTime latestArrTimeAtNextAct=nextAct.getTheoreticalLatestOperationStartTime(); - nextActLocation = nextAct.getLocationId(); + nextActLocation = nextAct.getLocation(); } /* @@ -94,7 +95,7 @@ public class VehicleDependentTimeWindowConstraints implements HardActivityConstr * |- earliest arrival of vehicle * |--- nextAct ---| */ - double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), nextActLocation, prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), nextActLocation, prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); if(arrTimeAtNextOnDirectRouteWithNewVehicle > latestArrTimeAtNextAct){ return ConstraintsStatus.NOT_FULFILLED_BREAK; } @@ -106,9 +107,9 @@ public class VehicleDependentTimeWindowConstraints implements HardActivityConstr return ConstraintsStatus.NOT_FULFILLED; } // log.info("check insertion of " + newAct + " between " + prevAct + " and " + nextAct + ". prevActDepTime=" + prevActDepTime); - double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double endTimeAtNewAct = CalculationUtils.getActivityEndTime(arrTimeAtNewAct, newAct); - double latestArrTimeAtNewAct = Math.min(newAct.getTheoreticalLatestOperationStartTime(),latestArrTimeAtNextAct - routingCosts.getBackwardTransportTime(newAct.getLocationId(),nextActLocation, + double latestArrTimeAtNewAct = Math.min(newAct.getTheoreticalLatestOperationStartTime(),latestArrTimeAtNextAct - routingCosts.getBackwardTransportTime(newAct.getLocation(),nextActLocation, latestArrTimeAtNextAct,iFacts.getNewDriver(),iFacts.getNewVehicle())); /* @@ -127,7 +128,7 @@ public class VehicleDependentTimeWindowConstraints implements HardActivityConstr } // log.info(newAct + " arrTime=" + arrTimeAtNewAct); - double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newAct.getLocationId(), nextActLocation, endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newAct.getLocation(), nextActLocation, endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); /* * |--- newAct ---| diff --git a/jsprit-core/src/main/java/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java b/jsprit-core/src/main/java/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java index 212521a7..e96725f1 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java @@ -1,42 +1,41 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.problem.cost; +import jsprit.core.problem.Location; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; public abstract class AbstractForwardVehicleRoutingTransportCosts implements VehicleRoutingTransportCosts{ @Override - public abstract double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle); + public abstract double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle); @Override - public abstract double getTransportCost(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle); + public abstract double getTransportCost(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle); @Override - public double getBackwardTransportTime(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportTime(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportTime(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportTime(from, to, arrivalTime, driver, vehicle); } @Override - public double getBackwardTransportCost(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportCost(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, arrivalTime, driver, vehicle); } } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportCost.java b/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportCost.java index c9fbe8aa..80549d3e 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportCost.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportCost.java @@ -1,27 +1,27 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.problem.cost; +import jsprit.core.problem.Location; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; public interface BackwardTransportCost { - public double getBackwardTransportCost(String fromId, String toId, - double arrivalTime, Driver driver, Vehicle vehicle); + public double getBackwardTransportCost(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle); } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportTime.java b/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportTime.java index d5b81ffc..888b04ae 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportTime.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/cost/BackwardTransportTime.java @@ -1,27 +1,27 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.problem.cost; +import jsprit.core.problem.Location; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; public interface BackwardTransportTime { - public double getBackwardTransportTime(String fromId, String toId, - double arrivalTime, Driver driver, Vehicle vehicle); + public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle); } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportCost.java b/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportCost.java index 9bc1b9e3..f2bad16f 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportCost.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportCost.java @@ -1,27 +1,27 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.problem.cost; +import jsprit.core.problem.Location; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; public interface ForwardTransportCost { - public double getTransportCost(String fromId, String toId, - double departureTime, Driver driver, Vehicle vehicle); + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle); } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportTime.java b/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportTime.java index 01c02cb1..1d79c594 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportTime.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/cost/ForwardTransportTime.java @@ -1,27 +1,27 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.problem.cost; +import jsprit.core.problem.Location; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; public interface ForwardTransportTime { - public double getTransportTime(String fromId, String toId, - double departureTime, Driver driver, Vehicle vehicle); + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle); } diff --git a/jsprit-core/src/main/java/jsprit/core/reporting/SolutionPrinter.java b/jsprit-core/src/main/java/jsprit/core/reporting/SolutionPrinter.java index fa1d7983..d3960b26 100644 --- a/jsprit-core/src/main/java/jsprit/core/reporting/SolutionPrinter.java +++ b/jsprit-core/src/main/java/jsprit/core/reporting/SolutionPrinter.java @@ -117,13 +117,13 @@ public class SolutionPrinter { String jobId; if(act instanceof JobActivity) jobId = ((JobActivity)act).getJob().getId(); else jobId = "-"; - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocationId(), act.getLocationId(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); + double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), act.getLocation(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); c+= problem.getActivityCosts().getActivityCost(act, act.getArrTime(), route.getDriver(), route.getVehicle()); costs+=c; System.out.format(leftAlgin, routeNu, getVehicleString(route), act.getName(), jobId, Math.round(act.getArrTime()), Math.round(act.getEndTime()),Math.round(costs)); prevAct=act; } - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocationId(), route.getEnd().getLocationId(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); + double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), route.getEnd().getLocation(), prevAct.getEndTime(), route.getDriver(), route.getVehicle()); c+= problem.getActivityCosts().getActivityCost(route.getEnd(), route.getEnd().getArrTime(), route.getDriver(), route.getVehicle()); costs+=c; System.out.format(leftAlgin, routeNu, getVehicleString(route), route.getEnd().getName(), "-", Math.round(route.getEnd().getArrTime()), "undef", Math.round(costs)); diff --git a/jsprit-core/src/main/java/jsprit/core/util/ActivityTimeTracker.java b/jsprit-core/src/main/java/jsprit/core/util/ActivityTimeTracker.java index 39934a09..fe4f819b 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/ActivityTimeTracker.java +++ b/jsprit-core/src/main/java/jsprit/core/util/ActivityTimeTracker.java @@ -76,7 +76,7 @@ public class ActivityTimeTracker implements ActivityVisitor{ @Override public void visit(TourActivity activity) { if(!beginFirst) throw new IllegalStateException("never called begin. this however is essential here"); - double transportTime = this.transportTime.getTransportTime(prevAct.getLocationId(), activity.getLocationId(), startAtPrevAct, route.getDriver(), route.getVehicle()); + double transportTime = this.transportTime.getTransportTime(prevAct.getLocation(), activity.getLocation(), startAtPrevAct, route.getDriver(), route.getVehicle()); double arrivalTimeAtCurrAct = startAtPrevAct + transportTime; actArrTime = arrivalTimeAtCurrAct; @@ -101,7 +101,7 @@ public class ActivityTimeTracker implements ActivityVisitor{ @Override public void finish() { - double transportTime = this.transportTime.getTransportTime(prevAct.getLocationId(), route.getEnd().getLocationId(), startAtPrevAct, route.getDriver(), route.getVehicle()); + double transportTime = this.transportTime.getTransportTime(prevAct.getLocation(), route.getEnd().getLocation(), startAtPrevAct, route.getDriver(), route.getVehicle()); double arrivalTimeAtCurrAct = startAtPrevAct + transportTime; actArrTime = arrivalTimeAtCurrAct; diff --git a/jsprit-core/src/main/java/jsprit/core/util/CrowFlyCosts.java b/jsprit-core/src/main/java/jsprit/core/util/CrowFlyCosts.java index 074a4095..6f3dfaac 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/CrowFlyCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/util/CrowFlyCosts.java @@ -19,6 +19,7 @@ */ package jsprit.core.util; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; @@ -48,10 +49,10 @@ public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts { } @Override - public double getTransportCost(String fromId, String toId, double time, Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double time, Driver driver, Vehicle vehicle) { double distance; try { - distance = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId)) * detourFactor; + distance = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())) * detourFactor; } catch (NullPointerException e) { throw new NullPointerException("cannot calculate euclidean distance. coordinates are missing. either add coordinates or use another transport-cost-calculator."); } @@ -65,10 +66,10 @@ public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts { } @Override - public double getTransportTime(String fromId, String toId, double time, Driver driver, Vehicle vehicle) { + public double getTransportTime(Location from, Location to, double time, Driver driver, Vehicle vehicle) { double distance; try { - distance = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId)) * detourFactor; + distance = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())) * detourFactor; } catch (NullPointerException e) { throw new NullPointerException("cannot calculate euclidean distance. coordinates are missing. either add coordinates or use another transport-cost-calculator."); } diff --git a/jsprit-core/src/main/java/jsprit/core/util/GreatCircleCosts.java b/jsprit-core/src/main/java/jsprit/core/util/GreatCircleCosts.java index 5f45bb92..63f01291 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/GreatCircleCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/util/GreatCircleCosts.java @@ -18,6 +18,7 @@ package jsprit.core.util; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; @@ -66,10 +67,10 @@ public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCost } @Override - public double getTransportCost(String fromId, String toId, double time,Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double time,Driver driver, Vehicle vehicle) { double distance; try { - distance = getDistance(fromId, toId); + distance = getDistance(from.getId(), to.getId()); } catch (NullPointerException e) { throw new NullPointerException("cannot calculate euclidean distance. coordinates are missing. either add coordinates or use another transport-cost-calculator."); } @@ -83,8 +84,8 @@ public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCost } @Override - public double getTransportTime(String fromId, String toId, double time, Driver driver, Vehicle vehicle) { - return getDistance(fromId, toId) / speed; + public double getTransportTime(Location from, Location to, double time, Driver driver, Vehicle vehicle) { + return getDistance(from.getId(), to.getId()) / speed; } public double getDistance(String fromId, String toId) { diff --git a/jsprit-core/src/main/java/jsprit/core/util/ManhattanCosts.java b/jsprit-core/src/main/java/jsprit/core/util/ManhattanCosts.java index 4af99018..1482416c 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/ManhattanCosts.java +++ b/jsprit-core/src/main/java/jsprit/core/util/ManhattanCosts.java @@ -18,6 +18,7 @@ package jsprit.core.util; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; @@ -40,10 +41,10 @@ public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts } @Override - public double getTransportCost(String fromId, String toId, double time,Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double time,Driver driver, Vehicle vehicle) { double distance; try { - distance = calculateDistance(fromId, toId); + distance = calculateDistance(from.getId(), to.getId()); } catch (NullPointerException e) { throw new NullPointerException("cannot calculate euclidean distance. coordinates are missing. either add coordinates or use another transport-cost-calculator."); } @@ -57,8 +58,8 @@ public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts } @Override - public double getTransportTime(String fromId, String toId, double time,Driver driver, Vehicle vehicle) { - return calculateDistance(fromId, toId) / speed; + public double getTransportTime(Location from, Location to, double time,Driver driver, Vehicle vehicle) { + return calculateDistance(from.getId(), to.getId()) / speed; } private double calculateDistance(String fromId, String toId) { diff --git a/jsprit-core/src/main/java/jsprit/core/util/RouteUtils.java b/jsprit-core/src/main/java/jsprit/core/util/RouteUtils.java index 6407f63b..575d163d 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/RouteUtils.java +++ b/jsprit-core/src/main/java/jsprit/core/util/RouteUtils.java @@ -1,25 +1,21 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.util; -import java.util.Collection; - import jsprit.core.algorithm.state.UpdateActivityTimes; import jsprit.core.problem.cost.TransportTime; import jsprit.core.problem.driver.DriverImpl; @@ -29,6 +25,8 @@ import jsprit.core.problem.solution.route.RouteActivityVisitor; import jsprit.core.problem.solution.route.VehicleRoute; import jsprit.core.problem.solution.route.activity.TourActivity; +import java.util.Collection; + public class RouteUtils { /** @@ -60,11 +58,11 @@ public class RouteUtils { TourActivity lastact = r.getStart(); double lastActDepTime = r.getDepartureTime(); for(TourActivity act : r.getActivities()){ - tpTime += transportTimes.getTransportTime(lastact.getLocationId(), act.getLocationId(), lastActDepTime, DriverImpl.noDriver(), r.getVehicle()); + tpTime += transportTimes.getTransportTime(lastact.getLocation(), act.getLocation(), lastActDepTime, DriverImpl.noDriver(), r.getVehicle()); lastact=act; lastActDepTime=act.getEndTime(); } - tpTime+=transportTimes.getTransportTime(lastact.getLocationId(), r.getEnd().getLocationId(), lastActDepTime, DriverImpl.noDriver(), r.getVehicle()); + tpTime+=transportTimes.getTransportTime(lastact.getLocation(), r.getEnd().getLocation(), lastActDepTime, DriverImpl.noDriver(), r.getVehicle()); } return tpTime; } diff --git a/jsprit-core/src/main/java/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java index 43d531a9..c94e50cb 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java +++ b/jsprit-core/src/main/java/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java @@ -1,21 +1,22 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.util; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; @@ -198,8 +199,8 @@ public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRo @Override - public double getTransportTime(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - return getTime(fromId, toId); + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + return getTime(from.getId(), to.getId()); } @@ -248,10 +249,10 @@ public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRo } @Override - public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - if(vehicle == null) return getDistance(fromId, toId); + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + if(vehicle == null) return getDistance(from.getId(), to.getId()); VehicleCostParams costParams = vehicle.getType().getVehicleCostParams(); - return costParams.perDistanceUnit*getDistance(fromId, toId) + costParams.perTimeUnit*getTime(fromId, toId); + return costParams.perDistanceUnit*getDistance(from.getId(), to.getId()) + costParams.perTimeUnit*getTime(from.getId(), to.getId()); } } diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java index eda30af9..7bb05287 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java @@ -18,6 +18,7 @@ package jsprit.core.algorithm; import jsprit.core.algorithm.box.SchrimpfFactory; import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; @@ -116,25 +117,25 @@ public class RefuseCollection_IT { } @Override - public double getTransportTime(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, departureTime, driver, vehicle); + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, departureTime, driver, vehicle); } @Override - public double getBackwardTransportTime(String fromId, String toId, double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, arrivalTime, driver, vehicle); } @Override - public double getTransportCost(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { - if(fromId.equals(toId)) return 0.0; - RelationKey key = RelationKey.newKey(fromId, toId); + public double getTransportCost(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { + if(from.equals(to)) return 0.0; + RelationKey key = RelationKey.newKey(from.getId(), to.getId()); return distances.get(key); } @Override - public double getBackwardTransportCost(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportCost(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, arrivalTime, driver, vehicle); } } diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/CalcWithTimeSchedulingTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/CalcWithTimeSchedulingTest.java index 7984ebf3..df88bb59 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/CalcWithTimeSchedulingTest.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/CalcWithTimeSchedulingTest.java @@ -1,27 +1,24 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.algorithm.recreate; -import static org.junit.Assert.assertEquals; - -import java.util.Collection; - import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.io.VehicleRoutingAlgorithms; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; @@ -36,6 +33,10 @@ import jsprit.core.util.Coordinate; import jsprit.core.util.CrowFlyCosts; import jsprit.core.util.Solutions; +import java.util.Collection; + +import static org.junit.Assert.assertEquals; + public class CalcWithTimeSchedulingTest { @@ -65,26 +66,26 @@ public class CalcWithTimeSchedulingTest { return new VehicleRoutingTransportCosts() { @Override - public double getBackwardTransportCost(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportCost(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, arrivalTime, driver, vehicle); } @Override - public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { if(departureTime < 50){ - return baseCosts.getTransportCost(fromId, toId, departureTime, driver, vehicle)*2.0; + return baseCosts.getTransportCost(from, to, departureTime, driver, vehicle)*2.0; } - return baseCosts.getTransportCost(fromId, toId, departureTime, driver, vehicle); + return baseCosts.getTransportCost(from, to, departureTime, driver, vehicle); } @Override - public double getBackwardTransportTime(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return getTransportTime(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportTime(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return getTransportTime(from, to, arrivalTime, driver, vehicle); } @Override - public double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, departureTime, driver, vehicle); + public double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, departureTime, driver, vehicle); } }; } diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/RegretInsertionTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/RegretInsertionTest.java index e45393df..dd0f19c1 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/RegretInsertionTest.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/RegretInsertionTest.java @@ -18,6 +18,7 @@ package jsprit.core.algorithm.recreate; import jsprit.core.algorithm.recreate.listener.BeforeJobInsertionListener; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.job.Job; @@ -169,7 +170,7 @@ public class RegretInsertionTest { Vehicle vehicle = vrp.getVehicles().iterator().next(); InsertionData iData = null; if(currentRoute.isEmpty()){ - double mc = getCost(service.getLocationId(), vehicle.getStartLocationId()); + double mc = getCost(service.getLocation(), vehicle.getStartLocation()); iData = new InsertionData(2*mc,-1,0,vehicle,newDriver); } else { @@ -197,13 +198,13 @@ public class RegretInsertionTest { } private double getMarginalCost(Service service, TourActivity prevAct, TourActivity act) { - double prev_new = getCost(prevAct.getLocationId(),service.getLocationId()); - double new_act = getCost(service.getLocationId(),act.getLocationId()); - double prev_act = getCost(prevAct.getLocationId(),act.getLocationId()); + double prev_new = getCost(prevAct.getLocation(),service.getLocation()); + double new_act = getCost(service.getLocation(),act.getLocation()); + double prev_act = getCost(prevAct.getLocation(),act.getLocation()); return prev_new + new_act - prev_act; } - private double getCost(String loc1, String loc2) { + private double getCost(Location loc1, Location loc2) { return vrp.getTransportCosts().getTransportCost(loc1,loc2,0.,null,null); } }; diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestAuxilliaryCostCalculator.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestAuxilliaryCostCalculator.java index 69104187..01716a32 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestAuxilliaryCostCalculator.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestAuxilliaryCostCalculator.java @@ -16,6 +16,7 @@ ******************************************************************************/ package jsprit.core.algorithm.recreate; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingActivityCosts; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.solution.route.activity.End; @@ -45,22 +46,26 @@ public class TestAuxilliaryCostCalculator { routingCosts = mock(VehicleRoutingTransportCosts.class); actCosts = mock(VehicleRoutingActivityCosts.class); - when(routingCosts.getTransportCost("i", "j", 0.0, null, vehicle)).thenReturn(2.0); - when(routingCosts.getTransportTime("i", "j", 0.0, null, vehicle)).thenReturn(0.0); - when(routingCosts.getTransportCost("i", "k", 0.0, null, vehicle)).thenReturn(3.0); - when(routingCosts.getTransportTime("i", "k", 0.0, null, vehicle)).thenReturn(0.0); - when(routingCosts.getTransportCost("k", "j", 0.0, null, vehicle)).thenReturn(3.0); - when(routingCosts.getTransportTime("k", "j", 0.0, null, vehicle)).thenReturn(0.0); + when(routingCosts.getTransportCost(loc("i"), loc("j"), 0.0, null, vehicle)).thenReturn(2.0); + when(routingCosts.getTransportTime(loc("i"), loc("j"), 0.0, null, vehicle)).thenReturn(0.0); + when(routingCosts.getTransportCost(loc("i"), loc("k"), 0.0, null, vehicle)).thenReturn(3.0); + when(routingCosts.getTransportTime(loc("i"), loc("k"), 0.0, null, vehicle)).thenReturn(0.0); + when(routingCosts.getTransportCost(loc("k"), loc("j"), 0.0, null, vehicle)).thenReturn(3.0); + when(routingCosts.getTransportTime(loc("k"), loc("j"), 0.0, null, vehicle)).thenReturn(0.0); } + + private Location loc(String i) { + return Location.Builder.newInstance().setId(i).build(); + } @Test public void whenRouteIsClosed_itCalculatesCostUpToEnd_v1(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); TourActivity nextAct = mock(TourActivity.class); - when(nextAct.getLocationId()).thenReturn("j"); + when(nextAct.getLocation()).thenReturn(loc("j")); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(true); @@ -72,10 +77,10 @@ public class TestAuxilliaryCostCalculator { @Test public void whenRouteIsClosed_itCalculatesCostUpToEnd_v2(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); End nextAct = new End("j", 0.0, 0.0); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(true); @@ -87,11 +92,11 @@ public class TestAuxilliaryCostCalculator { @Test public void whenRouteIsOpen_itCalculatesCostUpToEnd_v1(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); TourActivity nextAct = mock(TourActivity.class); - when(nextAct.getLocationId()).thenReturn("j"); + when(nextAct.getLocation()).thenReturn(loc("j")); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(false); @@ -103,10 +108,10 @@ public class TestAuxilliaryCostCalculator { @Test public void whenRouteIsOpen_itCalculatesCostUpToEnd_v2(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); End nextAct = End.newInstance("j", 0.0, 0.0); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(false); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java index 91fb6bc7..5ccad2bf 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java @@ -1,16 +1,16 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ @@ -19,6 +19,7 @@ package jsprit.core.algorithm.recreate; import jsprit.core.algorithm.state.StateManager; import jsprit.core.problem.AbstractActivity; import jsprit.core.problem.JobActivityFactory; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.constraint.ConstraintManager; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; @@ -98,13 +99,13 @@ public class TestCalculatesServiceInsertion { costs = new AbstractForwardVehicleRoutingTransportCosts() { @Override - public double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { - return ManhattanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId)); + public double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { + return ManhattanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); } @Override - public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - return vehicle.getType().getVehicleCostParams().perDistanceUnit*ManhattanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId)); + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + return vehicle.getType().getVehicleCostParams().perDistanceUnit*ManhattanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); } }; @@ -231,13 +232,13 @@ public class TestCalculatesServiceInsertion { AbstractForwardVehicleRoutingTransportCosts routingCosts = new AbstractForwardVehicleRoutingTransportCosts() { @Override - public double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { - return getTransportCost(fromId, toId, departureTime, driver, vehicle); + public double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { + return getTransportCost(from, to, departureTime, driver, vehicle); } @Override - public double getTransportCost(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { - return EuclideanDistanceCalculator.calculateDistance(coords.get(fromId), coords.get(toId)); + public double getTransportCost(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { + return EuclideanDistanceCalculator.calculateDistance(coords.get(from.getId()), coords.get(to.getId())); } }; Vehicle oldVehicle = VehicleImpl.Builder.newInstance("oldV").setStartLocationId("oldV").build(); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java index 2a721305..6f401921 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java @@ -1,16 +1,16 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ @@ -19,10 +19,7 @@ package jsprit.core.algorithm.recreate; import jsprit.core.algorithm.ExampleActivityCostFunction; import jsprit.core.algorithm.state.StateManager; import jsprit.core.algorithm.state.UpdateVariableCosts; -import jsprit.core.problem.AbstractActivity; -import jsprit.core.problem.AbstractVehicle; -import jsprit.core.problem.JobActivityFactory; -import jsprit.core.problem.VehicleRoutingProblem; +import jsprit.core.problem.*; import jsprit.core.problem.constraint.ConstraintManager; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; @@ -90,13 +87,13 @@ public class TestCalculatesServiceInsertionOnRouteLevel { VehicleRoutingTransportCosts routingCosts = CostFactory.createManhattanCosts(); @Override - public double getTransportTime(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - double tpCosts = routingCosts.getTransportCost(fromId,toId,departureTime,driver,vehicle); + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + double tpCosts = routingCosts.getTransportCost(from, to,departureTime,driver,vehicle); if(vehicle.getId().equals("v1")) return tpCosts; return 2. * tpCosts; } diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java index c80bd611..92b02a7d 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java @@ -1,23 +1,22 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.algorithm.recreate; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingActivityCosts; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.misc.JobInsertionContext; @@ -59,25 +58,29 @@ public class TestLocalActivityInsertionCostsCalculator { when(jic.getNewVehicle()).thenReturn(vehicle); tpCosts = mock(VehicleRoutingTransportCosts.class); - when(tpCosts.getTransportCost("i", "j", 0.0, null, vehicle)).thenReturn(2.0); - when(tpCosts.getTransportTime("i", "j", 0.0, null, vehicle)).thenReturn(0.0); - when(tpCosts.getTransportCost("i", "k", 0.0, null, vehicle)).thenReturn(3.0); - when(tpCosts.getTransportTime("i", "k", 0.0, null, vehicle)).thenReturn(0.0); - when(tpCosts.getTransportCost("k", "j", 0.0, null, vehicle)).thenReturn(3.0); - when(tpCosts.getTransportTime("k", "j", 0.0, null, vehicle)).thenReturn(0.0); + when(tpCosts.getTransportCost(loc("i"), loc("j"), 0.0, null, vehicle)).thenReturn(2.0); + when(tpCosts.getTransportTime(loc("i"), loc("j"), 0.0, null, vehicle)).thenReturn(0.0); + when(tpCosts.getTransportCost(loc("i"), loc("k"), 0.0, null, vehicle)).thenReturn(3.0); + when(tpCosts.getTransportTime(loc("i"), loc("k"), 0.0, null, vehicle)).thenReturn(0.0); + when(tpCosts.getTransportCost(loc("k"), loc("j"), 0.0, null, vehicle)).thenReturn(3.0); + when(tpCosts.getTransportTime(loc("k"), loc("j"), 0.0, null, vehicle)).thenReturn(0.0); actCosts = mock(VehicleRoutingActivityCosts.class); calc = new LocalActivityInsertionCostsCalculator(tpCosts, actCosts); } - - @Test + + private Location loc(String i) { + return Location.Builder.newInstance().setId(i).build(); + } + + @Test public void whenInsertingActBetweenTwoRouteActs_itCalcsMarginalTpCosts(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); TourActivity nextAct = mock(TourActivity.class); - when(nextAct.getLocationId()).thenReturn("j"); + when(nextAct.getLocation()).thenReturn(loc("j")); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(true); @@ -88,10 +91,10 @@ public class TestLocalActivityInsertionCostsCalculator { @Test public void whenInsertingActBetweenLastActAndEnd_itCalcsMarginalTpCosts(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); End nextAct = End.newInstance("j", 0.0, 0.0); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(true); @@ -102,11 +105,11 @@ public class TestLocalActivityInsertionCostsCalculator { @Test public void whenInsertingActBetweenTwoRouteActsAndRouteIsOpen_itCalcsMarginalTpCosts(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); TourActivity nextAct = mock(TourActivity.class); - when(nextAct.getLocationId()).thenReturn("j"); + when(nextAct.getLocation()).thenReturn(loc("j")); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(false); @@ -117,10 +120,10 @@ public class TestLocalActivityInsertionCostsCalculator { @Test public void whenInsertingActBetweenLastActAndEndAndRouteIsOpen_itCalculatesTpCostsFromPrevToNewAct(){ TourActivity prevAct = mock(TourActivity.class); - when(prevAct.getLocationId()).thenReturn("i"); + when(prevAct.getLocation()).thenReturn(loc("i")); End nextAct = End.newInstance("j", 0.0, 0.0); TourActivity newAct = mock(TourActivity.class); - when(newAct.getLocationId()).thenReturn("k"); + when(newAct.getLocation()).thenReturn(loc("k")); when(vehicle.isReturnToDepot()).thenReturn(false); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java b/jsprit-core/src/test/java/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java index 54bb74fc..9c42e165 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java @@ -1,27 +1,26 @@ /******************************************************************************* - * Copyright (C) 2013 Stefan Schroeder - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . ******************************************************************************/ package jsprit.core.algorithm.ruin.distance; -import jsprit.core.algorithm.ruin.distance.AvgServiceDistance; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.job.Service; import jsprit.core.problem.vehicle.Vehicle; - import org.junit.Test; @@ -31,20 +30,20 @@ public class TestJobDistanceAvgCosts { VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { @Override - public double getBackwardTransportTime(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { + public double getBackwardTransportTime(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getBackwardTransportCost(String fromId, String toId, + public double getBackwardTransportCost(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { // TODO Auto-generated method stub return 0; } @Override - public double getTransportCost(String fromId, String toId, + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { @SuppressWarnings("unused") String vehicleId = vehicle.getId(); @@ -52,7 +51,7 @@ public class TestJobDistanceAvgCosts { } @Override - public double getTransportTime(String fromId, String toId, + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { // TODO Auto-generated method stub return 0; @@ -68,20 +67,20 @@ public class TestJobDistanceAvgCosts { VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { @Override - public double getBackwardTransportTime(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { + public double getBackwardTransportTime(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getBackwardTransportCost(String fromId, String toId, + public double getBackwardTransportCost(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { // TODO Auto-generated method stub return 0; } @Override - public double getTransportCost(String fromId, String toId, + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { @SuppressWarnings("unused") String vehicleId = vehicle.getId(); @@ -89,7 +88,7 @@ public class TestJobDistanceAvgCosts { } @Override - public double getTransportTime(String fromId, String toId, + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { // TODO Auto-generated method stub return 0; diff --git a/jsprit-core/src/test/java/jsprit/core/analysis/SolutionAnalyserTest.java b/jsprit-core/src/test/java/jsprit/core/analysis/SolutionAnalyserTest.java index fb76a0c5..2df94d87 100644 --- a/jsprit-core/src/test/java/jsprit/core/analysis/SolutionAnalyserTest.java +++ b/jsprit-core/src/test/java/jsprit/core/analysis/SolutionAnalyserTest.java @@ -19,6 +19,7 @@ package jsprit.core.analysis; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.job.Delivery; import jsprit.core.problem.job.Pickup; @@ -169,8 +170,8 @@ public class SolutionAnalyserTest { public void constructionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertTrue(true); @@ -180,8 +181,8 @@ public class SolutionAnalyserTest { public void loadAtBeginningOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -192,8 +193,8 @@ public class SolutionAnalyserTest { public void loadAtBeginningOfRoute2ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Iterator iterator = solution.getRoutes().iterator(); @@ -207,8 +208,8 @@ public class SolutionAnalyserTest { public void loadAtEnd_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -219,8 +220,8 @@ public class SolutionAnalyserTest { public void loadAtEnd_OfRoute2ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Iterator iterator = solution.getRoutes().iterator(); @@ -234,8 +235,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -246,8 +247,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -258,8 +259,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -270,8 +271,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -282,8 +283,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -294,8 +295,8 @@ public class SolutionAnalyserTest { public void loadAfterActivity_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -306,8 +307,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -318,8 +319,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -330,8 +331,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -342,8 +343,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -354,8 +355,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -366,8 +367,8 @@ public class SolutionAnalyserTest { public void loadBeforeActivity_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -378,8 +379,8 @@ public class SolutionAnalyserTest { public void maxLoad_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -390,8 +391,8 @@ public class SolutionAnalyserTest { public void pickupCount_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -402,8 +403,8 @@ public class SolutionAnalyserTest { public void pickupCountAtBeginning_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -415,8 +416,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -428,8 +429,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -440,8 +441,8 @@ public class SolutionAnalyserTest { public void pickupCount_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(6, analyser.getNumberOfPickups(), 0.01); @@ -451,8 +452,8 @@ public class SolutionAnalyserTest { public void pickupCountAtBeginning_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(0, analyser.getNumberOfPickupsAtBeginning(), 0.01); @@ -463,8 +464,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(4, analyser.getNumberOfPickups(), 0.01); @@ -475,8 +476,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(2, analyser.getNumberOfPickupsAtBeginning(), 0.01); @@ -486,8 +487,8 @@ public class SolutionAnalyserTest { public void pickupLoad_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -498,8 +499,8 @@ public class SolutionAnalyserTest { public void pickupLoadAtBeginning_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -511,8 +512,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -524,8 +525,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -536,8 +537,8 @@ public class SolutionAnalyserTest { public void pickupLoad_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(30, analyser.getLoadPickedUp().get(0), 0.01); @@ -547,8 +548,8 @@ public class SolutionAnalyserTest { public void pickupLoadAtBeginning_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(0, analyser.getLoadAtBeginning().get(0), 0.01); @@ -559,8 +560,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(50, analyser.getLoadPickedUp().get(0), 0.01); @@ -571,8 +572,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(40, analyser.getLoadAtBeginning().get(0), 0.01); @@ -582,8 +583,8 @@ public class SolutionAnalyserTest { public void deliveryCount_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -594,8 +595,8 @@ public class SolutionAnalyserTest { public void deliveryCountAtEnd_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -607,8 +608,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -620,8 +621,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -632,8 +633,8 @@ public class SolutionAnalyserTest { public void deliveryCount_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(2, analyser.getNumberOfDeliveries(), 0.01); @@ -643,8 +644,8 @@ public class SolutionAnalyserTest { public void deliveryCountAtEnd_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(4, analyser.getNumberOfDeliveriesAtEnd(), 0.01); @@ -655,8 +656,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(4, analyser.getNumberOfDeliveries(), 0.01); @@ -667,8 +668,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(), 0.01); @@ -678,8 +679,8 @@ public class SolutionAnalyserTest { public void deliveryLoad_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -690,8 +691,8 @@ public class SolutionAnalyserTest { public void deliveryLoadAtEnd_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -703,8 +704,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -716,8 +717,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -728,8 +729,8 @@ public class SolutionAnalyserTest { public void deliveryLoad_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(20, analyser.getLoadDelivered().get(0), 0.01); @@ -739,8 +740,8 @@ public class SolutionAnalyserTest { public void deliveryLoadAtEnd_onSolutionShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Assert.assertEquals(10, analyser.getLoadAtEnd().get(0), 0.01); @@ -751,8 +752,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -764,8 +765,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -776,8 +777,8 @@ public class SolutionAnalyserTest { public void operationTime_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -788,8 +789,8 @@ public class SolutionAnalyserTest { public void waitingTime_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -800,8 +801,8 @@ public class SolutionAnalyserTest { public void transportTime_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -812,8 +813,8 @@ public class SolutionAnalyserTest { public void serviceTime_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -824,8 +825,8 @@ public class SolutionAnalyserTest { public void distance_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -836,8 +837,8 @@ public class SolutionAnalyserTest { public void waitingTime_atStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -848,8 +849,8 @@ public class SolutionAnalyserTest { public void waitingTime_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -860,8 +861,8 @@ public class SolutionAnalyserTest { public void waitingTime_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -872,8 +873,8 @@ public class SolutionAnalyserTest { public void waitingTime_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -884,8 +885,8 @@ public class SolutionAnalyserTest { public void waitingTime_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -896,8 +897,8 @@ public class SolutionAnalyserTest { public void waitingTime_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -908,8 +909,8 @@ public class SolutionAnalyserTest { public void distance_atStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -920,8 +921,8 @@ public class SolutionAnalyserTest { public void distance_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -932,8 +933,8 @@ public class SolutionAnalyserTest { public void distance_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -944,8 +945,8 @@ public class SolutionAnalyserTest { public void distance_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -956,8 +957,8 @@ public class SolutionAnalyserTest { public void distance_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -968,8 +969,8 @@ public class SolutionAnalyserTest { public void distance_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -981,8 +982,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_atStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -993,8 +994,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1005,8 +1006,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1017,8 +1018,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1029,8 +1030,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1041,8 +1042,8 @@ public class SolutionAnalyserTest { public void lateArrivalTimes_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1053,8 +1054,8 @@ public class SolutionAnalyserTest { public void lateArrTimes_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1065,8 +1066,8 @@ public class SolutionAnalyserTest { public void variableTransportCosts_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1077,8 +1078,8 @@ public class SolutionAnalyserTest { public void fixedCosts_OfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1089,8 +1090,8 @@ public class SolutionAnalyserTest { public void transportCosts_atStartActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1101,8 +1102,8 @@ public class SolutionAnalyserTest { public void transportCosts_ofAct1ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1113,8 +1114,8 @@ public class SolutionAnalyserTest { public void transportCosts_ofAct2ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1125,8 +1126,8 @@ public class SolutionAnalyserTest { public void transportCosts_ofAct3ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1137,8 +1138,8 @@ public class SolutionAnalyserTest { public void transportCosts_ofAct4ofRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1149,8 +1150,8 @@ public class SolutionAnalyserTest { public void transportCosts_ofEndActOfRoute1ShouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1161,8 +1162,8 @@ public class SolutionAnalyserTest { public void capacityViolationAtBeginning_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1176,8 +1177,8 @@ public class SolutionAnalyserTest { public void capacityViolationAtEnd_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1194,8 +1195,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1210,8 +1211,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1223,8 +1224,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterStart_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1243,8 +1244,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1260,8 +1261,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1276,8 +1277,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1292,8 +1293,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1308,8 +1309,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1324,8 +1325,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1340,8 +1341,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1356,8 +1357,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1372,8 +1373,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1388,8 +1389,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1404,8 +1405,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1417,8 +1418,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterAct1_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1433,8 +1434,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterAct2_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1449,8 +1450,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterAct3_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1465,8 +1466,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterAct4_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1481,8 +1482,8 @@ public class SolutionAnalyserTest { public void capacityViolationAfterEnd_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1497,8 +1498,8 @@ public class SolutionAnalyserTest { public void timeWindowViolation_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1513,8 +1514,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1529,8 +1530,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1545,8 +1546,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1561,8 +1562,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1577,8 +1578,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1593,8 +1594,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1609,8 +1610,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1625,8 +1626,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1641,8 +1642,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1657,8 +1658,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1673,8 +1674,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1689,8 +1690,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1705,8 +1706,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1722,8 +1723,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1738,8 +1739,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1754,8 +1755,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1770,8 +1771,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1786,8 +1787,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1802,8 +1803,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1818,8 +1819,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1834,8 +1835,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1850,8 +1851,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1866,8 +1867,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1882,8 +1883,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1898,8 +1899,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1914,8 +1915,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1930,8 +1931,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1946,8 +1947,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1962,8 +1963,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1978,8 +1979,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1994,8 +1995,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2010,8 +2011,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2026,8 +2027,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2046,8 +2047,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2067,8 +2068,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2088,8 +2089,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2109,8 +2110,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2130,8 +2131,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2151,8 +2152,8 @@ public class SolutionAnalyserTest { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2164,8 +2165,8 @@ public class SolutionAnalyserTest { public void skillViolationOnRoute_shouldWorkWhenViolated(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2177,8 +2178,8 @@ public class SolutionAnalyserTest { public void skillViolationAtStart_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2190,8 +2191,8 @@ public class SolutionAnalyserTest { public void skillViolationAtAct1_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2203,8 +2204,8 @@ public class SolutionAnalyserTest { public void skillViolationAtAct2_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2216,8 +2217,8 @@ public class SolutionAnalyserTest { public void skillViolationAtAct3_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2229,8 +2230,8 @@ public class SolutionAnalyserTest { public void skillViolationAtAct4_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2242,8 +2243,8 @@ public class SolutionAnalyserTest { public void skillViolationAtEnd_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -2257,8 +2258,8 @@ public class SolutionAnalyserTest { public void skillViolationOnRoute_shouldWorkWhenNotViolated(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); @@ -2273,8 +2274,8 @@ public class SolutionAnalyserTest { public void skillViolationOnSolution_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Boolean violated = analyser.hasSkillConstraintViolation(); @@ -2285,8 +2286,8 @@ public class SolutionAnalyserTest { public void backhaulViolationOnSolution_shouldWork(){ SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Boolean violated = analyser.hasBackhaulConstraintViolation(); @@ -2298,8 +2299,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Boolean violated = analyser.hasBackhaulConstraintViolation(); @@ -2311,8 +2312,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); Boolean violated = analyser.hasShipmentConstraintViolation(); @@ -2324,8 +2325,8 @@ public class SolutionAnalyserTest { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId, toLocationId, 0., null, null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null); } }); Boolean violated = analyser.hasSkillConstraintViolation(); diff --git a/jsprit-core/src/test/java/jsprit/core/problem/VehicleRoutingProblemTest.java b/jsprit-core/src/test/java/jsprit/core/problem/VehicleRoutingProblemTest.java index e48f6569..76162d30 100644 --- a/jsprit-core/src/test/java/jsprit/core/problem/VehicleRoutingProblemTest.java +++ b/jsprit-core/src/test/java/jsprit/core/problem/VehicleRoutingProblemTest.java @@ -262,21 +262,25 @@ public class VehicleRoutingProblemTest { builder.setRoutingCost(new AbstractForwardVehicleRoutingTransportCosts() { @Override - public double getTransportTime(String fromId, String toId, + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getTransportCost(String fromId, String toId, + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 4.0; } }); VehicleRoutingProblem problem = builder.build(); - assertEquals(4.0,problem.getTransportCosts().getTransportCost("", "", 0.0, null, null),0.01); + assertEquals(4.0,problem.getTransportCosts().getTransportCost(loc(""), loc(""), 0.0, null, null),0.01); } + + private Location loc(String i) { + return Location.Builder.newInstance().setId(i).build(); + } @Test public void whenAddingAVehicle_getAddedVehicleTypesShouldReturnItsType(){ diff --git a/jsprit-core/src/test/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java b/jsprit-core/src/test/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java index ba6b2bd7..603d10c1 100644 --- a/jsprit-core/src/test/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java +++ b/jsprit-core/src/test/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java @@ -1,26 +1,25 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.problem.constraint; import jsprit.core.algorithm.state.InternalStates; import jsprit.core.algorithm.state.StateManager; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; @@ -60,12 +59,12 @@ public class ServiceLoadRouteLevelConstraintTest { VehicleRoutingTransportCosts routingCosts = new AbstractForwardVehicleRoutingTransportCosts() { @Override - public double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getTransportCost(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) { return 0; } }; diff --git a/jsprit-core/src/test/java/jsprit/core/problem/io/VrpXMLWriterTest.java b/jsprit-core/src/test/java/jsprit/core/problem/io/VrpXMLWriterTest.java index 765407f6..934d412d 100644 --- a/jsprit-core/src/test/java/jsprit/core/problem/io/VrpXMLWriterTest.java +++ b/jsprit-core/src/test/java/jsprit/core/problem/io/VrpXMLWriterTest.java @@ -152,6 +152,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); Shipment s1_read = (Shipment) readVrp.getJobs().get("1"); assertTrue(s1_read.getName().equals("cleaning")); + assertEquals(1,s1_read.getPickupLocation().getIndex()); } @Test diff --git a/jsprit-core/src/test/java/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java b/jsprit-core/src/test/java/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java index d17ab230..76e4c755 100644 --- a/jsprit-core/src/test/java/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java +++ b/jsprit-core/src/test/java/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java @@ -1,31 +1,30 @@ /******************************************************************************* - * Copyright (c) 2014 Stefan Schroeder. - * + * Copyright (C) 2014 Stefan Schroeder + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either + * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . - * - * Contributors: - * Stefan Schroeder - initial API and implementation ******************************************************************************/ package jsprit.core.util; +import jsprit.core.problem.Location; +import jsprit.core.problem.vehicle.Vehicle; +import jsprit.core.problem.vehicle.VehicleType; +import jsprit.core.problem.vehicle.VehicleTypeImpl; +import org.junit.Test; + import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import jsprit.core.problem.vehicle.Vehicle; -import jsprit.core.problem.vehicle.VehicleType; -import jsprit.core.problem.vehicle.VehicleTypeImpl; - -import org.junit.Test; public class VehicleRoutingTransportCostsMatrixTest { @@ -34,9 +33,9 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportCost("1", "2", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("1"), loc("2"), 0.0, null, null),0.1); assertEquals(2.,matrix.getDistance("1", "2"),0.1); - assertEquals(2.,matrix.getTransportCost("2", "1", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, null),0.1); assertEquals(2.,matrix.getDistance("2", "1"),0.1); } @@ -45,9 +44,9 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("from", "to", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportCost("from", "to", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null),0.1); assertEquals(2.,matrix.getDistance("from", "to"),0.1); - assertEquals(2.,matrix.getTransportCost("to", "from", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null),0.1); assertEquals(2.,matrix.getDistance("from", "to"),0.1); } @@ -59,9 +58,9 @@ public class VehicleRoutingTransportCostsMatrixTest { matrixBuilder.addTransportDistance("from", "to", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(4.,matrix.getTransportCost("from", "to", 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null),0.1); assertEquals(4.,matrix.getDistance("from", "to"),0.1); - assertEquals(4.,matrix.getTransportCost("to", "from", 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null),0.1); assertEquals(4.,matrix.getDistance("from", "to"),0.1); } @@ -73,9 +72,9 @@ public class VehicleRoutingTransportCostsMatrixTest { matrixBuilder.addTransportDistance("to", "from", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(4.,matrix.getTransportCost("from", "to", 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null),0.1); assertEquals(4.,matrix.getDistance("from", "to"),0.1); - assertEquals(4.,matrix.getTransportCost("to", "from", 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null),0.1); assertEquals(4.,matrix.getDistance("from", "to"),0.1); } @@ -84,15 +83,19 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportDistance("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportCost("1", "2", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("1"), loc("2"), 0.0, null, null),0.1); } - - @Test(expected=IllegalStateException.class) + + private Location loc(String s) { + return Location.Builder.newInstance().setId(s).build(); + } + + @Test(expected=IllegalStateException.class) public void whenRequestingRelationThatDoesNotExist_itShouldThrowException(){ VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportDistance("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - matrix.getTransportCost("2", "1", 0.0, null, null); + matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, null); } @Test @@ -101,8 +104,8 @@ public class VehicleRoutingTransportCostsMatrixTest { matrixBuilder.addTransportDistance("from", "to", 2.); matrixBuilder.addTransportDistance("to", "from", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportCost("from", "to", 0.0, null, null),0.1); - assertEquals(4.,matrix.getTransportCost("to", "from", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null),0.1); } @Test @@ -110,8 +113,8 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportTime("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportTime("1", "2", 0.0, null, null),0.1); - assertEquals(2.,matrix.getTransportTime("2", "1", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("1"), loc("2"), 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("2"), loc("1"), 0.0, null, null),0.1); } @Test @@ -119,8 +122,8 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportTime("from", "to", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportTime("from", "to", 0.0, null, null),0.1); - assertEquals(2.,matrix.getTransportTime("to", "from", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("from"), loc("to"), 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("to"), loc("from"), 0.0, null, null),0.1); } @Test @@ -128,7 +131,7 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportTime("1", "2", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("1"), loc("2"), 0.0, null, null),0.1); } @Test(expected=IllegalStateException.class) @@ -136,7 +139,7 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - matrix.getTransportTime("2", "1", 0.0, null, null); + matrix.getTransportTime(loc("2"), loc("1"), 0.0, null, null); } @Test @@ -145,8 +148,8 @@ public class VehicleRoutingTransportCostsMatrixTest { matrixBuilder.addTransportTime("from", "to", 2.); matrixBuilder.addTransportTime("to", "from", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(2.,matrix.getTransportTime("from", "to", 0.0, null, null),0.1); - assertEquals(4.,matrix.getTransportTime("to", "from", 0.0, null, null),0.1); + assertEquals(2.,matrix.getTransportTime(loc("from"), loc("to"), 0.0, null, null),0.1); + assertEquals(4.,matrix.getTransportTime(loc("to"), loc("from"), 0.0, null, null),0.1); } @Test @@ -160,8 +163,8 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); // assertEquals(2.,matrix.getTransportTime("from", "to", 0.0, null, null),0.1); // assertEquals(4.,matrix.getTransportTime("to", "from", 0.0, null, null),0.1); - assertEquals(2.,matrix.getTransportCost("from", "to", 0.0, null, vehicle),0.1); - assertEquals(4.,matrix.getTransportCost("to", "from", 0.0, null, vehicle),0.1); + assertEquals(2.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle),0.1); + assertEquals(4.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle),0.1); } @Test @@ -173,8 +176,8 @@ public class VehicleRoutingTransportCostsMatrixTest { Vehicle vehicle = mock(Vehicle.class); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(1.).setCostPerTime(2.).build(); when(vehicle.getType()).thenReturn(type); - assertEquals(24.,matrix.getTransportCost("1", "2", 0.0, null, vehicle),0.1); - assertEquals(24.,matrix.getTransportCost("2", "1", 0.0, null, vehicle),0.1); + assertEquals(24.,matrix.getTransportCost(loc("1"), loc("2"), 0.0, null, vehicle),0.1); + assertEquals(24.,matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, vehicle),0.1); } @Test @@ -185,8 +188,8 @@ public class VehicleRoutingTransportCostsMatrixTest { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(1.).setCostPerTime(2.).build(); when(vehicle.getType()).thenReturn(type); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(4.,matrix.getTransportCost("from", "to", 0.0, null, vehicle),0.1); - assertEquals(4.,matrix.getTransportCost("to", "from", 0.0, null, vehicle),0.1); + assertEquals(4.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle),0.1); + assertEquals(4.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle),0.1); } @Test @@ -198,8 +201,8 @@ public class VehicleRoutingTransportCostsMatrixTest { Vehicle vehicle = mock(Vehicle.class); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(1.).setCostPerTime(2.).build(); when(vehicle.getType()).thenReturn(type); - assertEquals(4.,matrix.getTransportCost("1", "2", 0.0, null, vehicle),0.1); - assertEquals(16.,matrix.getTransportCost("2", "1", 0.0, null, vehicle),0.1); + assertEquals(4.,matrix.getTransportCost(loc("1"), loc("2"), 0.0, null, vehicle),0.1); + assertEquals(16.,matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, vehicle),0.1); } @Test @@ -213,8 +216,8 @@ public class VehicleRoutingTransportCostsMatrixTest { Vehicle vehicle = mock(Vehicle.class); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(1.).setCostPerTime(2.).build(); when(vehicle.getType()).thenReturn(type); - assertEquals(5.,matrix.getTransportCost("from", "to", 0.0, null, vehicle),0.1); - assertEquals(11.,matrix.getTransportCost("to", "from", 0.0, null, vehicle),0.1); + assertEquals(5.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle),0.1); + assertEquals(11.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle),0.1); } @@ -231,8 +234,8 @@ public class VehicleRoutingTransportCostsMatrixTest { matrixBuilder.addTransportDistance("to", "from", 5.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(8.,matrix.getTransportCost("from", "to", 0.0, null, vehicle),0.1); - assertEquals(14.,matrix.getTransportCost("to", "from", 0.0, null, vehicle),0.1); + assertEquals(8.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle),0.1); + assertEquals(14.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle),0.1); } @Test @@ -251,8 +254,8 @@ public class VehicleRoutingTransportCostsMatrixTest { when(vehicle.getType()).thenReturn(type); assertEquals(1.,matrix.getDistance("from", "to"),0.1); assertEquals(1.,matrix.getDistance("to", "from"),0.1); - assertEquals(1.,matrix.getTransportCost("from", "to", 0.0, null, vehicle),0.1); - assertEquals(1.,matrix.getTransportCost("to", "from", 0.0, null, vehicle),0.1); + assertEquals(1.,matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle),0.1); + assertEquals(1.,matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle),0.1); } } diff --git a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml index f12b9d5a..567ec0d6 100644 --- a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml +++ b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml @@ -21,37 +21,87 @@ INFINITE - - - - - pick - 1 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - - del - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - + + + v1 + vehType + + loc + + + loc + + + 0.0 + 1.7976931348623157E308 + + true + + + + + vehType - 0 + 20 - cleaning - - + + 0.0 + 1.0 + + + + + + + + loc2 + + + 1 + + 4.0 + + + 0.0 + 1.7976931348623157E308 + + + + + + loc + + + 1 + + 2.0 + + + 0.0 + 1.7976931348623157E308 + + + + + + + 10.0 + + + noDriver + v1 + 0.0 + + 1 + 0.0 + 0.0 + + 0.0 + + + + + + + diff --git a/jsprit-examples/input/algorithmConfig_open.xml b/jsprit-examples/input/algorithmConfig_open.xml index b66e872b..b79ffc2a 100755 --- a/jsprit-examples/input/algorithmConfig_open.xml +++ b/jsprit-examples/input/algorithmConfig_open.xml @@ -1,5 +1,22 @@ + + @@ -14,7 +31,7 @@ 1 - + 0.2 @@ -32,7 +49,7 @@ 0.5 - + diff --git a/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java b/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java index 13bcfa09..c4d04e5f 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java +++ b/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java @@ -104,7 +104,7 @@ public class BicycleMessenger { @Override public ConstraintsStatus fulfilled(JobInsertionContext iFacts,TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { //make sure vehicle can manage direct path - double arrTime_at_nextAct_onDirectRoute = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTime_at_nextAct_onDirectRoute = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); Double latest_arrTime_at_nextAct = stateManager.getActivityState(nextAct, latest_act_arrival_time_stateId, Double.class); if(latest_arrTime_at_nextAct == null) latest_arrTime_at_nextAct = nextAct.getTheoreticalLatestOperationStartTime(); if(arrTime_at_nextAct_onDirectRoute > latest_arrTime_at_nextAct){ @@ -112,7 +112,7 @@ public class BicycleMessenger { return ConstraintsStatus.NOT_FULFILLED_BREAK; } - double arrTime_at_newAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), newAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTime_at_newAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); //local impact //no matter whether it is a pickupShipment or deliverShipment activities. both arrivalTimes must be < 3*best. double directTimeOfNearestMessenger = bestMessengers.get(((JobActivity) newAct).getJob().getId()); @@ -123,12 +123,12 @@ public class BicycleMessenger { //impact on whole route, since insertion of newAct shifts all subsequent activities forward in time double departureTime_at_newAct = arrTime_at_newAct + newAct.getOperationTime(); - double latest_arrTime_at_newAct = latest_arrTime_at_nextAct - routingCosts.getTransportTime(newAct.getLocationId(),nextAct.getLocationId(),departureTime_at_newAct,iFacts.getNewDriver(),iFacts.getNewVehicle()); + double latest_arrTime_at_newAct = latest_arrTime_at_nextAct - routingCosts.getTransportTime(newAct.getLocation(),nextAct.getLocation(),departureTime_at_newAct,iFacts.getNewDriver(),iFacts.getNewVehicle()); if(arrTime_at_newAct > latest_arrTime_at_newAct){ return ConstraintsStatus.NOT_FULFILLED; } - double arrTime_at_nextAct = departureTime_at_newAct + routingCosts.getTransportTime(newAct.getLocationId(), nextAct.getLocationId(), departureTime_at_newAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTime_at_nextAct = departureTime_at_newAct + routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), departureTime_at_newAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); //here you need an activity state if(arrTime_at_nextAct > latest_arrTime_at_nextAct){ return ConstraintsStatus.NOT_FULFILLED; @@ -210,7 +210,7 @@ public class BicycleMessenger { public void visit(TourActivity currAct) { double timeOfNearestMessenger = bestMessengers.get(((JobActivity)currAct).getJob().getId()); double potential_latest_arrTime_at_currAct = - latest_arrTime_at_prevAct - routingCosts.getBackwardTransportTime(currAct.getLocationId(), prevAct.getLocationId(), latest_arrTime_at_prevAct, route.getDriver(),route.getVehicle()) - currAct.getOperationTime(); + latest_arrTime_at_prevAct - routingCosts.getBackwardTransportTime(currAct.getLocation(), prevAct.getLocation(), latest_arrTime_at_prevAct, route.getDriver(),route.getVehicle()) - currAct.getOperationTime(); double latest_arrTime_at_currAct = Math.min(3*timeOfNearestMessenger, potential_latest_arrTime_at_currAct); stateManager.putActivityState(currAct, latest_act_arrival_time_stateId, latest_arrTime_at_currAct); assert currAct.getArrTime() <= latest_arrTime_at_currAct : "this must not be since it breaks condition; actArrTime: " + currAct.getArrTime() + " latestArrTime: " + latest_arrTime_at_currAct + " vehicle: " + route.getVehicle().getId(); @@ -340,8 +340,8 @@ public class BicycleMessenger { static double getTimeOfDirectRoute(Job job, Vehicle v, VehicleRoutingTransportCosts routingCosts) { Shipment envelope = (Shipment) job; - return routingCosts.getTransportTime(v.getStartLocationId(), envelope.getPickupLocationId(), 0.0, DriverImpl.noDriver(), v) + - routingCosts.getTransportTime(envelope.getPickupLocationId(), envelope.getDeliveryLocationId(), 0.0, DriverImpl.noDriver(), v); + return routingCosts.getTransportTime(v.getStartLocation(), envelope.getPickupLocation(), 0.0, DriverImpl.noDriver(), v) + + routingCosts.getTransportTime(envelope.getPickupLocation(), envelope.getDeliveryLocation(), 0.0, DriverImpl.noDriver(), v); } private static void readEnvelopes(Builder problemBuilder) throws IOException { diff --git a/jsprit-examples/src/main/java/jsprit/examples/BuildAlgorithmFromScratch.java b/jsprit-examples/src/main/java/jsprit/examples/BuildAlgorithmFromScratch.java index 989eb2ed..c5f3af93 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/BuildAlgorithmFromScratch.java +++ b/jsprit-examples/src/main/java/jsprit/examples/BuildAlgorithmFromScratch.java @@ -34,6 +34,7 @@ import jsprit.core.algorithm.ruin.distance.AvgServiceAndShipmentDistance; import jsprit.core.algorithm.selector.SelectBest; import jsprit.core.algorithm.state.StateManager; import jsprit.core.analysis.SolutionAnalyser; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.constraint.ConstraintManager; import jsprit.core.problem.job.Job; @@ -205,8 +206,8 @@ public class BuildAlgorithmFromScratch { public double getCosts(VehicleRoutingProblemSolution solution) { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution,new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); return analyser.getVariableTransportCosts() + solution.getUnassignedJobs().size() * 500.; diff --git a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java index 0a1a5e28..fbb9230d 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java @@ -23,6 +23,7 @@ import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.io.VehicleRoutingAlgorithms; import jsprit.core.algorithm.selector.SelectBest; import jsprit.core.analysis.SolutionAnalyser; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.io.VrpXMLReader; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; @@ -99,8 +100,8 @@ public class PickupAndDeliveryExample { SolutionAnalyser analyser = new SolutionAnalyser(vrp,solution,new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); diff --git a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java index 8fae4994..f928320e 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java +++ b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java @@ -22,6 +22,7 @@ import jsprit.core.algorithm.selector.SelectBest; import jsprit.core.algorithm.state.StateManager; import jsprit.core.analysis.SolutionAnalyser; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.constraint.ConstraintManager; import jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint; @@ -113,8 +114,8 @@ public class VRPWithBackhaulsExample2 { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new SolutionAnalyser.DistanceCalculator() { @Override - public double getDistance(String fromLocationId, String toLocationId) { - return vrp.getTransportCosts().getTransportCost(fromLocationId,toLocationId,0.,null,null); + public double getDistance(Location from, Location to) { + return vrp.getTransportCosts().getTransportCost(from, to,0.,null,null); } }); diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/Figliozzi.java b/jsprit-instances/src/main/java/jsprit/instance/reader/Figliozzi.java index d5fbcbb3..5b1029aa 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/Figliozzi.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/Figliozzi.java @@ -16,6 +16,7 @@ ******************************************************************************/ package jsprit.instance.reader; +import jsprit.core.problem.Location; import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.vehicle.Vehicle; @@ -114,25 +115,25 @@ public class Figliozzi { } @Override - public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(fromId),locations.getCoord(toId)) + - transportTimeParameter * getTransportTime(fromId,toId,departureTime, driver, vehicle); + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()),locations.getCoord(to.getId())) + + transportTimeParameter * getTransportTime(from, to,departureTime, driver, vehicle); } @Override - public double getBackwardTransportCost(String fromId, String toId,double arrivalTime, Driver driver, Vehicle vehicle) { - return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(fromId),locations.getCoord(toId)) + - transportTimeParameter * getBackwardTransportTime(fromId, toId, arrivalTime, driver, vehicle); + public double getBackwardTransportCost(Location from, Location to,double arrivalTime, Driver driver, Vehicle vehicle) { + return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()),locations.getCoord(to.getId())) + + transportTimeParameter * getBackwardTransportTime(from, to, arrivalTime, driver, vehicle); } @Override - public double getTransportTime(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { - if(fromId.equals(toId)){ + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + if(from.equals(to)){ return 0.0; } double totalTravelTime = 0.0; - double distanceToTravel = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId)); + double distanceToTravel = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); double currentTime = departureTime; for(int i=0;i=0;i--){ double nextLowerTimeThreshold; diff --git a/jsprit-instances/src/test/java/jsprit/instance/reader/FigliozziTest.java b/jsprit-instances/src/test/java/jsprit/instance/reader/FigliozziTest.java index 0352130b..36923e9f 100644 --- a/jsprit-instances/src/test/java/jsprit/instance/reader/FigliozziTest.java +++ b/jsprit-instances/src/test/java/jsprit/instance/reader/FigliozziTest.java @@ -18,6 +18,7 @@ package jsprit.instance.reader; +import jsprit.core.problem.Location; import jsprit.core.util.Coordinate; import jsprit.core.util.Locations; import junit.framework.Assert; @@ -175,7 +176,11 @@ public class FigliozziTest { @Test public void whenConstantTimeDistribution_forwardTimeShouldBeCalculate100(){ Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.CLASSIC,100); - Assert.assertEquals(100., tdCosts.getTransportTime("from", "to", 0., null, null), 0.01); + Assert.assertEquals(100., tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null), 0.01); + } + + private Location loc(String from) { + return Location.Builder.newInstance().setId(from).build(); } @Test @@ -191,7 +196,7 @@ public class FigliozziTest { 20 */ - Assert.assertEquals(76.875,tdCosts.getTransportTime("from","to",0.,null,null),0.01); + Assert.assertEquals(76.875,tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null),0.01); } @Test @@ -208,7 +213,7 @@ public class FigliozziTest { 20 */ - Assert.assertEquals(65.,tdCosts.getTransportTime("from","to",0.,null,null),0.01); + Assert.assertEquals(65.,tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null),0.01); } @Test @@ -221,7 +226,7 @@ public class FigliozziTest { (20,40) 2.5 = 20 --> 50 dist, 20 time : 70 dist, 40 time (40,60) 1.75 = 30 dist, 17.1428571429 time : 100 dist, 57.1428571429 time */ - Assert.assertEquals(57.1428571429,tdCosts.getTransportTime("from","to",0.,null,null),0.01); + Assert.assertEquals(57.1428571429,tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null),0.01); } @Test @@ -238,7 +243,7 @@ public class FigliozziTest { 20 */ - Assert.assertEquals(65.,tdCosts.getBackwardTransportTime("from", "to", 100., null, null),0.01); + Assert.assertEquals(65.,tdCosts.getBackwardTransportTime(loc("from"),loc("to"), 100., null, null),0.01); } @Test @@ -254,13 +259,13 @@ public class FigliozziTest { 20 */ - Assert.assertEquals(76.875,tdCosts.getBackwardTransportTime("from", "to", 100., null, null),0.01); + Assert.assertEquals(76.875,tdCosts.getBackwardTransportTime(loc("from"),loc("to"), 100., null, null),0.01); } @Test public void backwardTimeShouldBeCalculatedCorrectly(){ Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.CLASSIC,100); - Assert.assertEquals(100.,tdCosts.getBackwardTransportTime("from","to",100.,null,null),0.01); + Assert.assertEquals(100.,tdCosts.getBackwardTransportTime(loc("from"),loc("to"),100.,null,null),0.01); } @Test @@ -276,7 +281,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1a,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -293,7 +298,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1b,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -310,7 +315,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1c,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -327,7 +332,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1d,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -344,7 +349,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2a,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -361,7 +366,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2b,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -378,7 +383,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2c,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -395,7 +400,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2d,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -412,7 +417,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3a,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -429,7 +434,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3b,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -446,7 +451,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3c,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } @@ -463,7 +468,7 @@ public class FigliozziTest { }; Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3d,100); - double time = tdCosts.getTransportTime("from","to",0.,null,null); + double time = tdCosts.getTransportTime(loc("from"),loc("to"),0.,null,null); Assert.assertEquals(100.,time,0.01); } }