mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
make JsonWriter write vehicleTypes
This commit is contained in:
parent
93dc0f69e6
commit
8ce3c4c2da
2 changed files with 84 additions and 4 deletions
|
|
@ -28,6 +28,8 @@ public class JsonConstants {
|
||||||
|
|
||||||
public static final String VEHICLES = "vehicles";
|
public static final String VEHICLES = "vehicles";
|
||||||
|
|
||||||
|
public static final String VEHICLE_TYPES = "vehicle_types";
|
||||||
|
|
||||||
public static class Address {
|
public static class Address {
|
||||||
|
|
||||||
public static String ID = "id";
|
public static String ID = "id";
|
||||||
|
|
@ -73,5 +75,28 @@ public class JsonConstants {
|
||||||
public static final String START_ADDRESS = "start_address";
|
public static final String START_ADDRESS = "start_address";
|
||||||
|
|
||||||
public static final String END_ADDRESS = "end_address";
|
public static final String END_ADDRESS = "end_address";
|
||||||
|
|
||||||
|
public static final String EARLIEST_START = "earliest_start";
|
||||||
|
|
||||||
|
public static final String LATEST_END = "latest_end";
|
||||||
|
|
||||||
|
public static final String SKILLS = "skills";
|
||||||
|
|
||||||
|
public static final String CAPACITY = "capacity";
|
||||||
|
|
||||||
|
public static final String TYPE_ID = "type_id";
|
||||||
|
|
||||||
|
public static class Type {
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
|
||||||
|
public static final String CAPACITY = "capacity";
|
||||||
|
|
||||||
|
public static final String FIXED_COSTS = "fixed_costs";
|
||||||
|
|
||||||
|
public static final String DISTANCE = "distance_dependent_costs";
|
||||||
|
|
||||||
|
public static final String TIME = "time_dependent_costs";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,15 @@ import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
||||||
import jsprit.core.problem.vehicle.Vehicle;
|
import jsprit.core.problem.vehicle.Vehicle;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by stefan on 03.11.14.
|
* Created by stefan on 03.11.14.
|
||||||
|
|
@ -50,7 +55,7 @@ public class VrpJsonWriter {
|
||||||
|
|
||||||
jsonGenerator.writeStringField(JsonConstants.FLEET,vrp.getFleetSize().toString());
|
jsonGenerator.writeStringField(JsonConstants.FLEET,vrp.getFleetSize().toString());
|
||||||
writeVehicles(jsonGenerator);
|
writeVehicles(jsonGenerator);
|
||||||
// writeVehicleTypes(jsonGenerator);
|
writeVehicleTypes(jsonGenerator);
|
||||||
writeServices(jsonGenerator);
|
writeServices(jsonGenerator);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,6 +71,39 @@ public class VrpJsonWriter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void writeVehicleTypes(JsonGenerator jsonGenerator) {
|
||||||
|
try {
|
||||||
|
jsonGenerator.writeArrayFieldStart(JsonConstants.VEHICLE_TYPES);
|
||||||
|
Collection<VehicleType> types = getTypes(vrp.getVehicles());
|
||||||
|
|
||||||
|
for(VehicleType type : types){
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
jsonGenerator.writeStringField(JsonConstants.Vehicle.Type.ID, type.getTypeId());
|
||||||
|
|
||||||
|
jsonGenerator.writeArrayFieldStart(JsonConstants.Vehicle.Type.CAPACITY);
|
||||||
|
for(int i=0;i<type.getCapacityDimensions().getNuOfDimensions();i++){
|
||||||
|
jsonGenerator.writeNumber(type.getCapacityDimensions().get(i));
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Vehicle.Type.FIXED_COSTS, type.getVehicleCostParams().fix);
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Vehicle.Type.DISTANCE, type.getVehicleCostParams().perDistanceUnit);
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Vehicle.Type.TIME, type.getVehicleCostParams().perTimeUnit);
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Collection<VehicleType> getTypes(Collection<Vehicle> vehicles) {
|
||||||
|
Set<VehicleType> types = new HashSet<VehicleType>();
|
||||||
|
for(Vehicle v : vehicles) types.add(v.getType());
|
||||||
|
return types;
|
||||||
|
}
|
||||||
|
|
||||||
private void writeVehicles(JsonGenerator jsonGenerator) {
|
private void writeVehicles(JsonGenerator jsonGenerator) {
|
||||||
try {
|
try {
|
||||||
jsonGenerator.writeArrayFieldStart(JsonConstants.VEHICLES);
|
jsonGenerator.writeArrayFieldStart(JsonConstants.VEHICLES);
|
||||||
|
|
@ -85,7 +123,16 @@ public class VrpJsonWriter {
|
||||||
jsonGenerator.writeNumberField(JsonConstants.Address.LAT,vehicle.getEndLocationCoordinate().getY());
|
jsonGenerator.writeNumberField(JsonConstants.Address.LAT,vehicle.getEndLocationCoordinate().getY());
|
||||||
jsonGenerator.writeEndObject();
|
jsonGenerator.writeEndObject();
|
||||||
}
|
}
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Vehicle.EARLIEST_START,vehicle.getEarliestDeparture());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Vehicle.LATEST_END,vehicle.getLatestArrival());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(JsonConstants.Vehicle.TYPE_ID,vehicle.getType().getTypeId());
|
||||||
|
|
||||||
|
jsonGenerator.writeArrayFieldStart(JsonConstants.Vehicle.SKILLS);
|
||||||
|
for(String skill : vehicle.getSkills().values()){
|
||||||
|
jsonGenerator.writeString(skill);
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
jsonGenerator.writeEndObject();
|
jsonGenerator.writeEndObject();
|
||||||
}
|
}
|
||||||
jsonGenerator.writeEndArray();
|
jsonGenerator.writeEndArray();
|
||||||
|
|
@ -148,11 +195,19 @@ public class VrpJsonWriter {
|
||||||
.setServiceTime(100.)
|
.setServiceTime(100.)
|
||||||
.setTimeWindow(TimeWindow.newInstance(10, 20))
|
.setTimeWindow(TimeWindow.newInstance(10, 20))
|
||||||
.addRequiredSkill("screw-driver").build();
|
.addRequiredSkill("screw-driver").build();
|
||||||
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("small").addCapacityDimension(0,10).addCapacityDimension(2,400)
|
||||||
|
.setCostPerTime(20.).build();
|
||||||
|
|
||||||
|
VehicleType type2 = VehicleTypeImpl.Builder.newInstance("medium").addCapacityDimension(0,1000).addCapacityDimension(2,4000)
|
||||||
|
.setCostPerTime(200.).setFixedCost(1000.).build();
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
||||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(12, 12)).build();
|
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(12, 12))
|
||||||
|
.addSkill("screw-driver")
|
||||||
|
.setType(type)
|
||||||
|
.build();
|
||||||
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0,0))
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0,0))
|
||||||
.build();
|
.setType(type2).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addJob(service2)
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addJob(service2)
|
||||||
.addVehicle(v1).addVehicle(v2).build();
|
.addVehicle(v1).addVehicle(v2).build();
|
||||||
new VrpJsonWriter(vrp).write("output/vrp.json");
|
new VrpJsonWriter(vrp).write("output/vrp.json");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue