Skip to content

Commit 75e9b6f

Browse files
committed
make VehicleRoutingTransportCosts implement TransportDistance
1 parent d95b1d2 commit 75e9b6f

23 files changed

+222
-1061
lines changed

jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2323

2424
public abstract class AbstractForwardVehicleRoutingTransportCosts implements VehicleRoutingTransportCosts {
25+
26+
@Override
27+
public abstract double getDistance(Location from, Location to, double departureTime, Vehicle vehicle);
2528

2629
@Override
2730
public abstract double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle);

jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/VehicleRoutingTransportCosts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@
2727
* @author schroeder
2828
*/
2929

30-
public interface VehicleRoutingTransportCosts extends TransportTime, TransportCost {
30+
public interface VehicleRoutingTransportCosts extends TransportTime, TransportCost, TransportDistance {
3131

3232
}

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/CrowFlyCosts.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222

2323
import com.graphhopper.jsprit.core.problem.Location;
2424
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
25-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2625
import com.graphhopper.jsprit.core.problem.driver.Driver;
2726
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2827

2928

3029
/**
3130
* @author stefan schroeder
3231
*/
33-
public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
32+
public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts {
3433

3534
public int speed = 1;
3635

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/EuclideanCosts.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222

2323
import com.graphhopper.jsprit.core.problem.Location;
2424
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
25-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2625
import com.graphhopper.jsprit.core.problem.driver.Driver;
2726
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2827

2928

3029
/**
3130
* @author stefan schroeder
3231
*/
33-
public class EuclideanCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
32+
public class EuclideanCosts extends AbstractForwardVehicleRoutingTransportCosts {
3433

3534
public int speed = 1;
3635

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import com.graphhopper.jsprit.core.problem.Location;
2121
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
22-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2322
import com.graphhopper.jsprit.core.problem.driver.Driver;
2423
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2524
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
@@ -32,7 +31,7 @@
3231
*
3332
* @author schroeder
3433
*/
35-
public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
34+
public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts {
3635

3736
/**
3837
* Builder that builds the matrix.

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/GreatCircleCosts.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020

2121
import com.graphhopper.jsprit.core.problem.Location;
2222
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
23-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2423
import com.graphhopper.jsprit.core.problem.driver.Driver;
2524
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2625

2726
/**
2827
* @author stefan schroeder
2928
*/
3029

31-
public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
30+
public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCosts {
3231

3332
private double speed = 1.;
3433

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ManhattanCosts.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020

2121
import com.graphhopper.jsprit.core.problem.Location;
2222
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
23-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2423
import com.graphhopper.jsprit.core.problem.driver.Driver;
2524
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
2625

2726
/**
2827
* @author stefan schroeder
2928
*/
3029

31-
public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
30+
public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts {
3231

3332
public double speed = 1;
3433

jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* @author schroeder
4141
*/
4242
public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts {
43+
4344
static class RelationKey {
4445

4546
static RelationKey newKey(String from, String to) {
@@ -261,4 +262,9 @@ public double getTransportCost(Location from, Location to, double departureTime,
261262
return costParams.perDistanceUnit * getDistance(from.getId(), to.getId()) + costParams.perTransportTimeUnit * getTime(from.getId(), to.getId());
262263
}
263264

265+
@Override
266+
public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
267+
return getDistance(from.getId(), to.getId());
268+
}
269+
264270
}

jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithMatrix_IT.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.graphhopper.jsprit.core.analysis.SolutionAnalyser;
2222
import com.graphhopper.jsprit.core.problem.Location;
2323
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
24-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2524
import com.graphhopper.jsprit.core.problem.job.Job;
2625
import com.graphhopper.jsprit.core.problem.job.Service;
2726
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
@@ -78,12 +77,7 @@ public void whenCalcTimeWithSolutionAnalyser_itShouldWork() {
7877
final VehicleRoutingProblem vrp = createVrpWithLocationIndecesAndMatrix(vrp_, false);
7978
VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.FAST_REGRET,"true").buildAlgorithm();
8079
Collection<VehicleRoutingProblemSolution> solutions = vra.searchSolutions();
81-
SolutionAnalyser sa = new SolutionAnalyser(vrp, Solutions.bestOf(solutions), new TransportDistance() {
82-
@Override
83-
public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
84-
return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
85-
}
86-
});
80+
SolutionAnalyser sa = new SolutionAnalyser(vrp, Solutions.bestOf(solutions), vrp.getTransportCosts());
8781
}
8882

8983

jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CapacityConstraint_IT.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@
2222
import com.graphhopper.jsprit.core.problem.Capacity;
2323
import com.graphhopper.jsprit.core.problem.Location;
2424
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
25-
import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
2625
import com.graphhopper.jsprit.core.problem.job.Delivery;
2726
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
2827
import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute;
29-
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
3028
import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl;
3129
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
3230
import com.graphhopper.jsprit.core.util.ManhattanCosts;
@@ -91,12 +89,7 @@ public void capacityShouldNotBeExceeded() {
9189
vra.setMaxIterations(2000);
9290
VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions());
9391

94-
SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, new TransportDistance() {
95-
@Override
96-
public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
97-
return new ManhattanCosts().getDistance(from,to, 0d, null);
98-
}
99-
});
92+
SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
10093

10194
for(VehicleRoute r : solution.getRoutes()){
10295
Capacity loadAtBeginning = sa.getLoadAtBeginning(r);

0 commit comments

Comments
 (0)