From b2bbec11034ab083bb0f6b220a096a01e2d8b8c6 Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Wed, 5 Nov 2014 17:27:09 +0100 Subject: [PATCH] add json stuff --- .../jsprit/core/problem/io/JsonConstants.java | 2 ++ .../jsprit/core/problem/io/VrpJsonWriter.java | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java b/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java index 94bec003..59af2cb9 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java @@ -70,6 +70,8 @@ public class JsonConstants { public static final String NO_ACTIVITIES = "no_activities"; + public static final String UNASSIGNED = "unassigned_jobs"; + public static class Activity { public static final String TYPE = "type"; diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java index ed6836cd..51ce499f 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java @@ -26,6 +26,7 @@ import jsprit.core.algorithm.box.GreedySchrimpfFactory; import jsprit.core.analysis.SolutionAnalyser; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.job.Job; +import jsprit.core.problem.job.Pickup; import jsprit.core.problem.job.Service; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.problem.solution.route.VehicleRoute; @@ -112,8 +113,10 @@ public class VrpJsonWriter { 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.writeStartObject(); jsonGenerator.writeNumberField(JsonConstants.Solution.Route.FIXED_COSTS,solutionAnalyzer.getFixedCosts(route)); jsonGenerator.writeNumberField(JsonConstants.Solution.Route.VARIABLE_COSTS,solutionAnalyzer.getVariableTransportCosts(route)); jsonGenerator.writeNumberField(JsonConstants.Solution.Route.NO_ACTIVITIES,route.getActivities().size()); @@ -130,8 +133,16 @@ public class VrpJsonWriter { jsonGenerator.writeEndObject(); } jsonGenerator.writeNumberField(JsonConstants.Solution.Route.END_TIME, route.getEnd().getArrTime()); + jsonGenerator.writeEndObject(); } jsonGenerator.writeEndArray(); + //unassigned jobs + jsonGenerator.writeArrayFieldStart(JsonConstants.Solution.Route.UNASSIGNED); + for(Job j : solution.getUnassignedJobs()){ + jsonGenerator.writeString(j.getId()); + } + jsonGenerator.writeEndArray(); + } catch (IOException e) { e.printStackTrace(); } @@ -268,9 +279,9 @@ public class VrpJsonWriter { Service service = Service.Builder.newInstance("s1").setLocationId("s1_loc").setCoord(Coordinate.newInstance(40, 10)) .addSizeDimension(0, 20).addSizeDimension(1, 40) .setServiceTime(1.) - .addRequiredSkill("joo") + .addRequiredSkill("joo-foo") .build(); - Service service2 = Service.Builder.newInstance("s2").setLocationId("s2_loc").setCoord(Coordinate.newInstance(40, 10)) + Pickup service2 = (Pickup) Pickup.Builder.newInstance("pickup2").setLocationId("s2_loc").setCoord(Coordinate.newInstance(40, 10)) .addSizeDimension(0, 10).addSizeDimension(1, 30) .setServiceTime(2.) .setTimeWindow(TimeWindow.newInstance(10, 200)) @@ -280,6 +291,7 @@ public class VrpJsonWriter { VehicleType type2 = VehicleTypeImpl.Builder.newInstance("medium").addCapacityDimension(0,1000).addCapacityDimension(1,4000) .setCostPerTime(200.).setFixedCost(1000.).build(); + VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0)) .setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(12, 12)) .addSkill("screw-driver")