1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

modified .addPenaltyVehicles() in core.problem.VehicleRoutingProblem

such that penalty-vehicles can also shadow vehicles that only
distinguish themselves by their working shift
This commit is contained in:
oblonski 2014-05-15 13:52:09 +02:00
parent c3514dbf23
commit af52639b10
2 changed files with 20 additions and 64 deletions

View file

@ -42,6 +42,7 @@ import jsprit.core.problem.vehicle.Vehicle;
import jsprit.core.problem.vehicle.VehicleImpl;
import jsprit.core.problem.vehicle.VehicleType;
import jsprit.core.problem.vehicle.VehicleTypeImpl;
import jsprit.core.problem.vehicle.VehicleTypeKey;
import jsprit.core.util.Coordinate;
import org.junit.Test;
@ -343,7 +344,7 @@ public class VehicleRoutingProblemTest {
boolean penaltyVehicleInCollection = false;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) penaltyVehicleInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(v))) penaltyVehicleInCollection = true;
}
assertTrue(penaltyVehicleInCollection);
@ -364,11 +365,16 @@ public class VehicleRoutingProblemTest {
boolean penaltyVehicleInCollection = false;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) penaltyVehicleInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(v))) penaltyVehicleInCollection = true;
}
assertFalse(penaltyVehicleInCollection);
}
private String getPenaltyVehicleId(Vehicle v) {
return "penaltyVehicle_" + new VehicleTypeKey(v.getType().getTypeId(), v.getStartLocationId(), v.getEndLocationId(),
v.getEarliestDeparture(), v.getLatestArrival()).toString();
}
@Test
public void whenSettingAddPenaltyVehicleOptionsAndTwoVehiclesWithSameLocationAndType_onlyOnePenaltyVehicleIsAdded(){
@ -388,7 +394,7 @@ public class VehicleRoutingProblemTest {
boolean penaltyVehicleInCollection = false;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) penaltyVehicleInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(v))) penaltyVehicleInCollection = true;
}
assertTrue(penaltyVehicleInCollection);
@ -412,7 +418,7 @@ public class VehicleRoutingProblemTest {
double fix = 0.0;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) {
if(v.getId().equals(getPenaltyVehicleId(v))) {
fix = v.getType().getVehicleCostParams().fix;
}
}
@ -439,8 +445,8 @@ public class VehicleRoutingProblemTest {
boolean penaltyVehicleInCollection = false;
boolean anotherPenVehInCollection = false;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) penaltyVehicleInCollection = true;
if(v.getId().equals("penaltyVehicle_loc2_type")) anotherPenVehInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(vehicle))) penaltyVehicleInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(vehicle2))) anotherPenVehInCollection = true;
}
assertTrue(penaltyVehicleInCollection);
assertTrue(anotherPenVehInCollection);
@ -467,8 +473,8 @@ public class VehicleRoutingProblemTest {
boolean penaltyVehicleInCollection = false;
boolean anotherPenVehInCollection = false;
for(Vehicle v : vrp.getVehicles()){
if(v.getId().equals("penaltyVehicle_loc_type")) penaltyVehicleInCollection = true;
if(v.getId().equals("penaltyVehicle_loc_type2")) anotherPenVehInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(vehicle))) penaltyVehicleInCollection = true;
if(v.getId().equals(getPenaltyVehicleId(vehicle2))) anotherPenVehInCollection = true;
}
assertTrue(penaltyVehicleInCollection);
assertTrue(anotherPenVehInCollection);