From 0936d461f5f6f4571b64949e48ea26be48cadfa9 Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Thu, 7 Nov 2013 06:39:24 +0100 Subject: [PATCH] constraints and example --- .../main/java/algorithms/HardConstraints.java | 87 +- ...PDVRPWithShipmentsAlgoFromScratchTest.java | 40 +- .../src/test/resources/C101_solomon_pd.xml | 2535 ++++++++++++ .../test/resources/pd_solomon_c101_sol.xml | 3556 +++++++++++++++++ 4 files changed, 6191 insertions(+), 27 deletions(-) create mode 100644 jsprit-core/src/test/resources/C101_solomon_pd.xml create mode 100644 jsprit-core/src/test/resources/pd_solomon_c101_sol.xml diff --git a/jsprit-core/src/main/java/algorithms/HardConstraints.java b/jsprit-core/src/main/java/algorithms/HardConstraints.java index 30dbbe8b..1fc26fd5 100644 --- a/jsprit-core/src/main/java/algorithms/HardConstraints.java +++ b/jsprit-core/src/main/java/algorithms/HardConstraints.java @@ -25,8 +25,12 @@ import basics.Delivery; import basics.Pickup; import basics.Service; import basics.costs.VehicleRoutingTransportCosts; +import basics.route.DeliverService; +import basics.route.DeliverShipment; import basics.route.DeliveryActivity; import basics.route.PickupActivity; +import basics.route.PickupService; +import basics.route.PickupShipment; import basics.route.ServiceActivity; import basics.route.Start; import basics.route.TourActivity; @@ -222,13 +226,28 @@ class HardConstraints { private StateManager stateManager; + private boolean backhaul = false; + public HardPickupAndDeliveryActivityLevelConstraint(StateManager stateManager) { super(); this.stateManager = stateManager; } + + public HardPickupAndDeliveryActivityLevelConstraint(StateManager stateManager, boolean backhaul) { + super(); + this.stateManager = stateManager; + this.backhaul = backhaul; + } @Override public boolean fulfilled(InsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { + if(!(newAct instanceof PickupService) && !(newAct instanceof DeliverService)){ + return true; + } + if(backhaul){ + if(newAct instanceof PickupService && nextAct instanceof DeliverService){ return false; } + if(newAct instanceof DeliverService && prevAct instanceof PickupService){ return false; } + } int loadAtPrevAct; int futurePicks; int pastDeliveries; @@ -242,12 +261,12 @@ class HardConstraints { futurePicks = (int) stateManager.getActivityState(prevAct, StateTypes.FUTURE_PICKS).toDouble(); pastDeliveries = (int) stateManager.getActivityState(prevAct, StateTypes.PAST_DELIVERIES).toDouble(); } - if(newAct instanceof PickupActivity || newAct instanceof ServiceActivity){ + if(newAct instanceof PickupService){ if(loadAtPrevAct + newAct.getCapacityDemand() + futurePicks > iFacts.getNewVehicle().getCapacity()){ return false; } } - if(newAct instanceof DeliveryActivity){ + if(newAct instanceof DeliverService){ if(loadAtPrevAct + Math.abs(newAct.getCapacityDemand()) + pastDeliveries > iFacts.getNewVehicle().getCapacity()){ return false; } @@ -257,6 +276,62 @@ class HardConstraints { } } + + static class HardPickupAndDeliveryShipmentActivityLevelConstraint implements HardActivityLevelConstraint { + + private StateManager stateManager; + + private boolean backhaul = false; + + public HardPickupAndDeliveryShipmentActivityLevelConstraint(StateManager stateManager) { + super(); + this.stateManager = stateManager; + } + + public HardPickupAndDeliveryShipmentActivityLevelConstraint(StateManager stateManager, boolean backhaul) { + super(); + this.stateManager = stateManager; + this.backhaul = backhaul; + } + + @Override + public boolean fulfilled(InsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { + if(!(newAct instanceof PickupShipment) && !(newAct instanceof DeliverShipment)){ + return true; + } + if(backhaul){ +// if(newAct instanceof PickupShipment && nextAct instanceof DeliverShipment){ return false; } + if(newAct instanceof DeliverShipment && prevAct instanceof PickupShipment){ return false; } + } + int loadAtPrevAct; +// int futurePicks; +// int pastDeliveries; + if(prevAct instanceof Start){ + loadAtPrevAct = (int)stateManager.getRouteState(iFacts.getRoute(), StateTypes.LOAD_AT_DEPOT).toDouble(); +// futurePicks = (int)stateManager.getRouteState(iFacts.getRoute(), StateTypes.LOAD).toDouble(); +// pastDeliveries = 0; + } + else{ + loadAtPrevAct = (int) stateManager.getActivityState(prevAct, StateTypes.LOAD).toDouble(); +// futurePicks = (int) stateManager.getActivityState(prevAct, StateTypes.FUTURE_PICKS).toDouble(); +// pastDeliveries = (int) stateManager.getActivityState(prevAct, StateTypes.PAST_DELIVERIES).toDouble(); + } + if(newAct instanceof PickupShipment){ + if(loadAtPrevAct + newAct.getCapacityDemand() > iFacts.getNewVehicle().getCapacity()){ + return false; + } + } + if(newAct instanceof DeliverShipment){ + if(loadAtPrevAct + Math.abs(newAct.getCapacityDemand()) > iFacts.getNewVehicle().getCapacity()){ + return false; + } + + } + return true; + } + + } + static class HardPickupAndDeliveryBackhaulActivityLevelConstraint implements HardActivityLevelConstraint { @@ -269,10 +344,10 @@ class HardConstraints { @Override public boolean fulfilled(InsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { - if(newAct instanceof PickupActivity && nextAct instanceof DeliveryActivity){ return false; } - if(newAct instanceof ServiceActivity && nextAct instanceof DeliveryActivity){ return false; } - if(newAct instanceof DeliveryActivity && prevAct instanceof PickupActivity){ return false; } - if(newAct instanceof DeliveryActivity && prevAct instanceof ServiceActivity){ return false; } + if(newAct instanceof PickupService && nextAct instanceof DeliverService){ return false; } +// if(newAct instanceof ServiceActivity && nextAct instanceof DeliveryActivity){ return false; } + if(newAct instanceof DeliverService && prevAct instanceof PickupService){ return false; } +// if(newAct instanceof DeliveryActivity && prevAct instanceof ServiceActivity){ return false; } int loadAtPrevAct; int futurePicks; int pastDeliveries; diff --git a/jsprit-core/src/test/java/algorithms/BuildPDVRPWithShipmentsAlgoFromScratchTest.java b/jsprit-core/src/test/java/algorithms/BuildPDVRPWithShipmentsAlgoFromScratchTest.java index 5f28c633..f18fbbc4 100644 --- a/jsprit-core/src/test/java/algorithms/BuildPDVRPWithShipmentsAlgoFromScratchTest.java +++ b/jsprit-core/src/test/java/algorithms/BuildPDVRPWithShipmentsAlgoFromScratchTest.java @@ -22,7 +22,6 @@ import org.apache.log4j.Logger; import org.junit.Before; import org.junit.Test; -import util.Coordinate; import util.Solutions; import algorithms.HardConstraints.HardActivityLevelConstraintManager; import algorithms.StateManager.StateImpl; @@ -45,12 +44,10 @@ import basics.algo.JobInsertedListener; import basics.algo.SearchStrategy; import basics.algo.SearchStrategyManager; import basics.algo.SolutionCostCalculator; +import basics.io.VrpXMLReader; +import basics.io.VrpXMLWriter; import basics.route.TourActivity; -import basics.route.Vehicle; -import basics.route.VehicleImpl; import basics.route.VehicleRoute; -import basics.route.VehicleType; -import basics.route.VehicleTypeImpl; public class BuildPDVRPWithShipmentsAlgoFromScratchTest { @@ -64,26 +61,27 @@ public class BuildPDVRPWithShipmentsAlgoFromScratchTest { public void setup(){ VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleType type = VehicleTypeImpl.Builder.newInstance("t", 2).setCostPerDistance(1.0).build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setLocationCoord(Coordinate.newInstance(-1, -1)).setType(type).build(); - - Shipment s1 = Shipment.Builder.newInstance("s1", 1).setPickupCoord(Coordinate.newInstance(0, 0)).setDeliveryCoord(Coordinate.newInstance(10, 10)).build(); - Shipment s2 = Shipment.Builder.newInstance("s2", 1).setPickupCoord(Coordinate.newInstance(1, 1)).setDeliveryCoord(Coordinate.newInstance(10, 10)).build(); - - Service serv1 = Service.Builder.newInstance("serv1", 1).setCoord(Coordinate.newInstance(0, 5)).build(); - Service serv2 = Service.Builder.newInstance("serv2", 1).setCoord(Coordinate.newInstance(5, 0)).build(); - - builder.addJob(s1).addJob(s2).addJob(serv1).addJob(serv2); - builder.addVehicle(v); + new VrpXMLReader(builder).read("src/test/resources/C101_solomon_pd.xml"); +// VehicleType type = VehicleTypeImpl.Builder.newInstance("t", 2).setCostPerDistance(1.0).build(); +// Vehicle v = VehicleImpl.Builder.newInstance("v").setLocationCoord(Coordinate.newInstance(-1, -1)).setType(type).build(); +// +// Shipment s1 = Shipment.Builder.newInstance("s1", 1).setPickupCoord(Coordinate.newInstance(0, 0)).setDeliveryCoord(Coordinate.newInstance(10, 10)).build(); +// Shipment s2 = Shipment.Builder.newInstance("s2", 1).setPickupCoord(Coordinate.newInstance(1, 1)).setDeliveryCoord(Coordinate.newInstance(10, 10)).build(); +// +// Service serv1 = Service.Builder.newInstance("serv1", 1).setCoord(Coordinate.newInstance(0, 5)).build(); +// Service serv2 = Service.Builder.newInstance("serv2", 1).setCoord(Coordinate.newInstance(5, 0)).build(); +// +// builder.addJob(s1).addJob(s2).addJob(serv1).addJob(serv2); +// builder.addVehicle(v); vrp = builder.build(); final StateManagerImpl stateManager = new StateManagerImpl(); HardActivityLevelConstraintManager actLevelConstraintAccumulator = new HardActivityLevelConstraintManager(); - actLevelConstraintAccumulator.addConstraint(new HardConstraints.HardPickupAndDeliveryActivityLevelConstraint(stateManager)); actLevelConstraintAccumulator.addConstraint(new HardConstraints.HardTimeWindowActivityLevelConstraint(stateManager, vrp.getTransportCosts())); + actLevelConstraintAccumulator.addConstraint(new HardConstraints.HardPickupAndDeliveryActivityLevelConstraint(stateManager)); + actLevelConstraintAccumulator.addConstraint(new HardConstraints.HardPickupAndDeliveryShipmentActivityLevelConstraint(stateManager)); ActivityInsertionCostsCalculator marginalCalculus = new LocalActivityInsertionCostsCalculator(vrp.getTransportCosts(), vrp.getActivityCosts(), actLevelConstraintAccumulator); @@ -200,8 +198,8 @@ public class BuildPDVRPWithShipmentsAlgoFromScratchTest { // System.out.println("ini: costs="+iniSolution.getCost()+";#routes="+iniSolution.getRoutes().size()); vra.addInitialSolution(iniSolution); - vra.setNuOfIterations(10000); - vra.setPrematureBreak(1000); + vra.setNuOfIterations(1000); + vra.setPrematureBreak(100); } @@ -222,7 +220,7 @@ public class BuildPDVRPWithShipmentsAlgoFromScratchTest { // for() -// new VrpXMLWriter(vrp, solutions).write("output/pd_solomon_r101.xml"); + new VrpXMLWriter(vrp, solutions).write("src/test/resources/pd_solomon_c101_sol.xml"); } diff --git a/jsprit-core/src/test/resources/C101_solomon_pd.xml b/jsprit-core/src/test/resources/C101_solomon_pd.xml new file mode 100644 index 00000000..55d0e3c7 --- /dev/null +++ b/jsprit-core/src/test/resources/C101_solomon_pd.xml @@ -0,0 +1,2535 @@ + + + + INFINITE + HOMOGENEOUS + + + + solomonVehicle + solomonType + + 0 + + + + 0.0 + 1236.0 + + + + + + solomonType + 200 + + 0.0 + 1.0 + + + + + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=5.0][y=35.0] + + 90.0 + + + 283.0 + 344.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=5.0][y=45.0] + + 90.0 + + + 665.0 + 716.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=8.0][y=40.0] + + 90.0 + + + 87.0 + 158.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=8.0][y=45.0] + + 90.0 + + + 751.0 + 816.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=0.0][y=45.0] + + 90.0 + + + 567.0 + 624.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=2.0][y=40.0] + + 90.0 + + + 383.0 + 434.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=0.0][y=40.0] + + 90.0 + + + 479.0 + 522.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=33.0][y=35.0] + + 90.0 + + + 16.0 + 80.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=33.0][y=32.0] + + 90.0 + + + 68.0 + 149.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=32.0] + + 90.0 + + + 166.0 + 235.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=30.0] + + 90.0 + + + 264.0 + 321.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=52.0] + + 90.0 + + + 812.0 + 883.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=55.0] + + 90.0 + + + 732.0 + 777.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=50.0] + + 90.0 + + + 65.0 + 144.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=52.0] + + 90.0 + + + 169.0 + 224.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=55.0] + + 90.0 + + + 622.0 + 701.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=23.0][y=52.0] + + 90.0 + + + 261.0 + 316.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=23.0][y=55.0] + + 90.0 + + + 546.0 + 593.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=50.0] + + 90.0 + + + 358.0 + 405.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=66.0] + + 90.0 + + + 65.0 + 146.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=70.0] + + 90.0 + + + 825.0 + 870.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=68.0] + + 90.0 + + + 912.0 + 967.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=55.0] + + 90.0 + + + 449.0 + 504.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=66.0] + + 90.0 + + + 170.0 + 225.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=69.0] + + 90.0 + + + 621.0 + 702.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=65.0] + + 90.0 + + + 15.0 + 67.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=10.0][y=40.0] + + 90.0 + + + 31.0 + 100.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=68.0] + + 90.0 + + + 727.0 + 782.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=10.0][y=35.0] + + 90.0 + + + 200.0 + 237.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=70.0] + + 90.0 + + + 534.0 + 605.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=68.0] + + 90.0 + + + 255.0 + 324.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=15.0][y=80.0] + + 90.0 + + + 278.0 + 345.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=18.0][y=75.0] + + 90.0 + + + 99.0 + 148.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=15.0][y=75.0] + + 90.0 + + + 179.0 + 254.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=80.0] + + 90.0 + + + 384.0 + 429.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=85.0] + + 90.0 + + + 475.0 + 528.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=22.0][y=75.0] + + 90.0 + + + 30.0 + 92.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=22.0][y=85.0] + + 90.0 + + + 567.0 + 620.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=69.0] + + 90.0 + + + 448.0 + 505.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=85.0] + + 90.0 + + + 652.0 + 721.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=52.0] + + 90.0 + + + 914.0 + 965.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=50.0] + + 90.0 + + + 10.0 + 73.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=55.0][y=80.0] + + 90.0 + + + 743.0 + 820.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=55.0][y=85.0] + + 90.0 + + + 647.0 + 726.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=58.0][y=75.0] + + 90.0 + + + 30.0 + 84.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=85.0] + + 90.0 + + + 561.0 + 622.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=80.0] + + 90.0 + + + 95.0 + 156.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=62.0][y=80.0] + + 90.0 + + + 196.0 + 239.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=82.0] + + 90.0 + + + 285.0 + 336.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=85.0] + + 90.0 + + + 475.0 + 518.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=67.0][y=85.0] + + 90.0 + + + 368.0 + 441.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=60.0] + + 90.0 + + + 836.0 + 889.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=55.0] + + 90.0 + + + 20.0 + 84.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=66.0] + + 90.0 + + + 357.0 + 410.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=60.0] + + 90.0 + + + 645.0 + 708.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=63.0][y=58.0] + + 90.0 + + + 737.0 + 802.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=87.0][y=30.0] + + 90.0 + + + 668.0 + 731.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=88.0][y=35.0] + + 90.0 + + + 109.0 + 170.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=88.0][y=30.0] + + 90.0 + + + 574.0 + 643.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=75.0][y=55.0] + + 90.0 + + + 369.0 + 420.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=72.0][y=55.0] + + 90.0 + + + 265.0 + 338.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=85.0][y=25.0] + + 90.0 + + + 769.0 + 820.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=85.0][y=35.0] + + 90.0 + + + 47.0 + 124.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=66.0][y=55.0] + + 90.0 + + + 173.0 + 238.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=55.0] + + 90.0 + + + 85.0 + 144.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=70.0][y=58.0] + + 90.0 + + + 458.0 + 523.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=68.0][y=60.0] + + 90.0 + + + 555.0 + 612.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=47.0][y=40.0] + + 90.0 + + + 12.0 + 77.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=47.0][y=35.0] + + 90.0 + + + 826.0 + 875.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=35.0] + + 90.0 + + + 916.0 + 969.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=30.0] + + 90.0 + + + 734.0 + 777.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=95.0][y=30.0] + + 90.0 + + + 387.0 + 456.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=95.0][y=35.0] + + 90.0 + + + 293.0 + 360.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=53.0][y=30.0] + + 90.0 + + + 450.0 + 505.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=92.0][y=30.0] + + 90.0 + + + 478.0 + 551.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=53.0][y=35.0] + + 90.0 + + + 353.0 + 412.0 + + + + 50 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=65.0] + + 90.0 + + + 997.0 + 1068.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=90.0][y=35.0] + + 90.0 + + + 203.0 + 260.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=15.0] + + 90.0 + + + 651.0 + 740.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=5.0] + + 90.0 + + + 471.0 + 534.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=15.0] + + 90.0 + + + 35.0 + 87.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=5.0] + + 90.0 + + + 385.0 + 436.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=15.0] + + 90.0 + + + 95.0 + 158.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=48.0][y=30.0] + + 90.0 + + + 632.0 + 693.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=48.0][y=40.0] + + 90.0 + + + 76.0 + 129.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=35.0] + + 90.0 + + + 262.0 + 317.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=40.0] + + 90.0 + + + 171.0 + 218.0 + + + + 50 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=5.0] + + 90.0 + + + 562.0 + 629.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=30.0] + + 90.0 + + + 531.0 + 610.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=35.0] + + 90.0 + + + 1001.0 + 1066.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=30.0] + + 90.0 + + + 632.0 + 693.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=30.0] + + 90.0 + + + 541.0 + 600.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=32.0][y=30.0] + + 90.0 + + + 359.0 + 412.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=35.0] + + 90.0 + + + 1054.0 + 1127.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=32.0] + + 90.0 + + + 448.0 + 509.0 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=30.0] + + 90.0 + + + 725.0 + 786.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=35.0] + + 90.0 + + + 912.0 + 969.0 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=44.0][y=5.0] + + 90.0 + + + 286.0 + 347.0 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=10.0] + + 90.0 + + + 186.0 + 257.0 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=26.0][y=32.0] + + 90.0 + + + 815.0 + 880.0 + + + + 10 + + + diff --git a/jsprit-core/src/test/resources/pd_solomon_c101_sol.xml b/jsprit-core/src/test/resources/pd_solomon_c101_sol.xml new file mode 100644 index 00000000..c8bcecc8 --- /dev/null +++ b/jsprit-core/src/test/resources/pd_solomon_c101_sol.xml @@ -0,0 +1,3556 @@ + + + + INFINITE + HOMOGENEOUS + + + + solomonVehicle + solomonType + + 0 + + + + 0.0 + 1236.0 + + + + + + solomonType + 200 + + 0.0 + 1.0 + + + + + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=5.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=5.0][y=45.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=8.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=8.0][y=45.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=0.0][y=45.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=2.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=0.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=33.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=33.0][y=32.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=32.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=52.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=52.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=23.0][y=52.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=23.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=66.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=70.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=68.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=66.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=69.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=10.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=65.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=10.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=68.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=70.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=68.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=15.0][y=80.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=18.0][y=75.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=15.0][y=75.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=80.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=20.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=22.0][y=75.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=22.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=69.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=52.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=55.0][y=80.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=55.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=58.0][y=75.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=80.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=62.0][y=80.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=82.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=67.0][y=85.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=60.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=60.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=66.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=60.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=63.0][y=58.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=87.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=88.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=88.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=75.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=72.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=85.0][y=25.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=85.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=66.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=65.0][y=55.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=70.0][y=58.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=68.0][y=60.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=47.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=47.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=95.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=95.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=53.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=92.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=53.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 50 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=45.0][y=65.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=90.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=15.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=38.0][y=5.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=15.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=40.0][y=5.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=15.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=48.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=48.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=40.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 50 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=35.0][y=5.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=50.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=28.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=32.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=30.0][y=32.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 30 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=30.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=25.0][y=35.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=44.0][y=5.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 20 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=42.0][y=10.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 40 + + + + [x=40.0][y=50.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + + [x=26.0][y=32.0] + + 0.0 + + + 0.0 + 1.7976931348623157E308 + + + + 10 + + + + + 853.276595840535 + + + 571.5178932313771 + noDriver + solomonVehicle + 0.0 + + 20 + 0.0 + 0.0 + + + 21 + 0.0 + 0.0 + + + 23 + 0.0 + 0.0 + + + 28 + 0.0 + 0.0 + + + 17 + 0.0 + 0.0 + + + 15 + 0.0 + 0.0 + + + 11 + 0.0 + 0.0 + + + 10 + 0.0 + 0.0 + + + 8 + 0.0 + 0.0 + + + 13 + 0.0 + 0.0 + + + 26 + 0.0 + 0.0 + + + 18 + 0.0 + 0.0 + + + 22 + 0.0 + 0.0 + + + 19 + 0.0 + 0.0 + + + 7 + 0.0 + 0.0 + + + 5 + 0.0 + 0.0 + + + 75 + 0.0 + 0.0 + + + 95 + 0.0 + 0.0 + + + 92 + 0.0 + 0.0 + + + 4 + 0.0 + 0.0 + + + 96 + 0.0 + 0.0 + + + 2 + 0.0 + 0.0 + + + 93 + 0.0 + 0.0 + + + 94 + 0.0 + 0.0 + + + 98 + 0.0 + 0.0 + + + 97 + 0.0 + 0.0 + + + 99 + 0.0 + 0.0 + + + 1 + 0.0 + 0.0 + + + 3 + 0.0 + 0.0 + + + 9 + 0.0 + 0.0 + + + 100 + 0.0 + 0.0 + + + 6 + 0.0 + 0.0 + + + 30 + 0.0 + 0.0 + + + 36 + 0.0 + 0.0 + + + 25 + 0.0 + 0.0 + + + 27 + 0.0 + 0.0 + + + 24 + 0.0 + 0.0 + + + 32 + 0.0 + 0.0 + + + 34 + 0.0 + 0.0 + + + 33 + 0.0 + 0.0 + + + 29 + 0.0 + 0.0 + + + 53 + 0.0 + 0.0 + + + 81 + 0.0 + 0.0 + + + 71 + 0.0 + 0.0 + + + 77 + 0.0 + 0.0 + + + 79 + 0.0 + 0.0 + + + 80 + 0.0 + 0.0 + + + 78 + 0.0 + 0.0 + + + 70 + 0.0 + 0.0 + + + 76 + 0.0 + 0.0 + + + 73 + 0.0 + 0.0 + + + 38 + 0.0 + 0.0 + + + 39 + 0.0 + 0.0 + + + 16 + 0.0 + 0.0 + + + 14 + 0.0 + 0.0 + + + 37 + 0.0 + 0.0 + + + 35 + 0.0 + 0.0 + + + 12 + 0.0 + 0.0 + + + 35 + 38.07886552931954 + 38.07886552931954 + + + 37 + 43.90981742416484 + 43.90981742416484 + + + 39 + 49.29498223129934 + 49.29498223129934 + + + 38 + 54.29498223129934 + 54.29498223129934 + + + 16 + 103.53927124027987 + 103.53927124027987 + + + 14 + 105.53927124027987 + 105.53927124027987 + + + 12 + 108.53927124027987 + 108.53927124027987 + + + 73 + 195.22260297135722 + 195.22260297135722 + + + 70 + 198.22260297135722 + 198.22260297135722 + + + 76 + 205.2936707832227 + 205.2936707832227 + + + 78 + 207.2936707832227 + 207.2936707832227 + + + 71 + 214.2936707832227 + 214.2936707832227 + + + 77 + 222.89599605026532 + 222.89599605026532 + + + 79 + 223.89599605026532 + 223.89599605026532 + + + 80 + 229.28116085739984 + 229.28116085739984 + + + 81 + 239.28116085739984 + 239.28116085739984 + + + 53 + 290.084704040922 + 290.084704040922 + + + 32 + 338.8801956359454 + 338.8801956359454 + + + 33 + 340.8801956359454 + 340.8801956359454 + + + 36 + 346.71114753079075 + 346.71114753079075 + + + 34 + 349.71114753079075 + 349.71114753079075 + + + 29 + 362.71114753079075 + 362.71114753079075 + + + 24 + 367.71114753079075 + 367.71114753079075 + + + 25 + 369.71114753079075 + 369.71114753079075 + + + 27 + 371.71114753079075 + 371.71114753079075 + + + 30 + 375.95378821791 + 375.95378821791 + + + 9 + 399.38453724563 + 399.38453724563 + + + 6 + 401.62060522312976 + 401.62060522312976 + + + 100 + 423.55231742259105 + 423.55231742259105 + + + 97 + 428.55231742259105 + 428.55231742259105 + + + 93 + 433.55231742259105 + 433.55231742259105 + + + 92 + 435.55231742259105 + 435.55231742259105 + + + 94 + 439.15786869805504 + 439.15786869805504 + + + 95 + 442.76341997351904 + 442.76341997351904 + + + 96 + 444.76341997351904 + 444.76341997351904 + + + 99 + 449.76341997351904 + 449.76341997351904 + + + 98 + 455.59437186836436 + 455.59437186836436 + + + 2 + 469.5227601455485 + 469.5227601455485 + + + 1 + 471.5227601455485 + 471.5227601455485 + + + 75 + 474.5227601455485 + 474.5227601455485 + + + 4 + 478.76540083266775 + 478.76540083266775 + + + 7 + 481.59382795741396 + 481.59382795741396 + + + 3 + 483.59382795741396 + 483.59382795741396 + + + 5 + 484.59382795741396 + 484.59382795741396 + + + 8 + 489.59382795741396 + 489.59382795741396 + + + 10 + 493.19937923287796 + 493.19937923287796 + + + 11 + 496.19937923287796 + 496.19937923287796 + + + 13 + 510.51720029615433 + 510.51720029615433 + + + 15 + 515.9023651032888 + 515.9023651032888 + + + 19 + 520.9023651032888 + 520.9023651032888 + + + 18 + 525.9023651032888 + 525.9023651032888 + + + 17 + 528.9023651032888 + 528.9023651032888 + + + 28 + 549.5178932313771 + 549.5178932313771 + + + 26 + 551.5178932313771 + 551.5178932313771 + + + 23 + 554.5178932313771 + 554.5178932313771 + + + 22 + 557.5178932313771 + 557.5178932313771 + + + 21 + 559.5178932313771 + 559.5178932313771 + + + 20 + 561.5178932313771 + 561.5178932313771 + + 571.5178932313771 + + + 281.7587026091579 + noDriver + solomonVehicle + 0.0 + + 45 + 0.0 + 0.0 + + + 46 + 0.0 + 0.0 + + + 41 + 0.0 + 0.0 + + + 42 + 0.0 + 0.0 + + + 48 + 0.0 + 0.0 + + + 51 + 0.0 + 0.0 + + + 49 + 0.0 + 0.0 + + + 52 + 0.0 + 0.0 + + + 40 + 0.0 + 0.0 + + + 43 + 0.0 + 0.0 + + + 50 + 0.0 + 0.0 + + + 47 + 0.0 + 0.0 + + + 44 + 0.0 + 0.0 + + + 57 + 0.0 + 0.0 + + + 60 + 0.0 + 0.0 + + + 55 + 0.0 + 0.0 + + + 69 + 0.0 + 0.0 + + + 56 + 0.0 + 0.0 + + + 58 + 0.0 + 0.0 + + + 66 + 0.0 + 0.0 + + + 54 + 0.0 + 0.0 + + + 59 + 0.0 + 0.0 + + + 68 + 0.0 + 0.0 + + + 74 + 0.0 + 0.0 + + + 65 + 0.0 + 0.0 + + + 64 + 0.0 + 0.0 + + + 63 + 0.0 + 0.0 + + + 62 + 0.0 + 0.0 + + + 72 + 0.0 + 0.0 + + + 61 + 0.0 + 0.0 + + + 67 + 0.0 + 0.0 + + + 82 + 0.0 + 0.0 + + + 85 + 0.0 + 0.0 + + + 91 + 0.0 + 0.0 + + + 86 + 0.0 + 0.0 + + + 89 + 0.0 + 0.0 + + + 87 + 0.0 + 0.0 + + + 88 + 0.0 + 0.0 + + + 84 + 0.0 + 0.0 + + + 90 + 0.0 + 0.0 + + + 83 + 0.0 + 0.0 + + + 31 + 0.0 + 0.0 + + + 31 + 33.54101966249684 + 33.54101966249684 + + + 91 + 89.44271909999159 + 89.44271909999159 + + + 88 + 94.44271909999159 + 94.44271909999159 + + + 85 + 97.44271909999159 + 97.44271909999159 + + + 84 + 100.27114622473778 + 100.27114622473778 + + + 82 + 106.10209811958308 + 106.10209811958308 + + + 83 + 109.10209811958308 + 109.10209811958308 + + + 86 + 115.10209811958308 + 115.10209811958308 + + + 87 + 116.10209811958308 + 116.10209811958308 + + + 89 + 119.70764939504707 + 119.70764939504707 + + + 90 + 123.95029008216636 + 123.95029008216636 + + + 63 + 141.9780464594863 + 141.9780464594863 + + + 65 + 143.9780464594863 + 143.9780464594863 + + + 67 + 144.9780464594863 + 144.9780464594863 + + + 66 + 149.9780464594863 + 149.9780464594863 + + + 62 + 152.9780464594863 + 152.9780464594863 + + + 74 + 155.9780464594863 + 155.9780464594863 + + + 72 + 160.9780464594863 + 160.9780464594863 + + + 61 + 163.9780464594863 + 163.9780464594863 + + + 64 + 165.9780464594863 + 165.9780464594863 + + + 69 + 171.8089983543316 + 171.8089983543316 + + + 68 + 176.8089983543316 + 176.8089983543316 + + + 55 + 192.10605689510996 + 192.10605689510996 + + + 54 + 197.10605689510996 + 197.10605689510996 + + + 56 + 202.49122170224447 + 202.49122170224447 + + + 58 + 204.49122170224447 + 204.49122170224447 + + + 60 + 207.49122170224447 + 207.49122170224447 + + + 59 + 217.931528211155 + 217.931528211155 + + + 57 + 219.931528211155 + 219.931528211155 + + + 40 + 235.7429165119969 + 235.7429165119969 + + + 41 + 237.7429165119969 + 237.7429165119969 + + + 42 + 239.7429165119969 + 239.7429165119969 + + + 44 + 241.9789844894967 + 241.9789844894967 + + + 45 + 243.9789844894967 + 243.9789844894967 + + + 46 + 245.9789844894967 + 245.9789844894967 + + + 48 + 248.80741161424288 + 248.80741161424288 + + + 51 + 251.80741161424288 + 251.80741161424288 + + + 50 + 254.04347959174268 + 254.04347959174268 + + + 52 + 257.20575725191105 + 257.20575725191105 + + + 49 + 260.20575725191105 + 260.20575725191105 + + + 47 + 262.20575725191105 + 262.20575725191105 + + + 43 + 265.20575725191105 + 265.20575725191105 + + 281.7587026091579 + + + + +