mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
refine CordeauReader
add penalty vehicles to allow invalid solutions
This commit is contained in:
parent
885eab5eff
commit
cc254b2993
1 changed files with 15 additions and 1 deletions
|
|
@ -92,7 +92,8 @@ public class CordeauReader {
|
||||||
int duration = Integer.parseInt(tokens[0].trim());
|
int duration = Integer.parseInt(tokens[0].trim());
|
||||||
if(duration == 0) duration = 999999;
|
if(duration == 0) duration = 999999;
|
||||||
int capacity = Integer.parseInt(tokens[1].trim());
|
int capacity = Integer.parseInt(tokens[1].trim());
|
||||||
VehicleType vehicleType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_cordeauType", capacity).setCostPerDistance(1.0).setFixedCost(100).build();
|
VehicleType vehicleType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_cordeauType", capacity).
|
||||||
|
setCostPerDistance(1.0).setFixedCost(0).build();
|
||||||
List<VehicleBuilder> builders = new ArrayList<VehicleImpl.VehicleBuilder>();
|
List<VehicleBuilder> builders = new ArrayList<VehicleImpl.VehicleBuilder>();
|
||||||
for(int vehicleCounter=0;vehicleCounter<nOfVehiclesAtEachDepot;vehicleCounter++){
|
for(int vehicleCounter=0;vehicleCounter<nOfVehiclesAtEachDepot;vehicleCounter++){
|
||||||
VehicleBuilder vBuilder = VehicleImpl.VehicleBuilder.newInstance(depot+"_"+(vehicleCounter+1) + "_cordeauVehicle");
|
VehicleBuilder vBuilder = VehicleImpl.VehicleBuilder.newInstance(depot+"_"+(vehicleCounter+1) + "_cordeauVehicle");
|
||||||
|
|
@ -112,11 +113,24 @@ public class CordeauReader {
|
||||||
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
||||||
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
||||||
List<VehicleBuilder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
List<VehicleBuilder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
||||||
|
int cap = 0;
|
||||||
|
double latestArrTime = 0.0;
|
||||||
|
Coordinate coord = null;
|
||||||
for(VehicleBuilder vBuilder : vBuilders){
|
for(VehicleBuilder vBuilder : vBuilders){
|
||||||
vBuilder.setLocationCoord(depotCoord);
|
vBuilder.setLocationCoord(depotCoord);
|
||||||
VehicleImpl vehicle = vBuilder.build();
|
VehicleImpl vehicle = vBuilder.build();
|
||||||
|
cap = vehicle.getCapacity();
|
||||||
|
latestArrTime = vehicle.getLatestArrival();
|
||||||
|
coord = vehicle.getCoord();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
|
for(int i=0;i<5;i++){
|
||||||
|
VehicleType penaltyType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_penaltyType", cap).
|
||||||
|
setCostPerDistance(3.0).setFixedCost(50).build();
|
||||||
|
VehicleImpl penaltyVehicle = VehicleImpl.VehicleBuilder.newInstance(counter + "_" + (i+1) + "_penaltyVehicle").setLatestArrival(latestArrTime)
|
||||||
|
.setType(penaltyType).setLocationCoord(coord).build();
|
||||||
|
vrpBuilder.addVehicle(penaltyVehicle);
|
||||||
|
}
|
||||||
depotCounter++;
|
depotCounter++;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue