mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
add json stuff
This commit is contained in:
parent
67b8ef5a9a
commit
bec373ba94
2 changed files with 100 additions and 3 deletions
|
|
@ -30,6 +30,56 @@ public class JsonConstants {
|
||||||
|
|
||||||
public static final String VEHICLE_TYPES = "vehicle_types";
|
public static final String VEHICLE_TYPES = "vehicle_types";
|
||||||
|
|
||||||
|
public static class Solution {
|
||||||
|
|
||||||
|
public static final String COSTS = "costs";
|
||||||
|
|
||||||
|
public static final String DISTANCE = "distance";
|
||||||
|
|
||||||
|
public static final String TIME = "time";
|
||||||
|
|
||||||
|
public static final String ROUTES = "routes";
|
||||||
|
|
||||||
|
public static final String NO_ROUTES = "no_routes";
|
||||||
|
|
||||||
|
public static final String NO_UNASSIGNED = "no_unassigned_jobs";
|
||||||
|
|
||||||
|
public static final String FIXED_COSTS = "fixed_costs";
|
||||||
|
|
||||||
|
public static final String VARIABLE_COSTS = "variable_costs";
|
||||||
|
|
||||||
|
public static class Route {
|
||||||
|
|
||||||
|
public static final String COSTS = "costs";
|
||||||
|
|
||||||
|
public static final String DISTANCE = "distance";
|
||||||
|
|
||||||
|
public static final String TIME = "time";
|
||||||
|
|
||||||
|
public static final String VEHICLE_ID = "vehicle_id";
|
||||||
|
|
||||||
|
public static final String START_TIME = "start_time";
|
||||||
|
|
||||||
|
public static final String END_TIME = "end_time";
|
||||||
|
|
||||||
|
public static final String ACTIVITY = "act";
|
||||||
|
|
||||||
|
public static class Activity {
|
||||||
|
|
||||||
|
public static final String TYPE = "type";
|
||||||
|
|
||||||
|
public static final String SERVICE_ID = "job_id";
|
||||||
|
|
||||||
|
public static final String ARR_TIME = "arr_time";
|
||||||
|
|
||||||
|
public static final String END_TIME = "end_time";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static class Address {
|
public static class Address {
|
||||||
|
|
||||||
public static String ID = "id";
|
public static String ID = "id";
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,12 @@ import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
import com.fasterxml.jackson.core.JsonFactory;
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
||||||
|
import jsprit.core.analysis.SolutionAnalyser;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
||||||
|
import jsprit.core.problem.solution.route.VehicleRoute;
|
||||||
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;
|
||||||
|
|
@ -46,15 +49,27 @@ public class VrpJsonWriter {
|
||||||
|
|
||||||
private final VehicleRoutingProblem vrp;
|
private final VehicleRoutingProblem vrp;
|
||||||
|
|
||||||
|
private final VehicleRoutingProblemSolution solution;
|
||||||
|
|
||||||
|
private SolutionAnalyser solutionAnalyzer;
|
||||||
|
|
||||||
public VrpJsonWriter(VehicleRoutingProblem vrp) {
|
public VrpJsonWriter(VehicleRoutingProblem vrp) {
|
||||||
this.vrp = vrp;
|
this.vrp = vrp;
|
||||||
|
this.solution = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VrpJsonWriter(VehicleRoutingProblem vrp, VehicleRoutingProblemSolution solution, SolutionAnalyser.DistanceCalculator distanceCalculator){
|
||||||
|
this.vrp = vrp;
|
||||||
|
this.solution = solution;
|
||||||
|
this.solutionAnalyzer = new SolutionAnalyser(vrp,solution,distanceCalculator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString(){
|
public String toString(){
|
||||||
StringWriter stringWriter = new StringWriter();
|
StringWriter stringWriter = new StringWriter();
|
||||||
try {
|
try {
|
||||||
JsonGenerator jsonGenerator = new JsonFactory().createGenerator(stringWriter);
|
JsonGenerator jsonGenerator = new JsonFactory().createGenerator(stringWriter);
|
||||||
write(jsonGenerator);
|
if(solution == null) writeProblem(jsonGenerator);
|
||||||
|
else writeSolution(jsonGenerator);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
|
|
@ -62,17 +77,49 @@ public class VrpJsonWriter {
|
||||||
return stringWriter.toString();
|
return stringWriter.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void write(File jsonFile){
|
public void write(File jsonFile){
|
||||||
try {
|
try {
|
||||||
JsonGenerator jsonGenerator = new JsonFactory().createGenerator(new FileOutputStream(jsonFile), JsonEncoding.UTF8);
|
JsonGenerator jsonGenerator = new JsonFactory().createGenerator(new FileOutputStream(jsonFile), JsonEncoding.UTF8);
|
||||||
write(jsonGenerator);
|
if(solution == null) writeProblem(jsonGenerator);
|
||||||
|
else writeSolution(jsonGenerator);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void write(JsonGenerator jsonGenerator) throws IOException {
|
private void writeSolution(JsonGenerator jsonGenerator) throws IOException {
|
||||||
|
jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter());
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
writeSolution_(jsonGenerator);
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
jsonGenerator.flush();
|
||||||
|
jsonGenerator.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeSolution_(JsonGenerator jsonGenerator) {
|
||||||
|
try {
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.COSTS,solution.getCost());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.FIXED_COSTS,solutionAnalyzer.getFixedCosts());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.VARIABLE_COSTS, solutionAnalyzer.getVariableTransportCosts());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.DISTANCE,solutionAnalyzer.getDistance());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.TIME, solutionAnalyzer.getTransportTime());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.NO_ROUTES,solution.getRoutes().size());
|
||||||
|
jsonGenerator.writeNumberField(JsonConstants.Solution.NO_UNASSIGNED,solution.getUnassignedJobs().size());
|
||||||
|
jsonGenerator.writeArrayFieldStart(JsonConstants.Solution.ROUTES);
|
||||||
|
for(VehicleRoute route : solution.getRoutes()){
|
||||||
|
// jsonGenerator.writeNumberField(JsonConstants.Solution.FIXED_COSTS,solutionAnalyzer.getCosgetCo(route));
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeProblem(JsonGenerator jsonGenerator) throws IOException {
|
||||||
jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter());
|
jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter());
|
||||||
jsonGenerator.writeStartObject();
|
jsonGenerator.writeStartObject();
|
||||||
jsonGenerator.writeStringField(JsonConstants.FLEET,vrp.getFleetSize().toString());
|
jsonGenerator.writeStringField(JsonConstants.FLEET,vrp.getFleetSize().toString());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue